Повежете тунел, отворите приватну контролну таблу и име се разреши у адресу коју никада нисте видели. Или се деси супротно: прегледач настави да ради док алат командне линије одједном не разреши ништа. Оба резултата долазе од исте промене, а људи то обично објашњавају једном реченицом о VPN-у који „користи свој DNS“, што није довољно прецизно за отклањање грешака или проверу. У тој реченици крију се два питања: које упите треба да преузме овај профил и да ли је ваш рачунар заиста послао те упите резолверу који му је додељен? Њихово раздвајање је цела метода, јер тест који их меша даје самоуверен погрешан одговор у оба смера.

Зашто профил уопште даје резолвер

Унутар тунела, имена иза далеког краја обично се разрешавају у адресе које постоје само у тој мрежи. Приватна зона као corp.internal нема јавно делегирање, па резолвер који је опслужује мора бити доступан из унутрашњости тунела. Исти механизам служи и другом циљу: када би упити иначе изашли преко вашег провајдера, резолвер на далекој страни задржава упит унутар шифроване путање. Зато адреса DNS сервера долази као део политике везе, а не као глобално подешавање које сте једном изабрали за рачунар.

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

Упоредите два дизајна пре него што упоредите одговоре

Пун тунел и подељени DNS дају супротна очекивања и ниједно од њих није квар. Под пуним тунелом сваки упит може прећи на провајдера или на корпоративни резолвер, па је различит одговор јавних имена после повезивања очекиван. Под подељеним DNS-ом само наведени домени иду на приватни резолвер, док све остало остаје локално; у Windows-у листа домена живи у Name Resolution Policy Table, у macOS-у у одговарајућим доменима DNS подешавања, а на систему са systemd-resolved у доменима рутирања по вези.

Управо то поређење треба прво направити, јер оно одлучује шта се рачуна као грешка. Код подељеног DNS-а, јавно име које одговара са новог резолвера је оно што вреди истражити, док је интерно име које исправно одговара систем који ради свој посао. Код пуног тунела, аномалија је јавно име које и даље одговара са резолвера вашег провајдера. Документација Microsoft-а о разрешавању имена VPN-а описује Windows редослед ових правила, укључујући како се одговарајући унос политике разматра пре сопствених сервера адаптера.

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

Забележите основну линију са само једном променљивом

Промените тунел. Не мењајте у истом кораку и име, алат или суфикс претраге. Изаберите име за које смете да упитате, забележите који сте програм користили и запишите или враћену адресу или тачну грешку. У Windows-у Get-DnsClientServerAddress -AddressFamily IPv4 штампа сервере по адаптеру, а Get-DnsClientNrptPolicy штампа уносе политике; у Linux-у са systemd-resolved resolvectl status приказује DNS сервере и домене рутирања по вези; у macOS-у scutil --dns штампа редослед резолвера који ће систем заиста следити.

Затим се повежите преко уобичајених контрола клијента и поновите потпуно исте команде. Сачувајте први излаз уместо сећања на њега, јер је поређење цео смисао, а друго читање узето после пражњења кеша већ је друго мерење. Ако је основна линија узета са прегледачем напред, а извршавање после повезивања се одвија у терминалу, поредите два резолвера, а не два стања једног резолвера.

Експлицитан упит и претрага програма су различити тестови

Питати један одређени сервер, са nslookup name 10.20.0.1 или dig @10.20.0.1 name, доказује једну ствар: да сервер који сте навели одговара када можете да га достигнете. То потпуно заобилази логику избора, па не може да каже да ли би систем изабрао тај сервер за ово име. Користите га да проверите да ли је додељени резолвер доступан, а не користите га за проверу политике.

Претрага преко локалног резолвера заиста примењује избор. resolvectl query name пролази кроз иста правила домена рутирања и извештава који протокол је одговорио, Resolve-DnsName у Windows-у пролази кроз табелу политике и кеш клијента, а scutil --dns приказује редослед који би претрага следила. Покрените оба типа и држите их у одвојеним колонама својих белешки. Успешан експлицитан упит поред неуспешне претраге програма је проблем рутирања или избора, а не резолвер који одбија да ради.

Кеш стоји између вас и одговора. Оперативни систем, локални stub резолвер, прегледач и негативни кеш сви држе резултате, па претрага може успети без иједног пакета који напусти рачунар. Забележите резултат пре него што било шта очистите: ipconfig /flushdns, resolvectl flush-caches или sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder у macOS-у. Прескочите широко ресетовање мреже у овој фази, јер уништава доказе које још прикупљате.

Шта разлика значи

Упоредите два забележена реда и класификујте промену пре него што додирнете иједно подешавање.

Observation after connectMost likely causeNext step
Answer moves to a private address rangeExpected under split DNS or a private zoneConfirm the suffix is in the effective policy, then test the service
Lookup times out while connected, works after disconnectThe assigned resolver has no route from this machineProbe it with an explicit query, then re-read the policy
Internal name fails, public names workWrong namespace or a suffix missing from the policyQuery the fully qualified name and check the domain list per platform
Internal name returns a public addressSplit DNS not applied; a public resolver answeredCheck browser secure DNS first, then the per-link domain list

Један ред заслужује нагласак. Име које се разреши није услуга која ради, а успех DNS-а каже само да је адреса пронађена. Не каже ништа о прослеђивању, правилима заштитног зида или о томе да ли ваш налог уопште сме да користи услугу, па завршите тестирањем стварног програма уместо претпоставке да се квар сам повукао.

Вратите основну линију и проверите је

Искључите се преко сопствених контрола клијента уместо да убијете процес, затим поново прочитајте исте три команде. Сервери по вези, уноси политике и одговор за ваше тест име треба да се врате на основну линију коју сте раније записали. Преостали унос политике после чистог искључивања је стварна грешка коју вреди забележити, и управо зато су ручне измене генерисаног фајла резолвера лоша навика: фајл се преписује и измена нестаје, или измена опстане и прикује резолвер који више нема руту.

Прођите кроз ову листу једном, по реду. Одлучите који дизајн профил примењује пре него што оцените било који резултат. Држите име, алат и суфикс фиксним у оба покретања. Одвојте експлицитан упит од претраге програма. Читајте ефективну политику, не само одговор. Очистите кешеве на крају, пошто је поређење записано. Проверите стварним програмом, затим једном поново покрените и потврдите да је искључено стање и даље чисто.

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