Ce petit guide explique comment envoyer du trafic UDP via SSH à l'aide d'outils fournis en standard (ssh, nc, mkfifo) avec la plupart des systèmes d'exploitation de type UNIX.
Réalisation de tunnels UDP via une connexion SSH
Étape par étape Ouvrez un port de transfert TCP avec votre connexion SSH
Sur votre ordinateur local (local), connectez-vous à l'ordinateur distant (serveur) via SSH, avec l'option -L supplémentaire afin que SSH avec transfert de port TCP:
local# ssh -L 6667:localhost:6667 server.foo.com
Cela permettra aux connexions TCP sur le numéro de port 6667 de votre ordinateur local d'être transférées vers le numéro de port 6667 sur server.foo.com via le canal sécurisé. Configurez le transfert TCP vers UDP sur le serveur
Sur le serveur, nous ouvrons un écouteur sur le port TCP 6667 qui transférera les données au port UDP 53 d’une adresse IP spécifiée. Si vous voulez faire le transfert DNS comme moi, vous pouvez utiliser l'adresse IP du premier serveur de noms que vous trouverez dans /etc/resolv.conf. Mais d’abord, nous devons créer un fifo. Le fifo est nécessaire pour établir une communication bidirectionnelle entre les deux canaux. Un canal de communication simple ne communiquerait que la sortie standard du processus de gauche avec l'entrée standard du processus de droite.
server# mkfifo /tmp/fifo
server# nc -l -p 6667 < /tmp/fifo | nc -u 192.168.1.1 53 > /tmp/fifo
Cela permettra au trafic TCP sur le port 6667 du serveur d'être transféré au trafic UDP sur le port 53 de 192.168.1.1 et aux réponses de revenir. Configurez l'UDP pour le transfert TCP sur votre machine
Maintenant, nous devons faire le contraire de ce qui a été fait en haut sur la machine locale. Vous devez disposer d’un accès privilégié pour lier le port UDP 53.
local# mkfifo /tmp/fifo
local# sudo nc -l -u -p 53 < /tmp/fifo | nc localhost 6667 > /tmp/fifo
Cela permettra au trafic UDP sur le port 53 de la machine locale d'être transféré au trafic TCP sur le port 6667 de la machine locale. Profitez de votre serveur DNS local :)
Comme vous l'avez probablement deviné, lorsqu'une requête DNS sera effectuée sur la machine locale, par exemple sur le port UDP local 53, elle sera transmise au port TCP local 6667, puis au port TCP du serveur 6667, puis au serveur DNS du serveur. , Port UDP 53 de 192.168.1.1. Pour profiter des services DNS sur votre ordinateur local, insérez la ligne suivante en tant que premier serveur de noms dans votre fichier /etc/resolv.conf:
nameserver 127.0.0.1