Ar jūsų VPN DNS tikrai naudojamas? Sugaukite 53 prievadą ir pažiūrėkite
Stumiamas DNS parametras nėra užklausos kelias. Pažiūrėkite, ką laiko sąsaja, stebėkite užklausos išėjimą ir nustokite pasitikėti nuotėkio testo puslapiu kaip įrodymu.
Paklauskite daugumos, ką VPN klientas daro su DNS, ir jie pasakys, kad jis nustato sprendiklį, todėl užklausos keliauja tunelio viduje. Stūmimas yra tikras; prielaida, kad jis tampa užklausa, ne. Tarp stumiamo parametro ir paketo ant laido stovi trys etapai, ir kiekvienas nepavyksta savarankiškai taip, kad viskas atrodo kaip sugedęs DNS serveris. Todėl nuotėkio testo puslapis ir veikianti naršyklė gali nesutarti dėl tos pačios mašinos tuo pačiu metu.
Stumiamas parametras nėra užklausa
Pirmas etapas – serveris siūlo nustatymus, pavyzdžiui, stumiamą DNS parametrą, nurodantį sprendiklį tunelio viduje. Antras etapas – klientas taiko tuos nustatymus sąsajai. Trečias etapas – programa iš tikrųjų siunčia užklausą tuo adresu. Antro etapo nesėkmė palieka parametrą matomą ryšio žurnale, o sprendiklių sąrašas lieka nepakitęs, o trečio etapo nesėkmė palieka visiškai teisingą sprendiklių sąrašą nenaudojamą.
Dauguma trikčių šalinimo sujungia tuos tris į vieną ir kaltina VPN serverį, kuris paprastai yra vienintelė šalis, galinti įrodyti atlikusi savo dalį. Verčiau perskaitykite tikrąją kliento sprendiklio būseną, tada stebėkite, kaip viena užklausa išeina. Tie du stebėjimai atskiria konfigūraciją nuo maršrutizavimo ir nuo politikos, ir jie kainuoja apie penkias minutes. Išsaugokite įrašus, nes kitas inžinierius nori prieš ir po, o ne jų aprašymo.
Patikrinkite, ką sąsaja iš tikrųjų laiko
Linux sistemos sprendiklis gali būti paprastas failas, NetworkManager arba systemd-resolved, ir tai, kuris jų jį valdo, lemia, kur nusileis stumiamas serveris. Komandinės eilutės OpenVPN procesas pats neatnaujina sistemos sprendiklio, todėl dokumentuota integracija yra up/down scenarijus arba ryšių tvarkyklė, kuri jau moka taikyti nustatymus. Abiejų paleidimas yra efektyvus būdas sukurti lenktynes.
resolvectl status
cat /etc/resolv.conf
Windows sąrašas yra pagal adapterį, todėl tunelio adapteris gali laikyti vidinius serverius, o fizinis adapteris išsaugo vietinius ir laimi kai kuriems vardams. Lyginkite abu adapterius, o ne tą, kurį manote esant aktyvų.
Sekite vieną užklausą už mašinos ribų
Vienu metu fiksuokite abi sąsajas, tada išspręskite vieną vardą, kuris turėtų naudoti vidinį sprendiklį. Ta įrašų pora atsako į tai, į ką negali atsakyti jokia konfigūracijos išvestis.
sudo tcpdump -ni tun0 port 53
sudo tcpdump -ni any port 53
Užklausa, kuri pasirodo fizinėje sąsajoje ir niekada tunelyje, reiškia, kad klientas pasirinko netinkamą sprendiklį. Užklausa, kuri nepasiršto nė vienoje, reiškia, kad programa atsakė iš podėlio, paklausė loopback klausančio stub, arba naudojo šifruotą sprendiklį, kurio srautas niekada nepasrodo kaip 53 prievadas. Fiksuokite ir atsakymus, ne tik užklausas, nes užklausa, išeinanti per tunelį su atsakymu iš viešo adreso, yra kitokia gedimas nei visai neateinantis atsakymas.
Ugniasienė, kuri priima tik savo DNS
Komerciniai klientai kartais įdiegia savo filtravimo grandines. Vienas dokumentuotas šablonas leidžia DNS į kliento nuosavą sprendiklį ir išmeta visą likusį UDP srautą 53 prievade, kuris bando palikti ne loopback sąsają, įskaitant srautą, kurį vartotojas sąmoningai nukreipė kitur. Demono užklausos dingsta be pėdsakų, o tai skaitoma kaip sprendiklio gedimas, o ne filtras.
sudo iptables -S OUTPUT
sudo iptables -S | grep -i -E 'dns|53'
Jei išmetimo taisyklė vertinama prieš jūsų išimtį, pridėta taisyklė niekada nepasiekiama, todėl įterpkite ją į pirmą poziciją ir apribokite paskirties vietą sprendikliu, kurį iš tikrųjų turite omenyje.
sudo iptables -I OUTPUT 1 -p udp --dport 53 -d 172.20.8.1 -j ACCEPT
Ta išimtis yra diagnostinė, o ne politika. Jei tiekėjo taisyklė yra sąmoninga, palaikomas taisymas yra sukonfigūruoti klientą leisti tą sprendiklį ir užfiksuoti sprendimą, nes įterpta taisyklė neišgyvens kito kliento atnaujinimo.
Kodėl nuotėkio puslapis įrodo mažiau, nei atrodo
Ką rodo nuotėkio testo puslapis, tai sprendiklis, kuris kalbėjo su testo operatoriumi, o ne tas, kurio klausė jūsų mašina. Vietinis peradresuotojas, kuris rekursyviai eina į išorę, padeda savo išėjimo adresą tame puslapyje, o šifruotos užklausos gali palikti puslapį visiškai tuščią. Abu rezultatai perskaitomi neteisingai, vienas kaip nuotėkis, kitas kaip garantija, ir nė vienas skaitymas neišplaukia iš stebėjimo.
Apginamas įrodymas yra įrašas: sąsaja, paskirties adresas, atsakymas ir laiko žyma. Paimkite vieną prieš tuneliui pakylant ir vieną po to, ir palyginkite juos kitą kartą, kai vardas nepavyks. Ta pora taip pat pasakys kitam žmogui, ar gedimas buvo sprendime, maršrutizavime, ar paties sprendiklio prieigos politikoje.