Portforwarding unter Linux ohne iptables?

34

Ich habe einen Linux-VPS-Server (virtuozzo) und muss die Portweiterleitung einrichten, aber mein Hosting-Anbieter lässt iptables-nat- Kernel-Module iptables -t natnicht zu, funktioniert also nicht.

Ich suche nach anderen Wegen, wie es geht. Ich weiß, dass ich einen Port mit openssh weiterleiten kann , aber ich muss mehr als 20 verschiedene Ports, TCP und UDP , weiterleiten , daher ist dies keine Option.

Gibt es eine Linux-Software, die Port-Weiterleitungen unterstützt?

Troex
quelle
huh gute frage +1. Ich kenne keine Lösung und freue mich darauf, ob es hier etwas gibt.
Der Shurrican
Und was ist dann mit einem Programm, mit dem Sie Ports basierend auf der Quell-IP an verschiedene Ziele weiterleiten können?
dpk
Vermeiden Sie das Problem vollständig, indem Sie niemals Virtuozzo / OpenVZ-basierte VPS verwenden.
Michael Hampton
@MichaelHampton: Nicht sehr konstruktiv ...
Nicolas Raoul

Antworten:

47

Verwenden Sie das Tool "socat", es ist ein großartiges Tool für solche Dinge und es ist bereits in vielen Linux-Distributionen enthalten. Lesen Sie darüber hier: http://www.dest-unreach.org/socat/doc/README

Port Forwarding Beispiel mit socat:

socat TCP4-LISTEN:80,fork TCP4:www.yourdomain.org:8080

Damit leiten Sie alle TCP-Verbindungen auf Port 80 zu Port 8080 TCP auf www.IhreDomain.org um.

Fbo
quelle
Vergessen Sie nicht, dass https standardmäßig auf Port 443 anstatt auf Port 80 eingestellt ist :)
keiki
Socat ist das einzige Tool, das für mich auf einem Nur-IPv6-Himbeer-Pi
funktioniert hat
Perfekt, mein Problem sofort gelöst. Beachten Sie, dass Sie sicherstellen müssen, dass der eingehende Port in iptables geöffnet ist, wenn Sie über einen solchen verfügen.
Jancha
13

Es gibt ein kleines, leichtes Ressourcenprogramm, redirdas ziemlich konfigurierbar ist.

apt-get install redir auf Debian-basierten Distributionen.

Jonathan Ross
quelle
Ich habe dieses Tool in der Vergangenheit verwendet und es funktioniert sehr gut ...
Alex
Ich unterstütze dieses Tool. Es scheint, dass dies kein Paketweiterleitungstool ist, sondern der TCP-Tunnel. Dadurch wird die vom Ziel angezeigte Quell-IP-Adresse geändert. Es funktioniert also hervorragend, wenn Sie einen Port auf einen anderen Computer mit einem anderen Routing-Setup umleiten müssen.
Scegg
10

Was ist rinetd?
Es ist ein Daemon, der TCP-Verbindungen umleitet. Sehen Sie in der Manpage nach, ob es Ihren Anforderungen entspricht: http://www.boutell.com/rinetd/

fabelhaft
quelle
Sieht interessant aus, ist aber, wie Sie sagten, nur auf TCP beschränkt.
Troex
UDP wird jetzt unterstützt: github.com/samhocevar/rinetd
kev
6

xinetdunterstützt ein Redirect-Attribut, das das tut, was Sie wollen. Wie andere angemerkt haben, gibt es eine Reihe von Programmen, die Weiterleitungen verarbeiten.

Wenn Sie ein xinetdanderes Programm verwenden, das die tcpwrappersBibliothek verwendet, können Sie Zugriffsbeschränkungen anwenden, wenn dies erforderlich wird.

BillThor
quelle
4

xinet / inetd. Zum Beispiel:

umleiten

Ermöglicht die Umleitung eines TCP-Dienstes auf einen anderen Host. Wenn xinetd eine TCP-Verbindung an diesem Port empfängt, wird ein Prozess gestartet, der eine Verbindung zu dem angegebenen Host und der angegebenen Portnummer herstellt und alle Daten zwischen den beiden Hosts weiterleitet.

http://linux.die.net/man/5/xinetd.conf

Poige
quelle
Sieht interessant, aber es ist auf TCP nur wie Sie gesagt
Doud
4

Ich habe eine kleine Anwendung namens portfwd http://portfwd.sourceforge.net/ gefunden , die genau das tut, was ich brauche (TCP- und UDP-Weiterleitung). Die Homepage gibt an, dass sie zuletzt im Jahr 2002 aktualisiert wurde. Die neueste Version ist 2007 und sie funktioniert auf dem 2.6-Kernel .

Troex
quelle
Ich werde meine Antwort akzeptieren, da dies die einzige Software ist, die sowohl TCP- als auch UDP-Protokolle vollständig unterstützt.
Troex
3

SSH Führt eine Portweiterleitung durch, solange Sie eine SSL-Verbindung tunneln können.

JeffG
quelle
-3

Ok, hier ist die einfache Antwort, die funktionieren sollte. Es ist kein Hexenwerk, aber die meisten Leute machen die Antwort zu kompliziert und verwirren Linux-Benutzer mit den Neuerungen.

ufw erlauben 2xxx

2xxx = Wie auch immer Ihre Portnummer lautet, geben Sie einfach diesen Befehl in Ihr Serverterminal ein und Ihr gewünschter Port wird geöffnet.

denn
quelle
Es öffnet lediglich den Port an Schnittstellen, die sich außerhalb des Servers befinden. Der Port wird nicht von einer IP-Adresse zur anderen umgeleitet oder weitergeleitet. ES ÖFFNET DEN HAFEN.
AmirHossein