Koristi li se DNS vašeg VPN-a zaista? Uhvatite port 53 i uvjerite se
Gurnuta DNS opcija nije putanja upita. Provjerite šta drži interfejs, gledajte kako upit odlazi i prestanite vjerovati stranici za test curenja kao dokazu.
Pitajte većinu ljudi šta VPN klijent radi s DNS-om i reći će da postavlja razrješivač, pa upiti putuju unutar tunela. Guranje je stvarno; pretpostavka da ono postaje upit nije. Između gurnute opcije i paketa na žici stoje tri faze, a svaka pada nezavisno na načine koji svi izgledaju kao pokvaren DNS server. Zato se stranica za test curenja i ispravan preglednik mogu razići oko istog računara u istom trenutku.
Gurnuta opcija nije upit
Prva faza je da server nudi postavke, na primjer gurnuta DNS opcija koja imenuje razrješivač unutar tunela. Druga faza je da klijent primijeni te postavke na interfejs. Treća faza je da aplikacija zaista pošalje upit na tu adresu. Neuspjeh u drugoj fazi ostavlja opciju vidljivom u dnevniku veze dok lista razrješivača ostaje nepromijenjena, a neuspjeh u trećoj fazi ostavlja potpuno ispravnu listu razrješivača neiskorištenom.
Većina dijagnostike sažima te tri u jednu i krivi VPN server, koji je obično jedina strana koja može dokazati da je odradila svoj dio. Čitajte umjesto toga stvarno stanje razrješivača klijenta, a zatim gledajte kako jedan upit odlazi. Ta dva zapažanja razdvajaju konfiguraciju od usmjeravanja i od politike, i koštaju oko pet minuta. Sačuvajte snimke, jer sljedeći inženjer želi prije i poslije, a ne opis toga.
Provjerite šta interfejs zaista drži
Na Linuxu sistemski razrješivač može biti obična datoteka, NetworkManager ili systemd-resolved, a to koji ga posjeduje odlučuje gdje će gurnuti server sletjeti. Proces OpenVPN iz komandne linije sam ne ažurira sistemski razrješivač, pa je dokumentirana integracija up/down skripta ili menadžer veza koji već zna primijeniti postavke. Pokretanje oba je efikasan način da stvorite trku.
resolvectl status
cat /etc/resolv.conf
Na Windowsu lista je po adapteru, pa tunelski adapter može držati interne servere dok fizički adapter zadržava lokalne i pobjeđuje za neka imena. Uporedite oba adaptera umjesto onog za koji pretpostavljate da je aktivan.
Pratite jedan upit izvan računara
Snimite oba interfejsa istovremeno, zatim razriješite jedno ime koje bi trebalo koristiti interni razrješivač. Taj par snimaka odgovara na ono na šta nijedan izlaz konfiguracije ne može.
sudo tcpdump -ni tun0 port 53
sudo tcpdump -ni any port 53
Upit koji se pojavljuje na fizičkom interfejsu i nikada u tunelu znači da je klijent izabrao pogrešan razrješivač. Upit na nijednom od njih znači da je aplikacija odgovorila iz keša, pitala stub koji sluša na loopbacku ili koristila šifrovani razrješivač čiji se saobraćaj nikada ne pojavljuje kao port 53. Snimajte i odgovore, ne samo upite, jer upit koji odlazi kroz tunel s odgovorom s javne adrese je druga kvar od odgovora koji ne stiže.
Vatrozid koji prihvata samo sopstveni DNS
Komercijalni klijenti ponekad instaliraju vlastite lance filtera. Jedan dokumentirani obrazac dopušta DNS prema klijentovom vlastitom razrješivaču i odbacuje sav preostali UDP saobraćaj na portu 53 koji pokušava napustiti interfejs koji nije loopback, uključujući saobraćaj koji je korisnik namjerno usmjerio drugdje. Upiti demona nestaju bez traga, što se čita kao kvar razrješivača, a ne kao filter.
sudo iptables -S OUTPUT
sudo iptables -S | grep -i -E 'dns|53'
Ako se pravilo odbacivanja procjenjuje prije vašeg izuzetka, dodano pravilo se nikada ne dosegne, pa ga umetnite na prvu poziciju i ograničite odredište na razrješivač koji zaista namjeravate.
sudo iptables -I OUTPUT 1 -p udp --dport 53 -d 172.20.8.1 -j ACCEPT
Taj izuzetak je dijagnostički, a ne politika. Ako je pravilo dobavljača namjerno, podržani popravak je konfigurisati klijenta da dopusti taj razrješivač i zabilježiti odluku, jer umetnuto pravilo neće preživjeti sljedeću nadogradnju klijenta.
Zašto stranica za curenje dokazuje manje nego što izgleda
Ono što stranica za test curenja pokazuje jeste razrješivač koji je razgovarao s operaterom testa, a ne onaj koji je vaš računar konsultovao. Lokalni prosljeđivač koji rekurzira prema van stavlja svoju izlaznu adresu na tu stranicu, a šifrovani upiti mogu ostaviti stranicu potpuno praznom. Oba rezultata se pogrešno čitaju, jedan kao curenje a drugi kao garancija, i nijedno čitanje ne slijedi iz zapažanja.
Odbranjiv dokaz je snimak: interfejs, odredišna adresa, odgovor i vremenska oznaka. Napravite jedan prije nego tunel ustane i jedan poslije, i uporedite ih sljedeći put kad ime ne uspije. Taj par također kaže sljedećoj osobi da li je kvar bio u razrješavanju, usmjeravanju ili u vlastitoj politici pristupa razrješivača.