VPN kill switch 53-портты бөгеттегенде DNS шешілмейді
Kill switch DNS-ті әдейі бөгеттеуі мүмкін. Тек туннель ішіндегі шешімді жергілікті resolver ерекшелігімен салыстырып, қай қабат шынымен істен шыққанын анықтаңыз.
Kill switch туннельді құлатқанда DNS жолын да өзімен бірге алып кетеді, ал артта қалған resolver сіз күткен нәрсе бола бермейді. Екі дизайн бұл сәтке мүлдем басқаша қарайды: туннель ішінде жоқ әрбір DNS пакетін бөгеттеу, немесебір resolver-ді ерекшелік ретінде қалдыру. Екеуі де қорғауға болады. Браузер қосымшасынан симптомдар бірдей көрінеді, сондықтан бірінші міндет — қай дизайнды іс жүзінде орналастырғаныңызды анықтау.
Бұл айырмашылықты көз алдымда ұстаймын, өйткені түзету екі жағдайда да қарама-қарсы. Бір дизайнға кеңірек ерекшелік керек, екіншісіне тарырақ. Болжау сізге не құпиялылықты, не жарты күнді қымбатқа түсіреді.
Бір ақауға арналған екі DNS дизайны
A дизайны resolver-ді туннельдің артындағы қатардағы қызмет ретінде қарастырады. Firewall ережелері UDP және TCP 53-ке тек туннель интерфейсінде рұқсат береді, ал клиентке берілетін мекенжай — туннель ішіндегі resolver. Туннель құлағанда іздеулер тоқтайды, және бұл ақау емес, көзделген нәтиже.
B дизайны resolver-ді жергілікті желіде қолжетімді ұстайды, әдетте 192.168.1.1 мекенжайындағы роутер немесе 127.0.0.53 мекенжайындағы операциялық жүйе stub-ы, атауларды шешу туннельмен бірге өлмеуі керек деген уәжбен. Үй LAN-ында бұл қолайлы, онда роутер бүкіл үй үшін шешеді. Қонақүй немесе әуежай Wi-Fi-ында сол ерекшелік басқа біреудің серверіне сілтейді, және сіз теретін әрбір атау жария болады, веб-трафигіңіз бөгеттелген күйде қалса да.
Шекара — resolver кімдікі екенінде. Жергіліктісіне сенсеңіз, ерекшелік кішкентай әрі адал тесік. Сенбесеңіз, тек туннельдік дизайн ғана ұстап тұрады, ал бағасы — құлаған туннель барлық атауды өзімен алып кетеді.
VPN клиентінің өз іздеуі неге әлі жұмыс істейді
Клиент туннель пайда болмай тұрып шлюздің хост атауын шешуі керек, сондықтан қатаң бөгет клиенттің жүктелу жолын жаппауы тиіс. Клиенттердің көбісі не соңғы нүкте мекенжайын кэштейді, не сол бір хост үшін құжатталған жүктелу ерекшелігін ұсынады. Егер ережелер жинағы сол іздеуді бөгеттесе, туннель ешқашан қайтпайды және журналдар өз серверіне жете алмайтын клиентті көрсетеді; бұл DNS емес, саясат ақауы.
Бөлінген DNS — бұл көрінетін екінші орын. Клиент ішкі аймақты жеке resolver-ге итереді, қалғанын жүйелік resolver-ге қалдырады. Құлағаннан кейін жария атаулар әлі шешілуі мүмкін, ал ішкі атаулар уақыт шегіне жетіп сәтсіз болады, өйткені жеке аймақта маршрут қалмаған. Пайдаланушы үшін бұл "VPN интернетті бұзды"; resolver журналы үшін бұл ешқашан жетпеген сұрау.
systemd-resolved астында бөлінуді тікелей көре аласыз.resolvectl statusәрбір байланыстың DNS серверлері мен маршруттау домендерін тізіп береді, және туннель түскеннен кейін ішкі домен енді жоқ байланыстағы серверге сілтеуді жалғастырады. 127.0.0.53 мекенжайындағы stub сұрауды әлі қабылдайды, содан кейін жауап бермейтін жоғарғы ағынды күтеді, сондықтан ақау бірден қайтудың орнына бірнеше секунд алады.
Шифрланған DNS пакет сүзгісін айналып өтпейді
DNS over HTTPS пен DNS over TLS 443 және 853 порттарында жүреді, сондықтан 53-портты бөгеттейтін ереже олар туралы ештеңе айтпаған. "DNS"-ті порт бойынша бөгеттеу — порт туралы саясат, атауларды шешу туралы емес. Егер kill switch туннель сыртындағы барлық трафикті бөгеттесе, DoH кездейсоқ қамтылады. Егер captive portal немесе жария resolver үшін рұқсат бөлсеңіз, қамтылмайды.
Клиент жағындағы басқару — арзанырақ тұтқа. Firefox өзінің DoH resolver-ін канарейка атауыuse-application-dns.netшешілмегенде тастайды, сондықтан басқарылатын желілер сол доменді NXDOMAIN ретінде жариялайды; кәсіпорын саясаты оны өшірулі күйде бекіте алады. Android Private DNS пен Chrome-ның қауіпсіз DNS-інің өз ажыратқыштары мен өз әдепкілері бар. Оларды өшіру resolver мекенжайларының соңынан қуғаннан сенімдірек, өйткені мекенжайлар тізімі өзгереді, ал ережелер жинағыңыз өзгермейді.
Бұның ағып кетуге мүлдем қатысы жоқ нұсқасы да бар. Бекітілген resolver-і бар қолданбаға оған жету үшін желілік жол керек. Шифрлау сұрауды кім оқи алатынын өзгертеді, пакеттің машинадан шыға алатынын емес, сондықтан бүкіл құрылғыны бөгеттеу параметрге тиіспей-ақ оны жеңеді.
Симптомды қабатқа сәйкестендіріңіз
Есептердің көбісі бір сөйлем болып келеді, және сол сөйлем әдетте қабатты атап та кетеді. Төмендегі кесте — ережеге тиіспес бұрын мен қарап шығатын нәрсе; мақсат — сұрау бөгеттелді ме, қате бағытталды ма, әлде мүлде жіберілмеді ме, соны шешу.
| Symptom | Likely layer | First check |
|---|---|---|
| Every name fails at once, instantly | Resolver answering with a refusal | Query the resolver by address, not by name |
| Lookups hang for seconds, then time out | Packets dropped with no response | Watch port 53 on the physical link |
| Public names resolve, internal ones do not | Split-DNS routing domain | Per-link DNS servers on the tunnel |
| Names resolve, the page still fails | Not DNS: routing or MTU | Connect to the IP directly |
| Only one application fails | Pinned resolver or cached answer | Check that app's DNS setting |
Алғашқы екі жол — адамдар қате диагностикалайтын тұстар. Тыныш құлау мен бас тарту браузерде бірдей "DNS бұзылды" болып көрінеді, бірақ олардың тек біреуі ғана kill switch өз жұмысын істеп жатқанын білдіреді. Бас тарту біреу жауап берді дегенді білдіреді, сондықтан бөгет сіз ойлаған жерде емес.
Resolver саясатын қалпына келтіріңіз, сосын дәлелдеңіз
Дизайнды түзетіңіз, симптомды емес. Тек туннель ішінде шешу үшін туннель интерфейсінде 53-ке рұқсат беріңіз, ішкі resolver-ді туннель конфигурациясымен бірге жіберіңіз және физикалық байланысты ешқандай DNS рұқсатынсыз қалдырыңыз. wg-quick-те resolver-ді интерфейс конфигурациясына жазатын жолDNS =сол, сондықтан оны өткізіп жіберген туннель ескі resolver-ді орнында қалдырады және әрбір сұрау қате жолға түседі.wg-quick нұсқаулығыбұл әрекетті әр платформа үшін құжаттайды.
Содан кейін осы ретпен тексеріңіз. Linux-таresolvectl statusбелсенді байланысты көрсетеді,dig +short example.comжария атауды тексереді,dig @10.8.0.1 internal.example.comжекесін тексереді, алsudo tcpdump -ni any port 53екеуін де іске қосқанда пакеттер қай интерфейсті қолданатынын көрсетеді. Windows-таGet-DnsClientServerAddress -AddressFamily IPv4жәнеResolve-DnsName example.comсол екі фактіні береді: кім конфигурацияланған және кім жауап береді.
Теріс тестімен аяқтаңыз. Туннельді ажыратыңыз, жаңа жария атаудың сәтсіз болатынын растаңыз, жеке атаудың сәтсіз болатынын растаңыз және53-порттың ешбір пакеті физикалық адаптерден шықпағанын растаңыз. Тек кэштелінген жауаптарға ғана төтеп беретін бөгет мүлдем төтеп бермейді.
Билетті жаппас бұрынғы тексеру тізімі:
- Ақау кезінде қолданылған resolver — саясат көздеген сол.
- Клиенттің өз соңғы нүктесін іздеуі әлі рұқсат етілген, кэш немесе ерекшелік арқылы.
- DoH пен DoT не бөгетпен қамтылған, не саясатпен өшірілген.
- Туннель кеткен соң жеке аймақтар ашық емес, жабық күйде сәтсіз болады.