我有一个带有两个接口 wan 和 lan(192.168.0.1) 的 debian 盒子。在 lan:80 我有一个必须从本地网络访问的站点。我还需要从 wan:777 访问这个站点。这是我的 iptables 规则:
iptables -A INPUT -i $LAN -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 777 -j DNAT --to-destination 192.168.0.1:80
iptables -A FORWARD -p tcp -d 192.168.0.1 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
但是,它不起作用。仅当我从-i $LAN
INPUT 中删除时它才有效。我的意思是这样:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 777 -j DNAT --to-destination 192.168.0.1:80
iptables -A FORWARD -p tcp -d 192.168.0.1 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
但是,这是一个不好的方法,因为站点现在也在 wan:80 上,这不是我想要的。我的错误是什么?
我在俄罗斯 Linux 论坛上得到了答案: