Vai jūsu VPN DNS tiešām tiek izmantots? Noķeriet 53. portu un paskatieties
Uzspiests DNS parametrs nav vaicājuma ceļš. Apskatiet, ko tur saskarne, vērojiet, kā vaicājums iziet, un pārtrauciet uzticēties noplūdes testa lapai kā pierādījumam.
Pajautājiet vairumam, ko VPN klients dara ar DNS, un viņi teiks, ka tas iestata risinātāju, tāpēc vaicājumi ceļo tuneļa iekšienē. Uzspiešana ir īsta; pieņēmums, ka tā kļūst par vaicājumu, nav. Starp uzspiestu parametru un pakešu uz vada stāv trīs posmi, un katrs neizdodas neatkarīgi tā, ka viss izskatās kā bojāts DNS serveris. Tāpēc noplūdes testa lapa un strādājošs pārlūks var nesaskanēt par vienu un to pašu mašīnu tajā pašā mirklī.
Uzspiests parametrs nav vaicājums
Pirmais posms ir, ka serveris piedāvā iestatījumus, piemēram, uzspiestu DNS parametru, kas nosauc risinātāju tuneļa iekšienē. Otrais posms ir, ka klients piemēro šos iestatījumus saskarnei. Trešais posms ir, ka programma tiešām nosūta vaicājumu uz šo adresi. Otrā posma neveiksme atstāj parametru redzamu savienojuma žurnālā, kamēr risinātāju saraksts paliek nemainīgs, un trešā posma neveiksme atstāj pilnīgi pareizu risinātāju sarakstu neizmantotu.
Lielākā daļa problēmu novēršanas šos trīs sapludina vienā un vaino VPN serveri, kas parasti ir vienīgā puse, kas spēj pierādīt, ka izdarījusi savu daļu. Tā vietā lasiet klienta faktisko risinātāja stāvokli un tad vērojiet, kā viens vaicājums iziet. Šie divi novērojumi atdala konfigurāciju no maršrutēšanas un no politikas, un tie izmaksā apmēram piecas minūtes. Saglabājiet ierakstus, jo nākamais inženieris grib pirms un pēc, nevis to aprakstu.
Pārbaudiet, ko saskarne tiešām tur
Linux sistēmas risinātājs var būt vienkārša datne, NetworkManager vai systemd-resolved, un tas, kurš no tiem to pārvalda, nosaka, kur nolaižas uzspiests serveris. Komandrindas OpenVPN process pats neatsvaidzina sistēmas risinātāju, tāpēc dokumentētā integrācija ir up/down skripts vai savienojumu pārvaldnieks, kas jau prot piemērot iestatījumus. Abu palaišana ir efektīvs veids, kā radīt sacensību.
resolvectl status
cat /etc/resolv.conf
Windows saraksts ir pa adapteriem, tāpēc tuneļa adapteris var turēt iekšējos serverus, kamēr fiziskais adapteris patur vietējos un uzvar dažiem nosaukumiem. Salīdziniet abus adapterus, nevis to, kuru uzskatāt par aktīvu.
Izsekojiet vienu vaicājumu ārpus mašīnas
Vienlaikus ierakstiet abas saskarnes, tad atrisiniet vienu nosaukumu, kam vajadzētu izmantot iekšējo risinātāju. Šis ierakstu pāris atbild uz to, uz ko nevar atbildēt nekāda konfigurācijas izvade.
sudo tcpdump -ni tun0 port 53
sudo tcpdump -ni any port 53
Vaicājums, kas parādās fiziskajā saskarnē un nekad tunelī, nozīmē, ka klients izvēlējās nepareizo risinātāju. Vaicājums, kas neparādās nevienā no tām, nozīmē, ka programma atbildēja no kešatmiņas, jautāja stub, kas klausās uz loopback, vai izmantoja šifrētu risinātāju, kura trafiks nekad neparādās kā 53-porta. Ierakstiet arī atbildes, ne tikai vaicājumus, jo vaicājums, kas iziet pa tuneli ar atbildi no publiskas adreses, ir cita kļūda nekā atbilde, kas nemaz neierodas.
Ugunsmūris, kas pieņem tikai savu DNS
Komerciālie klienti dažkārt instalē savas filtrēšanas ķēdes. Viens dokumentēts modelis atļauj DNS uz klienta paša risinātāju un izmet visu atlikušo UDP trafiku uz 53-porta, kas mēģina atstāt saskarni, kura nav loopback, tostarp trafiku, ko lietotājs apzināti maršrutējis citur. Dēmona vaicājumi pazūd bez pēdām, un tas tiek lasīts kā risinātāja kļūda, nevis filtrs.
sudo iptables -S OUTPUT
sudo iptables -S | grep -i -E 'dns|53'
Ja izmešanas noteikums tiek izvērtēts pirms jūsu izņēmuma, pievienotais noteikums nekad netiek sasniegts, tāpēc ievietojiet to pirmajā pozīcijā un ierobežojiet galamērķi ar risinātāju, ko tiešām domājat.
sudo iptables -I OUTPUT 1 -p udp --dport 53 -d 172.20.8.1 -j ACCEPT
Šis izņēmums ir diagnostisks, nevis politika. Ja piegādātāja noteikums ir apzināts, atbalstītais labojums ir konfigurēt klientu atļaut šo risinātāju un reģistrēt lēmumu, jo ievietots noteikums nepārdzīvos nākamo klienta atjauninājumu.
Kāpēc noplūdes lapa pierāda mazāk, nekā šķiet
Ko rāda noplūdes testa lapa, ir risinātājs, kas runāja ar testa operatoru, nevis tas, kuru konsultēja jūsu mašīna. Vietējais pārsūtītājs, kas rekursē uz āru, liek savu izejas adresi šajā lapā, un šifrēti vaicājumi var atstāt lapu pilnīgi tukšu. Abi rezultāti tiek lasīti nepareizi, viens kā noplūde un otrs kā garantija, un neviens no lasījumiem neizriet no novērojuma.
Aizstāvamais pierādījums ir ieraksts: saskarne, galamērķa adrese, atbilde un laika zīme. Paņemiet vienu pirms tuneļa pacelšanas un vienu pēc tam, un salīdziniet tos nākamreiz, kad nosaukums neizdodas. Šis pāris arī pasaka nākamajam cilvēkam, vai kļūda bija atrisināšanā, maršrutēšanā vai paša risinātāja piekļuves politikā.