Wie funktioniert die Portweiterleitung mit zwei Schnittstellen unter Verwendung von iptables?

Wie funktioniert die Portweiterleitung mit zwei Schnittstellen unter Verwendung von iptables?

Ich habe eine Debian-Box mit zwei Schnittstellen: WAN und LAN (192.168.0.1). Auf LAN:80 habe ich eine Site, auf die vom lokalen Netzwerk aus zugegriffen werden muss. Außerdem muss diese Site von WAN:777 aus zugegriffen werden können. Dies sind meine iptables-Regeln:

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

Es funktioniert jedoch nicht. Es funktioniert nur, wenn ich -i $LANINPUT entferne. Ich meine so:

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

Allerdings ist das ein schlechter Weg, da die Site nun auch auf WAN:80 liegt und das ist nicht das, was ich will. Was ist mein Fehler?

Antwort1

Ich habe eine Antwort aufRussisches Linux-Forum:

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

verwandte Informationen