我有一個 debian 盒子,有兩個介面 wan 和 lan(192.168.0.1)。在 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
然而,這不起作用。只有當我從 INPUT 中刪除時它才有效-i $LAN
。我的意思是這樣的:
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 上,這不是我想要的。我的錯誤是什麼?
答案1
我得到了答案俄羅斯Linux論壇:
iptables -t mangle -A PREROUTING -i $WAN -p tcp --dport 777 -j MARK --set-mark 0x1234
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 777 -j DNAT --to-destination 192.168.0.1:80
iptables -A INPUT -m mark --mark 0x1234 -j ACCEPT