我是 iptables 的新手,希望能得到一些帮助来理解路由器 nat 表中的特定规则。路由器的外部接口是 vlan2 (111.111.111.111),内部接口是 br0 (192.168.1.1)。这是 nat 部分,每条规则前面都有行号。
(1) *nat
(2) -A PREROUTING -d 111.111.111.111 -j WANPREROUTING
(3) -A PREROUTING -i vlan2 -d 192.168.1.1/255.255.255.0 -j DROP
(4) -A WANPREROUTING -p tcp --dport 22 -j DNAT --to-destination 192.168.1.12:22
(5) -A POSTROUTING -o vlan2 -j MASQUERADE
(6) -A POSTROUTING -o br0 -s 192.168.1.1/255.255.255.0 -d 192.168.1.1/255.255.255.0 -j SNAT --to-source 192.168.1.1
(7) COMMIT
有问题的规则位于第 6 行。我很难理解为什么需要它。看起来它正在将通过 br0 接口路由的每个数据包的源地址重写为内部路由器的地址 192.168.1.1,但我不确定。
这部分可以重写为
(1) *nat (2) -A PREROUTING -i vlan2 -d 192.168.1.1/255.255.255.0 -j DROP (3) -A PREROUTING -i vlan2 -p tcp --dport 22 -j DNAT --to-destination 192.168.1.12:22 (4) -A POSTROUTING -o vlan2 -j MASQUERADE (5) -A POSTROUTING -o br0 -s 192.168.1.1/255.255.255.0 -d 192.168.1.1/255.255.255.0 -j SNAT --to-source 192.168.1.1 (6) COMMIT
通过删除 WANPREROUTING 链?
谢谢!