Quiero monitorear / oler las consultas de DNS que hago mientras estoy usando una conexión VPN con mi cliente OpenVPN. Mi motivación inicial fue comprobar si estoy filtrando consultas de DNS; luego, al usar esta , parece que no me estoy escapando, pero todavía quiero entender la tubería de la "dinámica" de mi red.
Estoy ejecutando el cliente OpenVPN en un contenedor de Docker, y establezco estas reglas de firewall justo antes de establecer la conexión vpn:
iptables -F OUTPUT
iptables -P OUTPUT DROP
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o tap0 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A OUTPUT -d ${docker_network} -o eth0 -j ACCEPT
iptables -A OUTPUT -d ${vpn_ip} -p tcp -m tcp --dport $port -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport $port -j ACCEPT
donde: vpn_ip
es la IP del servidor vpn, port
el puerto UDP para la conexión vpn y docker_network
es la red local del contenedor (por ejemplo, 172.17.0.2/16).
Todo lo que está debajo se ejecuta dentro del contenedor.
Leí en todas partes que las consultas de DNS se realizan en los servidores DNS del proveedor de VPN, por lo que me gustaría "ver" eso de alguna manera. Así que hice un ping:
ping -c1 hotmail.com
y responde normalmente.
En este punto, el /etc/resolv.conf
contiene:
nameserver 8.8.8.8
A continuación, limpio el /etc/resolv.conf
para ver si la consulta lo necesita, así que repito el comando ping y obtengo:
ping: hotmail.com: Temporary failure in name resolution
Además, si trato de usar un navegador en la parte superior de este contenedor, no carga ninguna página como normalmente lo haría.
También "olí" mis paquetes mientras el resolv.conf
estaba usando 8.8.8.8
así:
tcpdump -i tun0 -vv "host 8.8.8.8"
y obtengo líneas como:
10.8.8.7.39209 > google-public-dns-a.google.com.domain: [udp sum ok] 17379+ PTR? ...
También probé esto con la interfaz -i eth0
y obtengo un silencio completo.
Haciendo un sniff sin filtro, también verifiqué que eth0
solo ve paquetes UDP, mientras que tun0
ve paquetes TCP y UDP.
¿Por qué necesito un /etc/resolv.conf
válido si se supone que la consulta DNS debe enviarse a través del cliente vpn?
¿Las consultas de DNS se envían directamente a 8.8.8.8 oa través de mi conexión vpn?