首页 新闻 会员 周边 捐助

iptables做SNAT转换后数据包的流向问题

0
悬赏园豆:10 [已解决问题] 解决于 2021-12-09 16:20

在双网卡linux系统中:

enp5s0 接入外网,ip :192.168.1.107

enp4s0 设置静态ip :192.168.2.1 ,并在该网口上搭建dhcp服务器,再接入PC2到该网口,PC2获取到ip: 192.168.2.100

现在我要让 PC2能通过enp4s0上外网,设定如下iptables规则:

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o enp5s0 -j MASQUERADE  \\从enp4s0来的数据包都伪装成enp5s0的数据从enp5s0出去

iptables -t nat -A PREROUTING -s 192.168.2.0/24 -p udp --dport 53 -j DNAT --to-destination 114.114.114.114  \\ 192.168.2.0/24的解析dns都通过114.114.114.114

即把enp4s0中进来的数据包通过地址转换后从enp5s0发送出去,这样就能上外网了,我的疑问是,enp4s0出去的数据包通过enp5s0出去后源地址经过NAT转换成enp5s0的地址了,那么同enp5s0的收到的数据包怎么才能正确的返回到enp4s0呢

joker8的主页 joker8 | 初学一级 | 园豆:196
提问于:2018-07-15 11:24
< >
分享
最佳答案
0

我猜应该是有类似SESSION一样东西记录了,路由器好像也是这原理。

收获园豆:10
56180825 | 小虾三级 |园豆:1749 | 2018-07-15 11:33

其实原理也好猜想,lan到wan做snat,wan到lan应该是通过目的port来正确路由,上面的情况也是一样的原理,只是查看ipables规则和路由表都没看到有相应的设定,所以一直很疑惑

joker8 | 园豆:196 (初学一级) | 2018-07-15 11:55
其他回答(1)
0

我明白了,nat转换的时候kernel中conntrack会有跟踪记录

joker8 | 园豆:196 (初学一级) | 2018-07-16 16:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册