In diesem kleinen Handbuch erfahren Sie, wie Sie UDP-Datenverkehr über SSH mit den Standardtools (ssh, nc, mkfifo) der meisten UNIX-ähnlichen Betriebssysteme senden.
Durchführen eines UDP-Tunnels über eine SSH-Verbindung
Schritt für Schritt Öffnen Sie mit Ihrer SSH-Verbindung einen TCP-Forward-Port
Stellen Sie auf Ihrem lokalen Computer (lokal) über SSH mit der zusätzlichen Option -L eine Verbindung zum entfernten Computer (Server) her, sodass SSH mit TCP-Portweiterleitung:
local# ssh -L 6667:localhost:6667 server.foo.com
Auf diese Weise können TCP-Verbindungen über die Portnummer 6667 Ihres lokalen Computers über den sicheren Kanal an die Portnummer 6667 auf server.foo.com weitergeleitet werden. Richten Sie die TCP / UDP-Weiterleitung auf dem Server ein
Auf dem Server öffnen wir einen Listener auf dem TCP-Port 6667, der Daten an den UDP-Port 53 einer bestimmten IP weiterleitet. Wenn Sie wie ich DNS-Weiterleitungen durchführen möchten, können Sie die IP des ersten Nameservers verwenden, die Sie in /etc/resolv.conf finden. Aber zuerst müssen wir ein FIFO erstellen. Das FIFO ist für die bidirektionale Kommunikation zwischen den beiden Kanälen erforderlich. Eine einfache Shell-Pipe überträgt nur die Standardausgabe des linken Prozesses an die Standardeingabe des rechten Prozesses.
server# mkfifo /tmp/fifo
server# nc -l -p 6667 < /tmp/fifo | nc -u 192.168.1.1 53 > /tmp/fifo
Auf diese Weise kann der TCP-Verkehr auf dem Port 6667 des Servers an den UDP-Verkehr auf dem Port 53 von 192.168.1.1 weitergeleitet werden und die Antworten können zurückgegeben werden. Richten Sie die UDP-zu-TCP-Weiterleitung auf Ihrem Computer ein
Jetzt müssen wir das Gegenteil von dem machen, was oben auf dem lokalen Rechner gemacht wurde. Sie benötigen privilegierten Zugriff, um den UDP-Port 53 zu binden.
local# mkfifo /tmp/fifo
local# sudo nc -l -u -p 53 < /tmp/fifo | nc localhost 6667 > /tmp/fifo
Auf diese Weise kann UDP-Datenverkehr auf Port 53 des lokalen Computers an TCP-Datenverkehr auf Port 6667 des lokalen Computers weitergeleitet werden. Viel Spaß mit Ihrem lokalen DNS-Server :)
Wie Sie jetzt wahrscheinlich erraten haben, wird eine DNS-Abfrage auf dem lokalen Computer, z. B. auf dem lokalen UDP-Port 53, an den lokalen TCP-Port 6667, dann an den TCP-Port 6667 des Servers und dann an den DNS-Server des Servers weitergeleitet UDP-Port 53 von 192.168.1.1. Um DNS-Dienste auf Ihrem lokalen Computer nutzen zu können, geben Sie in Ihrer /etc/resolv.conf die folgende Zeile als ersten Nameserver ein:
nameserver 127.0.0.1