PREROUTING 和 POSTROUTING, SNAT 和 DNAT 剖析

位置:

PREROUTING 和 POSTROUTING是位于NAT表中的两条数据中转链。

NAT:

NAT (网络地址转换) 技术在平时是很多见的,如家庭中在使用路由器共享上网时,一般用的就是 NAT 技术,它可以实现众多内网 IP 共享一个公网 IP 上网。

NAT原理:

 1.当内网主机访问外网时,当内网主机的数据包要通过路由器时,路由器将数据包中的源内网 IP 地址改为路由器上的公网 IP 地址,同时记录下该数据包的消息,即 SNAT。

2.当外网服务器响应这次由内而外发出的请求或数据交换时,当外网服务器发出的数据包经过路由器时,原本是路由器上的公网 IP 地址被路由器改为内网 IP,即 DNAT

SNAT 和 DNAT:

SNAT 和 DNAT 是 iptables 中使用 NAT 规则相关的的两个重要概念。

1.内网主机访问外网而经过路由时,源 IP 会发生改变,这种变更行为就是 SNAT;

2.外网的数据经过路由发往内网主机时,数据包中的目的 IP (路由器上的公网 IP) 将修改为内网 IP,这种变更行为就是 DNAT 。


PREROUTING 、 POSTROUTING与SNAT DNAT对应关系:

SNAT 操作对应链  POSTROUTING

DNAT 操作对应链  PREROUTING 

(个人理解)

 精确到网卡设备上:

1 网卡数据流出必然经过post

      即PC上网需求的数据包通过本地路由传到公网时,会经过 NAT表下的POSTROUTING链,将数据包内的目标地址由本地目的地址改为真正的公网目标地址。

2 网卡数据流入必然经过pre 

即公网回馈的数据包通过本地路由传回PC设备时,会经过 NAT表下的PREROUTING链,  将数据包内的目标地址由公网返回地址改为本地的私网设备地址。


POSTROUTING:
私网->公网 地址转换,即把内网环境下PC设备发出的上网数据包中的目标地址由内网目标地址转换成公网目标地址。这种 DNAT 的行为规则就要在 POSTROUTING 链里添加。
例:
iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -o devName -j MASQUERADE

PREROUTING:

公网->私网地址转换,即把公网反馈的网络数据包中的目标地址由当前网络环境的外网地址更改为内网环境下目标PC的内网地址。这种 DNAT 的行为规则就要在 PREROUTING 链里添加。rt

例:
iptables -t nat -I PREROUTING -s 192.168.1.0/24 -i devName -j targetTable

你可能感兴趣的:(PREROUTING 和 POSTROUTING, SNAT 和 DNAT 剖析)