前言

在我们上网的过程中,不可能只用同一个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
posted on 2023-02-09 17:07  eryoung2  阅读(178)  评论(0编辑  收藏  举报