iptables: Wie kann ich eine Portumleitung „überschreiben“?

iptables: Wie kann ich eine Portumleitung „überschreiben“?

Mein Setup ist wie folgt:

Ich habe einen Linux-Server mit zwei Schnittstellen eth0und eth1. eth1hat eine Internetverbindung über mein normales LAN. eth0dient zum DHCP-Dienst und die Schnittstelle selbst hat die IP-Adresse 10.0.0.1.

Ich möchte Folgendes erreichen:

Ich möchte, dass Pakete auf Port 80, die von angeschlossenen Maschinen stammen, eth0auf Port 80 der Routing-Maschine selbst umgeleitet werden und Antwortpakete natürlich zurückgeleitet werden. Das ist an sich einfach genug, aber ich habe noch eine weitere Anforderung. Ich möchte, dass Clients mit eth0bestimmten IP-Adressen davon ausgenommen werden können und dass Pakete auf Port 80 wie gewohnt geroutet werden. Wie kann ich das machen? Bisher habe ich Folgendes getan, um alle Pakete auf Port 80 auf eth0die lokale Maschine umzuleiten. Es funktioniert, aber ich weiß nicht, wie ich meine zweite Anforderung erfüllen soll.

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.1:80 -i eth0

iptables -t nat -A POSTROUTING -p tcp -d 127.0.0.1 --dport 80 -j SNAT --to-source 10.0.0.1

Antwort1

Sie müssen die PREROUTINGTabelle einfach verlassen, bevor die folgende Zeile erreicht wird DNAT:

iptables -t nat -I PREROUTING -p tcp -s <exempt ip> -j RETURN

Dadurch sollte -Ieine neue Regel eingefügt () werden, um -j RETURNdie Routing-Tabelle für alle Pakete von der ausgenommenen IP ( -s <exempt ip>) als erste Regel zu verlassen (), sodass es getroffen wird, bevor es die Regel erreicht DNAT.

(Möglicherweise müssen Sie auch etwas Ähnliches tun POSTROUTING, ich bin nicht sicher.)


Die andere Möglichkeit besteht darin, einen IP-Satz ( ) für die IPs zu erstellen man ipset, die Sie ausnehmen möchten, und dann eine umgekehrte Übereinstimmung zu Ihren DNATund SNATRegeln hinzuzufügen:

ipset create exempt hash:ip
ipset add exempt <exempt ip 1>
ipset add exempt <exempt ip 2>
ipset add exempt <exempt ip 3>
iptables -t nat -A PREROUTING -p tcp --dport 80 -m set ! --match-set exempt src -j DNAT --to-destination 10.0.0.1:80 -i eth0

Dies lässt sich einfacher verwalten, da Sie ausgenommene IPs problemlos zum IP-Set hinzufügen oder daraus entfernen können, ohne die IP-Tables zu ändern.

verwandte Informationen