Meine Frage ist im Grunde die gleiche wie Nur bestimmten ausgehenden Datenverkehr auf bestimmten Schnittstellen zulassen .
Ich habe zwei Schnittstellen eth1
(10.0.0.2) und wlan0
(192.168.0.2). Meine Standardroute ist für eth1
. Nehmen wir an, ich möchte, dass der gesamte https-Verkehr durchläuft wlan0
. Wenn ich nun die in der anderen Frage vorgeschlagene Lösung verwende, wird der https-Verkehr durchlaufen wlan0
, hat jedoch weiterhin die Quelladresse eth1
(10.0.0.2). Da diese Adresse für das wlan0
Gateway nicht routingfähig ist , werden Antworten niemals zurückkommen. Der einfache Weg wäre, einfach die bind-addr in der Anwendung richtig einzustellen, aber in diesem Fall ist sie nicht anwendbar.
Ich glaube, ich muss das src-addr umschreiben:
# first mark it so that iproute can route it through wlan0
iptables -A OUTPUT -t mangle -o eth1 -p tcp --dport 443 -j MARK --set-mark 1
# now rewrite the src-addr
iptables -A POSTROUTING -t nat -o wlan0 -p tcp --dport 443 -j SNAT --to 192.168.0.2
Jetzt sieht tcpdump, dass die ausgehenden Pakete in Ordnung sind und eingehende Pakete für 192.168.0.2 eintreffen. Wahrscheinlich landen sie jedoch nie in der Anwendung. Alles, was ich jemals zu sehen bekomme, ist, dass die Anwendung das SYN-Paket erneut sendet. ACK wurde bereits empfangen.
Also dachte ich mir, ich muss vielleicht auch die eingehende Adresse umschreiben:
iptables -A PREROUTING -t nat -i wlan0 -p tcp --sport 443 -j DNAT --to 10.0.0.2
aber das hat auch nicht geklappt. Also stecke ich irgendwie hier fest. Irgendwelche Vorschläge?
quelle
src
denip route
Befehlen eine Option hinzufügen , um die richtige Quelladresse anzugeben.POSTROUTING
SNAT
wird sich darum kümmern.Bahamats Lösung ist richtig; Beachten Sie jedoch, dass ich diese Funktion nur ausführen konnte, indem ich den rp_filter für jede Schnittstelle im System deaktivierte, nicht nur für die beiden, die am NAT-Vorgang beteiligt sind (in diesem Fall eth1 und wlan0).
(Siehe den WICHTIGEN Hinweis am Ende dieser Seite: Advanced Routing Howto - der dort gepostete Link existiert nicht mehr, aber ich habe ihn über die Wayback-Maschine gefunden.)
quelle
Ein Vorschlag: Sie sollten immer
--sport
statt--dport
in der Ausgabekette verwenden.NATs ändern das
dport
und das macht Ihre Regel uneinsichtig.quelle
Ich denke, dass unten benötigt wird:
quelle