我有一个动态 WAN IP,因此如果它改变,我的 iptables 将不再适用。
这是我的工作发夹 nat,其中 xxxx 是我的 WAN IP
br0 - LAN
eth1 - WAN
-A PREROUTING -d x.x.x.x -p tcp --dport 80 -j DNAT --to-destination 192.168.0.9
-A POSTROUTING -s 192.168.0.0/27 -d 192.168.0.0/27 -o br0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/27 -o eth1 -j MASQUERADE
-d x.x.x.x
有没有其他方法,以防我的 WAN IP 发生变化,我不需要专门使用?
答案1
将第一条规则重写为:
iptables -t nat -A PREROUTING -m addrtype --dst-type LOCAL -p tcp --dport 80 -j DNAT --to-destination 192.168.0.9
请注意,这也会将连接重定向到 LAN IP 上的端口 80。
如果您想避免这种情况,请使用 LAN IPa.b.c.d
将规则更改为:
iptables -t nat -A PREROUTING \! -d a.b.c.d -m addrtype --dst-type LOCAL -p tcp --dport 80 -j DNAT --to-destination 192.168.0.9
答案2
在 DNAT 规则中,不要-d x.x.x.x
使用 ,而要使用-i eth1 -m addrtype --dst-type LOCAL
。
答案3
-A PREROUTING -d $(ifconfig eth1 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}') -p tcp --dport 80 -j DNAT --to-destination 192.168.0.9
或类似的东西...