Када kill switch обори тунел, са собом односи и путању DNS-а, а resolver који остане ретко је онај који очекујете. Два дизајна тај тренутак третирају веома различито: блокирати сваки DNS пакет који није у тунелу, или оставити један resolver да стоји као изузетак. Оба су одбрањива. Из језичка прегледача симптоми изгледају скоро исто, зато је први задатак утврдити који дизајн сте заиста применили.

Држим ту разлику пред очима јер је исправка у сваком случају супротна. Један дизајн захтева шири изузетак, други ужи. Погађање вас кошта или приватности или поподнева.

Два DNS дизајна за исти прекид

Дизајн A третира resolver као још једну услугу иза тунела. Правила заштитног зида дозвољавају UDP и TCP 53 само на интерфејсу тунела, а адреса која се даје клијенту је resolver унутар тунела. Када тунел падне, претраге се заустављају, и то је намеравани резултат, а не квар.

Дизајн B држи resolver доступним у локалној мрежи, обично рутер на 192.168.1.1 или системска stub адреса на 127.0.0.53, са образложењем да разрешавање имена не треба да умре са тунелом. То је згодно у кућној LAN мрежи где рутер разрешава за целу кућу. На Wi-Fi-ју хотела или аеродрома исти изузетак показује на туђи сервер, и свако име које откуцате бива откривено, иако ваш веб-саобраћај остаје блокиран.

Граница је чији је resolver. Ако верујете локалном, изузетак је мала и искрена рупа. Ако не, дизајн само кроз тунел једини је који се држи, а цена је да оборен тунел односи сва имена.

Зашто сопствена претрага VPN клијента и даље ради

Клијент мора да разреши име домаћина мрежног пролаза пре него што тунел постоји, зато строга блокада не сме да покрије путању покретања клијента. Већина клијената или кешира адресу крајње тачке или доставља документован изузетак за тај један домаћин. Ако ваш скуп правила блокира ту претрагу, тунел се никада не враћа и дневници показују клијента који не може да стигне до сопственог сервера, што је дефект политике, а не DNS-а.

Подељени DNS је друго место где се ово појављује. Клијент гура интерну зону ка приватном resolver-у, а све остало оставља системском resolver-у. После пада јавна имена могу још да се разрешавају, док интерна истичу, јер приватна зона више нема путању. За корисника је то "VPN је покварио интернет"; за дневник resolver-а то је упит који никада није стигао.

Под systemd-resolved поделу видите директно. resolvectl status приказује DNS сервере по вези и домене рутирања, и пошто тунел падне, интерни домен наставља да показује на сервер на вези која више не постоји. Stub на 127.0.0.53 још прихвата упит, затим чека на узводни сервер који неће одговорити, и зато квар траје секундама уместо да се одмах врати.

Шифровани 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 и безбедни DNS у Chrome-у имају своје прекидаче и своје подразумеване вредности. Њихово искључивање је поузданије од јурења за адресама resolver-а, јер се листа адреса мења, а ваш скуп правила не.

Постоји верзија овога која уопште није о цурењу. Апликација са закаченим resolver-ом и даље захтева мрежну путању да би до њега стигла. Шифровање мења ко може да прочита упит, а не да ли пакет може да напусти машину, зато блокада за цео уређај побеђује подешавање без да га дотакне.

Повежите симптом са слојем

Већина пријава стиже као једна реченица, и та реченица обично већ именује слој. Табела испод је оно што прођем пре него што дотакнем правило; циљ је да одлучим да ли је упит блокиран, погрешно усмерен или никада послат.

SymptomLikely layerFirst check
Every name fails at once, instantlyResolver answering with a refusalQuery the resolver by address, not by name
Lookups hang for seconds, then time outPackets dropped with no responseWatch port 53 on the physical link
Public names resolve, internal ones do notSplit-DNS routing domainPer-link DNS servers on the tunnel
Names resolve, the page still failsNot DNS: routing or MTUConnect to the IP directly
Only one application failsPinned resolver or cached answerCheck that app's DNS setting

Прва два реда су она која људи погрешно дијагностикују. Тихо падање и одбијање у прегледачу изгледају исто као "DNS се покварио", али само једно од њих значи да ваш kill switch ради свој посао. Одбијање значи да је нешто одговорило, зато блокада није тамо где мислите.

Вратите политику resolver-а, па је докажите

Поправите дизајн, не симптом. За разрешавање само кроз тунел дозволите 53 на интерфејсу тунела, гурните интерни resolver уз конфигурацију тунела и оставите физичку везу без икакве DNS дозволе. У wg-quick-у линија DNS = је она која уписује resolver у конфигурацију интерфејса, зато тунел који је изостави оставља стари 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 су или покривени блокадом или искључени политиком.
  • Приватне зоне отказују затворено, не отворено, чим тунел нестане.

Повезани чланци