controlla le query DNS durante l'utilizzo di OpenVPN.-

0

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?

    
posta issrc 30.10.2018 - 01:45
fonte

1 risposta

0

Why do I need a valid /etc/resolv.conf if the DNS query is supposed to be sent over the vpn client?

Il /etc/resolv.conf è la configurazione per le librerie del resolver che il server DNS dovrebbe usare. Anche se stai usando una VPN hai ancora bisogno di un server DNS. Solo, la comunicazione con il server DNS fornito dovrebbe essere effettuata tramite la VPN quindi.

Ad esempio se utilizzi 8.8.8.8 come server DNS, dovresti vedere la query DNS che passa attraverso l'interfaccia VPN (tun0 nel tuo caso) - che vedi anche lì in base alla tua domanda:

tcpdump -i tun0 -vv "host 8.8.8.8"
10.8.8.7.39209 > google-public-dns-a.google.com.domain: [udp sum ok] 17379+ PTR? ...

Se invece dovessi utilizzare un server DNS nella rete locale (come 172.17.0.1), la query DNS non passerebbe attraverso l'interfaccia VPN poiché la route verso la rete locale non viene impostata tramite l'interfaccia VPN (controlla netstat -rn o ip route per i dettagli). Dovresti invece vedere la query passare attraverso un'altra interfaccia (possibilmente eth0 , a seconda della tua esatta configurazione). In questo caso si avrebbe una perdita DNS poiché la query DNS sta bypassando la VPN.

    
risposta data 30.10.2018 - 07:07
fonte

Leggi altre domande sui tag