Wie kann ich den gesamten für einen bestimmten Port bestimmten Datenverkehr von einer IP-Adresse zu einer anderen IP-Adresse übertragen und auf den lokalen Computer umleiten, wobei die Quell-IP-Adresse erhalten bleibt?

2

Ich möchte den gesamten Datenverkehr von einer beliebigen IP-Adresse zu einer beliebigen IP-Adresse über die Schnittstelle übertragen enp4s5, bestimmt für den Hafen 80, und leiten Sie es auf den lokalen Computer um (den Router, auf dem iptables ausgeführt wird).

Der Dienst, der auf Port 80 des lokalen Computers ausgeführt wird (ein Webserver, falls dies nicht am Port erkennbar war), muss die ursprüngliche SOURCE-IP der Verbindung kennen.

Der Anwendungsfall gilt für ein firmeneigenes WiFi-Portal, das alle HTTP-Seiten (ich weiß, dass dies bei HTTPS nicht funktioniert) durch eine Weiterleitung zu meiner Anmeldeseite ersetzt, die auf dem Router ausgeführt wird. Diese muss sich authentifizieren (und fügt dann eine iptables-Regel hinzu) oder fügen Sie ihre Adresse zu einem Ipset hinzu, das diese Umleitung umgeht).

Ich bin mir ziemlich sicher, dass ein DNAT die Hälfte des gewünschten Setups durchführt und die Pakete auf den lokalen Computer umleitet. Als ich jedoch feststeckte, benötigte ich einen passenden SNAT, um die Antwortpakete an den Computer zurückzusenden, der sie ursprünglich gesendet hatte - aber ich Ich kann das nicht tun, weil ich die Quell-IP nicht kenne, die in --to-source für die SNAT-Regel angegeben werden soll.

AppleDash
quelle

Antworten:

2

Was für mich gelingt, um alle oben genannten Anforderungen zu erfüllen, ist a REDIRECT Regel: iptables -t nat -A PREROUTING -i enp4s5 -p tcp --dport 80 -j REDIRECT --to-port 80

AppleDash
quelle