resolv.conf файлын түзөтүү VPN ажырагандан кийин DNSди оңдобойт
Тизменин башындагы өлүк туннель чечүүчүсү ар бир суроо үчүн бир тайм-аут турат. Файл кимге таандык экенин текшериңиз, шилтеме абалын кайра коюңуз жана жаралган чыгарылышты түзөтүүнү токтотуңуз.
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де көрүнөт.