Einfache Portweiterleitung


18

Ich habe einige Probleme, da ich versuche, einen Reverse-Proxy mit einem zweiten Server einzurichten. Meine Idee war, die Firewall dazu zu bringen, https an den Reverse-Proxy und Port 29418 (gerrit ssh) an den zweiten Server weiterzuleiten. Jetzt sagt mein IT-Mitarbeiter: KANN NICHT! Entweder gehen beide Ports zu Server 1 oder beide Ports gehen zu Server 2.

Ok, als Abhilfe habe ich versucht, eine Portweiterleitung auf dem Reverse-Proxy von Port 29418 einzurichten -> server2: 29418

Einzelheiten:

  • Server1 IP: 10.0.0.132 und 192.168.10.2 unter Ubuntu 12.04.2 LTS
  • Server2 IP: 10.0.0.133 und 192.168.10.3 unter Ubuntu 12.04.2 LTS

Nun werden sowohl https als auch Port 29418 von der Firewall auf 10.0.0.132 umgestellt. Laut IT ist dies der einzige Weg. :(

Sagen Sie mir bitte, wie ich von 10.0.0.132:29418 -> 192.168.10.3:29418 oder 10.0.0.133:29418 weiterleiten soll

Wenn ich an 10.0.0.132 arbeite, kann ich eine Verbindung zu 10.0.0.133:29418 und 192.168.10.3:29418 herstellen, sodass die Ports geöffnet sind.

- Update -

Mein iptables -t nat -L sieht so aus:

root @ dev: / root # iptables -t nat -L
Ketten-PREROUTING (Policy ACCEPT)
Zielprotokoll Quellenziel
DNAT tcp - Überall dev.example.com tcp dpt: 29418 bis: 10.0.0.133

Chain INPUT (Policy ACCEPT)
Zielprotokoll Quellenziel

Chain OUTPUT (Policy ACCEPT)
Zielprotokoll Quellenziel

Chain POSTROUTING (Policy ACCEPT)
Zielprotokoll Quellenziel
root @ dev: / root # cat / proc / sys / net / ipv4 / ip_forward
1

Antworten:


32

Für den Fall, dass jemand anders nach einem Weg sucht, der tatsächlich funktioniert. Obwohl @HorsePunchKid in seinem Vorschlag richtig ist, habe ich diese exemplarische Vorgehensweise gefunden, die die fehlenden Schritte ausfüllt:

http://www.debuntu.org/wie-zum-redirektieren-von-Netzwerken-zu-neuem-Verwenden-von-iptabellen/

Im Wesentlichen:

IP-Weiterleitung aktivieren:

sysctl net.ipv4.ip_forward=1

Fügen Sie Ihre Weiterleitungsregel hinzu (verwenden Sie nnnn: port):

iptables -t nat -A PREROUTING -p tcp -d 10.0.0.132 --dport 29418 -j DNAT --to-destination 10.0.0.133:29418

Fragen Sie IPtables nach Masquerade:

iptables -t nat -A POSTROUTING -j MASQUERADE

Und das ist es! Es hat bei mir auf jeden fall geklappt :)


1
Dies ist die beste Antwort, die ich zu diesem Thema gefunden habe.
Victor Piousbox

Verbindung von meinem Docker-Container nach Verwendung dieser Lösung unterbrochen. Musste die Regel löschen. Regel funktionierte, verlor aber den gesamten anderen Verkehr. Ich empfehle das nicht.
Dyin

iptables -t nat -A POSTROUTING -j MASQUERADEOH WOW ... das war's, danke! Verbrachte Stunden damit, im Internet zu suchen und herauszufinden. Das ist so einfach und funktioniert.
Shrimpwagon

7

Wenn Sie Iptables auf 10.0.0.132 installiert haben, denke ich, dass dies ziemlich einfach sein wird:

iptables -t nat -A PREROUTING -j DNAT -d 10.0.0.132 -p tcp --dport 29418 --to 10.0.0.133

Dies besagt, dass Datenverkehr, der über Port 29418 an 10.0.0.132 eingeht, stattdessen über denselben Port an 10.0.0.133 gesendet werden soll, bevor andere Routing-Vorgänge durchgeführt werden, die 10.0.0.132 möglicherweise versucht. Wenn Sie diesen Befehl ausführen und Probleme damit haben, ersetzen Sie das Flag -A durch -D, um ihn zu entfernen.

Wenn Sie möchten, dass diese Regel beim Start von 10.0.0.132 automatisch ausgeführt wird, können Sie den obigen Befehl als Nachbearbeitungsregel in / etc / network / interfaces hinzufügen.


Genau das habe ich getan, aber es hat nicht funktioniert. Ich habe net.ipv4.ip_forward = 1 in /etc/sysctl.conf auskommentiert, erhalte jedoch weiterhin Fehler beim Herstellen einer Verbindung zum 10.0.0.132:29418
uncletall

6

Wenn Sie nach einer temporären Methode suchen, versuchen Sie die folgende Lösung.

    ssh -L 192.168.0.10:8080:10.0.0.10:80 root@10.0.0.10

Der obige Befehl leitet alle Verbindungen zum Port 8080 Ihres Basiscomputers zum 80-Port Ihres virtuellen Computers um. Sie können das Funktionieren testen, indem Sie auf die Webseite http://192.168.0.10:8080 zugreifen. Daraufhin wird die Webseite auf dem Gastcomputer angezeigt.

Dies gilt für alle Ports :)


0

Am Ende musste ich pfSense als Router auf meinem ESXi-Server installieren, um den Datenverkehr zu den verschiedenen VMs zu leiten, da ich ihn unter Ubuntu nicht zum Laufen bringen konnte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.