Voglio monitorare / annusare le query DNS che faccio mentre sto usando una connessione VPN con il mio client OpenVPN. La mia motivazione iniziale era di verificare se sto perdendo query DNS; quindi utilizzando questa pagina sembra che non stia perdendo, ma voglio ancora capire la pipeline della mia rete "dinamica".
Sto eseguendo il client OpenVPN in un contenitore Docker e imposto queste regole firewall prima di stabilire la connessione 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
dove: vpn_ip
è l'IP del server vpn, port
la porta UDP per la connessione vpn e docker_network
è la rete locale del contenitore (ad esempio 172.17.0.2/16).
Tutto quanto segue viene eseguito all'interno del contenitore.
Leggo ovunque che le query DNS vengano fatte ai server DNS del provider VPN, quindi mi piacerebbe "vederle" in qualche modo. Così ho fatto un ping:
ping -c1 hotmail.com
e risponde normalmente.
A questo punto /etc/resolv.conf
contiene:
nameserver 8.8.8.8
Successivamente, pulisco /etc/resolv.conf
per vedere se la query ne ha bisogno, quindi ripeto il comando ping e ottengo:
ping: hotmail.com: Temporary failure in name resolution
Inoltre, se provo a utilizzare un browser sopra questo contenitore, non carica alcuna pagina come di solito.
Ho anche "annusato" i miei pacchetti mentre resolv.conf
stava usando 8.8.8.8
in questo modo:
tcpdump -i tun0 -vv "host 8.8.8.8"
e ottengo linee come:
10.8.8.7.39209 > google-public-dns-a.google.com.domain: [udp sum ok] 17379+ PTR? ...
Ho anche provato questo con l'interfaccia -i eth0
e ottengo completo silenzio.
Facendo uno sniff senza filtro, ho anche controllato che eth0
vedesse solo i pacchetti UDP, mentre tun0
vedesse i pacchetti TCP e UDP.
Perché è necessario un /etc/resolv.conf
valido se la query DNS deve essere inviata tramite il client vpn?
Le query DNS vengono inviate direttamente a 8.8.8.8 o tramite la mia connessione VPN?