VPN-ді ажыратасыз, ping 1.1.1.1 әлі жауап береді, және парақ ақыры бас тартқанша әр атау сұрауы ілініп тұрады. Содан кейін cat /etc/resolv.conf тек туннельдің ішінде ғана болған атау серверін көрсетеді, әдетте тізімде бірінші. Сол жолды жою шамамен он минутқа түзеткендей көрінеді, содан кейін ұйқы, Wi-Fi роумингі немесе қайта жүктеу оны қайтарады. Сіз өңдеген файл баптау емес; ол басқа құрамдасқа тиесілі сілтеме күйінің бейнесі.

Неге бір ескірген жазба әр сұрауға секундтар тұрады

glibc шешушісі атау серверлерінің тізімін ретімен жүреді және келесісін сынамас бұрын тайм-ауттың бітуін күтеді, ал resolv.conf(5) бұл тізімді үш жазбамен шектейді. Туннель жоғалғаннан кейін 10.8.0.1 сияқты туннель жақ шешушісін тізімнің басына қойыңыз, сонда әр сұрау жауап беретін серверге өтпес бұрын тайм-аутты төлейді. Симптомның DNS қатесі емес, өлі байланыс болып көрінуінің себебі осы: браузерлер бөгеледі, уақыты бітеді және кейде кейін ескіретін кэштелген мекенжайды ұсынады.

Бұл шағымның неге «интернет бұзылды» деп келетінін де түсіндіреді. IP мекенжайға ping сілтеменің дұрыс екенін дәлелдейді, бұл ақаулықты қолданбаның кінәсіндей көрсетеді. Шешушілер тізімі — ең алдымен оқылатын және ең соңында өңделетін нәрсе.

Аңыз: resolv.conf — баптаулар файлы

Өзгертер алдында бұл жолдың шын мәнінде не екенін сұраңыз:

ls -l /etc/resolv.conf
readlink -f /etc/resolv.conf

systemd-resolved бар хостта бұл 127.0.0.53-ке сілтейтін stub файлына символдық сілтеме, ал нақты серверлер resolvectl шығаратын әр сілтеме күйінде тұрады. NetworkManager бар хостта бұл NetworkManager белсенді қосылымнан жазатын файл болуы мүмкін. Кейбір өндіруші клиенттерінде бұл қосылғанда сол жерде қайта жазылатын және сәтсіз болсаңыз, ажырағанда ешқашан қалпына келтірілмейтін қарапайым файл. Бұлар үш түрлі иелер, ал алғашқы екеуін қолмен өңдеу не ештеңе істемейді, не келесі желілік оқиғаға дейін ғана сақталады.

resolvectl status — шындықты айтатын көрініс: әр сілтеме бойынша DNS серверлері, маршруттау домендері және туннель сілтемесінің әлі бар-жоғы. resolvectl query example.com әрі қарай жүріп, қай интерфейс жауап бергенін көрсетеді. Файлға тиіспес бұрын екеуін де қолданыңыз, және өз қауіпсіз DNS-і бар браузер осының бәрін елемейтінін есте сақтаңыз.

Бірдеңені өңдеуден бұрын иесін табыңыз

Әдетте үш құрамдас бір баптау үшін бәсекелеседі: systemd-resolved, NetworkManager және VPN клиенті орнатқан нәрсе. Алдымен тірісін анықтаңыз:

systemctl is-active systemd-resolved
nmcli connection show --active
ps aux | grep -E "openvpn|wg-quick|vpn"

Егер resolved белсенді болса және символдық сілтеме оның stub-ына сілтесе, жаһандық файл — жасалған шығыс, ал сіздің өңдеуіңіз сыртқы ғана. Егер қосылымды NetworkManager иеленсе, серверлер қосылым профиліне тиесілі, сондықтан түзету — файл өңдеу емес, nmcli қасиетін өзгерту. Егер өндіруші демоны жұмыс істеп тұрса, келесі қосылымнан тек оның өз қалпына келтіру жолы аман қалады.

Клиент қалдырған сілтеме күйін тазалаңыз

Өлтірілген клиент өзінің тазалау ілгегін іске қоса алмайды. SIGKILL мүлдем ұсталмайды, ал SIGINT мен SIGTERM ұсталады, сондықтан мәжбүрлі өлтіруден кейін «жай тоқтаған» туннель көбінесе интерфейс тіркелімін де, шешуші жазбасын да орнында қалдырады. Нақты PID-ті тауып, сигналды тек соған жіберіңіз:

ps aux | grep -E "openvpn|wg-quick"
sudo kill <pid>
resolvectl revert tun0

Толық сәйкестік тізімін оқымайынша pkill -f vpn немесе killall vpn-ге қол созбаңыз. -f бүкіл пәрмен жолымен сәйкестенеді, сондықтан ол қаптама скриптін, редактор сессиясын немесе жолында сол жол бар байланыссыз процесті тоқтатуы мүмкін. Жұмыс ортасында қате процесті тоқтату — шешуші мәселесінің жоғалған файлға айналу жолы.

resolvectl revert осы сілтеменің орындалу уақытындағы DNS конфигурациясын қайта орнатады, бұл шешушіні қайта іске қосудан тар және жаһандық файлды өңдеуден әлдеқайда тар. Егер туннель сілтемесі толығымен жоғалса, systemctl restart NetworkManager қосылым күйін қайта құрады және бұл дереккөз ағындары үнемі оралатын қадам. Restart=always бар қызмет менеджеріне назар аударыңыз, өйткені ол өлтірілген клиентті және оның DNS баптауларын бірден қайтаруы мүмкін.

Екінші бағыт: итерілген, бірақ жетпеген DNS

Ескірген жазбаның айна бейнесі — мүлде жарамды шешушісі жоқ туннель. Профильдегі DNS опциясы — өтініш; қосылымды басқаратын құрамдас оны шешушіге тапсыруы керек. Егер журнал сервердің алынғанын көрсетсе, бірақ туннель сілтемесі ешқандай DNS баптауын алып жүрмесе, жетіспейтіні — интеграция, сервер емес.

Тапсыруды қолмен орындап сынаңыз, бұл «сервер қате» мен «ешкім қолданбады» арасын ажыратады:

resolvectl dns tun0 10.10.10.10
resolvectl domain tun0 ~.

Барлығын ұстайтын маршруттау домені әр атауды сол сілтемеге жібереді, мұны толық туннель клиенті қалайды және бөлінген DNS қолданбауы керек. Бұл баптаулар келесі қосылымда жоғалады. Оларды NetworkManager-де тұрақты ету үшін автоматты DNS-ті өшіріңіз, серверді қосылымға орнатыңыз және доменді қосыңыз:

nmcli connection modify office ipv4.ignore-auto-dns yes
nmcli connection modify office ipv4.dns 10.10.10.10
nmcli connection modify office ipv4.dns-search "~."

Тек ішкі атауларға жауап беруі керек компания туннелі үшін сол аймақтарды барлығын ұстайтынның орнына басында тильдамен тізімдеңіз, осылайша жария атаулар жергілікті шешушіні қолдана береді.

Келесі ақаулыққа айналатын айналып өтулер

Қосылудан бұрын resolv.conf көшіріп, кейін қалпына келтіру — runbook-та заңды жол, және бұл жөндеу емес, айналып өту. Ол дәл маңызды кезде сәтсіздікке ұшырайды, өйткені құлау немесе мәжбүрлі қайта жүктеу қалпына келтіруді өткізіп жібереді. Оны айналып өту ретінде жазып қойыңыз, келесі адам оның үстіне құрмасын.

systemd-resolved-ті өшіріп, жария серверлерді қатаң кодтау — екінші танымал қадам. Ол қосылу мен ажырауды болжамды етеді және әрбір басқа желі үшін сілтеме бойынша DNS-ті жояды, бұл ішкі атаулар үшін бөлінген DNS-ті бұзады және сұрауларды ішінде ұстауға арналған туннельдің мақсатын жоққа шығарады. resolvconf орнатып, жария серверлерді бекіту қосымша қабатпен сол құнында. Екеуінің кез келгенін диагностика ретінде қарастырыңыз: егер ол шолуды қалпына келтірсе, сіз шешуші интеграциясы кінәлі екенін білдіңіз, ал жария серверлердің дұрыстығын емес.

Тұрақты түзету — әр қабатқа бір ие: туннель сілтемесінің DNS-іне қай құрамдас ие және жаһандық әдепкіге қайсысы ие екенін шешіңіз, оны жазып қойыңыз және қалғандарын жолдан алыңыз. Содан кейін ажырағаннан кейін тек VPN шешетін атаумен тексеріңіз. Егер жеке атау әлі жауап берсе, тіркелім жойылмаған; егер ештеңе шешілмесе, файл енді жоқ серверді көрсетеді. Екеуі де браузер ашпас бұрын resolvectl-де көрінеді.

Қатысты мақалалар