前言
在我们上网的过程中,不可能只用同一个ip地址来访问,在公网和内网之间,需要一些地址转换来实现公网和内网ip的变化。通常,我们可以使用NAT来做;在公网ip不固定的时候,也需要使用MASQUERADE来做地址转换。
NAT(Network Address Translation)
我们都知道,在ip数据包中,有两个参数可以定位包的源地址和目的地址,一个是源地址ip,一个是目标地址ip。我们常用的NAT有两种,一种是SNAT,修改源地址;一种是DNAT,修改目标地址。
SNAT(Source NAT)
此协议转换包的源地址,通常用于内网ip转公网ip,也就是正向代理会对发出的ip包做SNAT,使其可以传到公网环境中进行下一跳路由动作。
此修改作用于iptables的POSTROUTING阶段,具体命令如下:
iptables -t nat -A POSTROUTING -s <修改之前的ip段> -o <出口网卡> -j SNAT --to-source <修改之后的ip>
DNAT(Destination NAT)
此协议转换包的目的地址,通常用于公网ip转内网ip,也就是反向代理会对收到的ip包做DNAT,使其可以传到内网环境中进行下一跳路由动作。
此修改作用于iptables的PREROUTING阶段,具体命令如下:
iptables -t nat -A PREROUTING -d <需要使用的ip地址> -i <入口网卡> -j DNAT --to-destination <修改之前的ip段>
MASQUERADE(伪装)
当我们的网卡绑定的公网ip是动态的,我们就需要动态读取网卡上的ip信息,这时我们使用MASQUERADE协议可以实现。
当然,MASQUERADE是一种特殊的SNAT,通常用于动态网络环境中,也作用于POSTROUTING阶段。
具体的命令如下:
iptables -t nat -A POSTROUTING -s <修改之前的ip段> -o <出口网卡> MASQUERADE
About me: 资深大猪蹄子
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)