Сиз /etc/hosts файлына ат коштуңуз, VPN'ге туташтыңыз жана жазуу бардыгына көрүнөт деп күттүңүз. Андай болбойт, жана таң калуу адатта экинчи симптом менен келет: ат сиздин машинаңызда чечилет, кесиптешиңиздин машинасында чечилбейт, бул бузулган VPN DNS кызматына окшошот, бирок чындыгында hosts файлы так ошол үчүн жасалган ишти аткарып жатат. hosts файлы — жергиликтүү ат чечүү конфигурациясы, зона жаңыртуу эмес, жана кадимки VPN туташуусунда эч нерсе аны жүктөбөйт.

Hosts — жергиликтүү басып жазуу, зона жаңыртуу эмес

Файл — ат кызматынын китепканалары DNS серверинен сураганга чейин же анын ордуна кайрылган дал келүүлөрдүн тизмеси. 10.40.0.20 build.corp.example сыяктуу сап ошол бир машинадагы колдонмолор кандай тыянак чыгарарын өзгөртөт. Ал жазуу түзбөйт, туннелден өтпөйт, жана туннель көрсөткөн DNS сервери анын бар экенин билбейт.

Ошондуктан ийгиликсиздик асимметриялуу. Сиздин кардарыңыз файлдан жооп алат. Башка кардар VPN'дин DNS серверинен сурайт, ал эч нерсе кайтарбайт, жана колдонмо ат жок экенин билдирет. Эки машина тең туура жүрүм-турум көрсөтүп жатат; бирөөндө гана экинчиси эч качан көрбөгөн басып жазуу бар.

Эки буйрук, эки башка компонент

Бул талашты токтотуунун эң тез жолу — айырмачылыкты эки буйрукта көрүнүктүү кылуу, экөө тең hosts жазуусу бар кардарда аткарылат:

getent ahosts build.corp.example
dig @10.40.0.53 build.corp.example A

Биринчиси системанын өзүнүн издөө жолунан сурайт, ал кадимки glibc системасында DNS'тен мурун жергиликтүү файлдарды окуйт. Экинчиси DNS суроосун түз ошол даректеги серверге жөнөтөт жана жергиликтүү файлдарга таптакыр кайрылбайт. Биринчиси сиздин жазууңузду кайтарса, экинчиси NXDOMAIN кайтарса, сиз жазуу DNS'те жок экенин жана машинаңыз жергиликтүү басып жазуудан жооп берип жатканын далилдедиңиз.

Тартип конфигурацияланат, жана белгилүү бир дистрибутив жөнүндө кандайдыр бир тыянак чыгарганга чейин аны текшерүүнүн пайдасы бар. /etc/nsswitch.conf ичиндеги hosts: сабын караңыз; hosts: files dns адегенде файлдарга кайрылат. Тартипти өзгөртүү үчүн гана бул мисалды иштеп жаткан конфигурацияга көчүрбөңүз, анткени чыныгы системалар мисалда жок кошумча булактарды жана шарттуу кызмат жазууларын көп көрсөтүшөт.

systemd-resolved тестти бүдөмүктөйт

systemd-resolved колдонгон системада жергиликтүү stub hosts маалымат базасынан да аттарды тейлейт. Ошондуктан 127.0.0.53'ге суроо жасоо алыскы сервердин көз карандысыз тести эмес, ал DNS суроосуна окшошуп, ошондой эле жүрүм-турум көрсөтсө да. Resolver эмнени билерин жана кайсы серверлерден сурарын сиз мындайча текшере аласыз:

resolvectl query build.corp.example
resolvectl status

status чыгарылышы ар бир байланыш үчүн DNS серверлерин атайт, жана ошентип VPN байланышы resolver алдыбы же жокпу билесиз. Бул суроо hosts жазуусунан өзүнчө жана жеке ат бир адамга эмес, бардык колдонуучуга чечилбегенде ушуну суроонун пайдасы бар.

Колдонмолор дагы бир катмарды кошо алат. Өз DNS-over-HTTPS жөндөөсү бар браузер, өз resolver конфигурациясы бар контейнер же процесстин бүт өмүрү бою издөөлөрдү кэштеген аткаруу чөйрөсү системадан башкача жооп бере алат. Бир буйрук машинадагы ар бир программаны сүрөттөйт деп ойлоонун ордуна сизге маанилүү болгон колдонмону сынап көрүңүз.

VPN аркылуу атты чындыгында эмне бөлүшөт

Эгер жеке ат бардыгы үчүн иштеши керек болсо, ага бардык адамдын resolver'ы жете ала турган ээ керек. Таза жооп — жазууну башкарылуучу зонада жарыялоо жана ошол зонаны VPN'дин көздөлгөн DNS жолу аркылуу чечилүүчү кылуу. Ошондо жазуунун бир гана чындык булагы, аудит изи жана жашоо циклы бар болот, жана эч ким кайсы ноутбукта жергиликтүү басып жазуу бар экенин эстеши керек эмес.

hosts файлдарын таратуу — мыйзамдуу альтернатива, жана бул ат кызматы эмес, акыркы чекиттерди башкаруу. Эгер аны тандасаңыз, файлды флотту башкарган нерсе жайгаштырышы, версиялашы жана жок кылышы керек, жана долбоордо так ушундай сүрөттөлүшү керек. «VPN муну чечет» — бул процесстин сүрөттөмөсү эмес.

Динамикалык DNS каттоо — үчүнчү механизм, анын өз укуктары, жаңыртуу аутентификациясы жана жазуунун жашоо мөөнөтү бар. Ал hosts жазуусунан келип чыкпайт, жана кардардын жөн гана туташуусунан да келип чыкпайт, эгер сервер менен кардар экөө тең буга конфигурацияланбаса. Өзүнөн өзү пайда болгон жазуу — бирөө коопсуз жаңыртууларды күйгүзгөнүнүн жана кардар өзүн каттап жатканынын белгиси, жана бул конфигурация көйгөйлөрдү чечүү темасында эмес, долбоор жазуусунда болушу керек. Эгер бул жөндөөнүн ээсин эч ким атай албаса, автоматтык жазууну текшерилбеген деп эсептеңиз жана башкарылуучу зонаны чындык булагы катары кармаңыз.

Чечилген ат — маршрут эмес

Аттарды чечүү жана жеткиликтүүлүк өзүнчө нерселер, жана эскирген жергиликтүү дал келүү аларды алмаштыруунун классикалык жолу. Көчүп кеткен дарекке көрсөткөн hosts жазуусу DNS оңдолгондон көп убакыт өткөндөн кийин да эскирген хостту тандоону улантат, жана симптом жакшы чечилген аттагы маршруттоо катасына окшошот.

Ошондуктан баяндама «ат чечилет, бирок кызмат жеткиликсиз» десе, системалык издөөнү VPN'дин DNS серверине ачык суроо менен салыштырыңыз, анан алган даректи кызмат чындыгында колдонгон дарек менен текшериңиз. systemd-resolved шилтемеси ал кайрылган жергиликтүү булактарды документтештирет, жана бул салыштыруу үчүн керек болгон карта ошол.

Анан басып жазуды анын ээси аркылуу оңдоңуз. Өз hosts файлыңыздан бир сапты алып салуу жайгаштыруу скриптинен ошол эле сапты алган он эки ноутбукка эч нерсе кылбайт, жана адамдарда чындыгында ушул көйгөйдүн ушул версиясы бар.

Тектеш макалалар