Linux: DNS a través de tunel SSH

El escenario es el siguiente. Tenemos un cliente ("C") que quiere realizar las consultas DNS a un servidor("S"), y el servidor solo tiene el puerto 22 abierto (ssh). El servidor puede tener un servidor DNS (ejemplo bind o dnsmasq) para resolver el mismo las consultas o simplemente redirigir las peticiones a otro DNS (ServerName).


Cliente:
#Lee UDP del puerto 53 y lo redirige a localhost:5353
sudo socat -T15 udp4-recvfrom:53,reuseaddr,fork tcp:localhost:5353

#Tunel ssh  (tcp) del puerto 5353 local al equipo remoto SERVIDOR
 autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -L 5353:localhost:5353 USER@SERVIDOR-N


SERVIDOR:
#Escucha TCP en el puerto 5353, lo convierte a udp, y lo manda al servername
#el servername podría ser un dns remoto (8.8.8.8) o incluso el mismo localhost(127.0.0.1) si estamos ejecutando un DNS en local ( dnsmasq, bind)
socat tcp4-listen:5353,reuseaddr,fork UDP:SERVERNAME:53

Para testearlo en el cliente:
dig www.ugr.es @localhost -p 53 +short

Comentarios

Entradas populares de este blog

Oracle : Tablas y objetos bloqueados

Oracle obtener fecha de creación de una tabla