나는 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
그러나 작동하지 않습니다. -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에도 있고 이는 내가 원하는 것이 아니기 때문입니다. 내 실수는 무엇입니까?
답변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