Leiten Sie nur bestimmte Host-Anforderungen um, wobei ein Standard für andere beibehalten wird

429
Phate

Ich habe eine Maschine mit nur offenem Port 80, da ist bereits ein http-Server an. Ich möchte ankommenden Datenverkehr an Port 80 abfangen und:

  • Wenn Sie von einer IP1-, IP2-, IP3-Weiterleitung auf eine andere Anwendung kommen, die an einem anderen Port überwacht wird
  • Sonst gehen Sie zum Webserver

Ist dies möglich? Derzeit verwende ich socat, aber trotz reuseaddr erhalte ich immer noch einen Fehler beim Starten des Webservers, da der Port bereits verwendet wird ...

0
Was meinst du mit "nur Port 80 offen"? Sind andere Ports durch eine externe Firewall blockiert (z. B. ein Router mit NAT, nur Port 80 wird weitergeleitet)? oder durch interne Software-Firewall ("iptables" -Regeln)? Kamil Maciorowski vor 5 Jahren 0
Leider befindet sich der Block außerhalb meiner Maschine, daher kann ich nichts dagegen tun ... Phate vor 5 Jahren 0

1 Antwort auf die Frage

1
Kamil Maciorowski

Sie sagten "mit nur Port 80 offen". Wenn andere Ports von einer externen Firewall blockiert werden (z. B. ein Router mit NAT, nur der Port 80 wird an Sie weitergeleitet), kann die folgende Grundregel lauten:

iptables -t nat -A PREROUTING -p TCP --dport 80 -s 192.168.1.7 -j REDIRECT --to-port 1234 

Unter jeden Verkehr in dem Hafen kommt 80, leitet es, was aus ist in 192.168.1.7dem Hafen 1234, so dass der Rest intakt.

Note iptablesfunktioniert auf der Basis des ersten Spiels, Sie möchten dies also tun

iptables -t nat -I PREROUTING … 

stattdessen.

Informationen zu den verschiedenen Möglichkeiten zum Angeben mehrerer möglicher Quelladressen finden Sie unter Antworten auf diese Frage: iptablesMehrere Quell-IPs .

Aber wenn "nur Port 80 geöffnet" bedeutet, dass Sie iptables -A INPUT …Regeln haben, die nur Port 80 zulassen, erwarte ich, dass dies allein nicht funktionieren wird. Dies liegt daran, dass nat/PREROUTINGzuerst gearbeitet wird. In diesem Fall sollten Sie auch den anderen Port entsperren.

Wenn ich das richtig verstanden habe, wird der Verkehr von 192.168.1.7 auf Port 1234 umgeleitet und der Rest auf 80 gesetzt. Phate vor 5 Jahren 0
@Phate Ja. Meine Antwort ist jetzt erweitert. Kamil Maciorowski vor 5 Jahren 0
Es scheint zu funktionieren, aber etwas Seltsames passiert: Wenn ich iptables -L mache, um meine Regeln aufzulisten, kann ich die eingegebenen nicht sehen ... aber es funktioniert sicher, also muss es da sein! Ich brauche das, um es später löschen zu können Phate vor 5 Jahren 0
Ich glaube, dass "iptables -L" äquivalent zu "iptables -t filter -L" ist. Sie brauchen "iptables -t nat -L". Kamil Maciorowski vor 5 Jahren 0