我必须连接两个 LAN:LAN1:10.10.0.0/16 和 LAN2:192.168.0.0/16。不能做简单的路由,因为192.168.0.0/16网络在LAN1是被禁止的,所以我想用Full cone nat(1:1)把192.168.xy/16翻译成10.11.xy/16。每次翻译都按以下规则完成:
iptables -t nat -A PREROUTING -d 10.11.0.0/16 -j DNAT --to-destination 192.168.0.0/16
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j SNAT --to-source 10.11.0.0/16
但是我必须输入 254*254*2 规则,我认为这会导致性能大幅下降。那么,有没有办法用最少的规则编写这种一对一的翻译呢?
我不确定它是否存在于所有内核中,但您可能正在寻找的是NETMAP目标。
从iptables 手册页
就像第一个答案所说,使用 -j NETMAP:
在 POSTROUTING 行中添加 -d 10.10.0.0/16 可能也是一个好主意。
你可以用一个小的 shell 脚本来做到这一点
但我认为有一个错误。我认为应该是/32 而不是/16。