VPN ni uzasiz, ping 1.1.1.1 hali ham javob beradi va sahifa oxir-oqibat taslim boʻlguncha har bir nom soʻrovi osilib qoladi. Keyin cat /etc/resolv.conf faqat tunnel ichida mavjud boʻlgan nom serverini koʻrsatadi, odatda roʻyxatda birinchi. Oʻsha qatorni oʻchirish taxminan oʻn daqiqaga tuzatgandek koʻrinadi, toki uyqu rejimi, Wi-Fi rouming yoki qayta yuklash uni qaytarmaguncha. Siz tahrirlagan fayl sozlama emas; u boshqa komponentga tegishli havola holatining tasviri.

Nega bitta eskirgan yozuv har bir soʻrovga soniyalar sarflaydi

glibc hal qiluvchisi nom serverlari roʻyxatini tartib bilan yuradi va keyingisini sinashdan oldin kutish vaqti tugashini kutadi, resolv.conf(5) esa bu roʻyxatni uchta yozuv bilan cheklaydi. Tunnel yoʻqolgandan keyin 10.8.0.1 kabi tunnel tomonidagi hal qiluvchini roʻyxat boshiga qoʻying, shunda har bir soʻrov javob beruvchi serverga oʻtishdan oldin kutish vaqtini toʻlaydi. Alomatning DNS xatosi emas, oʻlik ulanish boʻlib koʻrinishining sababi shu: brauzerlar bloklanadi, vaqti tugaydi va baʼzan keyinroq eskiradigan keshlangan manzilni beradi.

Bu «internet buzildi» degan shikoyat nega kelishini ham tushuntiradi. IP manzilga ping havola joyida ekanini isbotlaydi, bu esa nosozlikni dastur aybiga oʻxshatadi. Hal qiluvchilar roʻyxati birinchi oʻqiladigan va oxirgi tahrirlanadigan narsadir.

Afsona: resolv.conf sozlamalar fayli

Oʻzgartirishdan oldin bu yoʻl aslida nima ekanini soʻrang:

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

systemd-resolved xostida bu 127.0.0.53 ga ishora qiluvchi stub faylga ramziy havola, haqiqiy serverlar esa resolvectl chop etadigan har bir havola holatida yashaydi. NetworkManager xostida bu NetworkManager faol ulanishdan yozadigan fayl boʻlishi mumkin. Baʼzi sotuvchi mijozlarida bu ulanish paytida joyida qayta yoziladigan va omadingiz kelmasa uzilishda hech qachon tiklanmaydigan oddiy fayldir. Bular uch xil egadir, birinchi ikkitasini qoʻlda tahrirlash esa hech narsa qilmaydi yoki keyingi tarmoq hodisasigacha davom etadi.

resolvectl status haqiqatni aytadigan koʻrinish: har bir havola uchun DNS serverlari, marshrutlash domenlari va tunnel havolasi hali bor-yoʻqligi. resolvectl query example.com yana uzoqqa borib qaysi interfeys javob berganini koʻrsatadi. Faylga tegishdan oldin ikkalasini ishlating va oʻz xavfsiz DNS iga ega brauzer bularning barchasini eʼtiborsiz qoldirishini yodda tuting.

Biror narsani tahrirlashdan oldin egasini toping

Odatda uchta komponent bir xil sozlama uchun kurashadi: systemd-resolved, NetworkManager va VPN mijozi oʻrnatgan narsa. Avval tirikini aniqlang:

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

Agar resolved faol boʻlsa va ramziy havola uning stub iga ishora qilsa, global fayl yaratilgan chiqish boʻlib, tahriringiz faqat tashqi koʻrinishda. Agar ulanish NetworkManager ga tegishli boʻlsa, serverlar ulanish profiliga tegishli, shuning uchun tuzatish fayl tahriri emas, nmcli xususiyatini oʻzgartirishdir. Agar sotuvchi demoni ishlayotgan boʻlsa, keyingi ulanishdan faqat uning oʻz tiklanish yoʻli omon qoladi.

Mijoz qoldirgan havola holatini tozalang

Oʻldirilgan mijoz oʻz tozalash ilgagini ishga tushira olmaydi. SIGKILL umuman ushlanmaydi, SIGINT va SIGTERM esa ushlanadi, shuning uchun majburiy oʻldirishdan keyin «shunchaki toʻxtagan» tunnel koʻpincha interfeys roʻyxatga olinishini ham, hal qiluvchi yozuvini ham joyida qoldiradi. Aniq PID ni toping va signalni faqat oʻshanga yuboring:

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

Toʻliq moslik roʻyxatini oʻqimasdan turib pkill -f vpn yoki killall vpn ga qoʻl choʻzmang. -f butun buyruq satriga mos keladi, shuning uchun u oʻrovchi skriptni, muharrir sessiyasini yoki yoʻlida shu satr bor aloqasiz jarayonni tugatishi mumkin. Ish oʻrtasida notoʻgʻri jarayonni tugatish hal qiluvchi muammosining yoʻqolgan faylga aylanish yoʻlidir.

resolvectl revert oʻsha havolaning ishlash vaqtidagi DNS konfiguratsiyasini tiklaydi, bu hal qiluvchini qayta ishga tushirishdan torroq va global faylni tahrirlashdan ancha torroq. Agar tunnel havolasi butunlay yoʻqolgan boʻlsa, systemctl restart NetworkManager ulanish holatini qayta quradi va bu manba oqimlari doim qaytadigan qadam. Restart=always li xizmat menejeriga eʼtibor bering, chunki u oʻldirilgan mijozni va uning DNS sozlamalarini toʻgʻridan-toʻgʻri qaytarishi mumkin.

Boshqa yoʻnalish: itarilgan, lekin yetib kelmagan DNS

Eskirgan yozuvning koʻzgu tasviri bu umuman foydali hal qiluvchisi yoʻq tunnel. Profildagi DNS varianti soʻrovdir; ulanishni boshqaruvchi komponent uni hal qiluvchiga topshirishi kerak. Agar jurnal server qabul qilinganini, lekin tunnel havolasi hech qanday DNS sozlamasini olib yurmasligini koʻrsatsa, yetishmayotgan narsa integratsiya, server emas.

Topshirishni qoʻlda bajarib sinab koʻring, bu «server notoʻgʻri» va «hech kim qoʻllamadi» ni ajratadi:

resolvectl dns tun0 10.10.10.10
resolvectl domain tun0 ~.

Hammasini ushlovchi marshrutlash domeni har bir nomni oʻsha havolaga yuboradi, buni toʻliq tunnel mijozi xohlaydi va boʻlingan DNS ishlatmasligi kerak. Bu sozlamalar keyingi ulanishda yoʻqoladi. Ularni NetworkManager da doimiy qilish uchun avtomatik DNS ni oʻchiring, serverni ulanishga oʻrnating va domenni qoʻshing:

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 "~."

Faqat ichki nomlarga javob berishi kerak boʻlgan kompaniya tunneli uchun oʻsha zonalarni hammasini ushlash oʻrniga boshida tilda bilan sanab oʻting, shunda ommaviy nomlar mahalliy hal qiluvchidan foydalanishda davom etadi.

Keyingi uzilishga aylanadigan vaqtinchalik yechimlar

Ulanishdan oldin resolv.conf ni nusxalash va keyin tiklash runbook da qonuniy satr, va bu taʼmirlash emas, vaqtinchalik yechim. U aynan muhim paytda muvaffaqiyatsiz boʻladi, chunki halokat yoki majburiy qayta yuklash tiklashni oʻtkazib yuboradi. Uni vaqtinchalik yechim sifatida yozib qoʻying, keyingi odam unga asoslanmasin.

systemd-resolved ni oʻchirish va ommaviy serverlarni qattiq kodlash boshqa mashhur qadamdir. Bu ulanish va uzilishni oldindan aytiladigan qiladi va har bir boshqa tarmoq uchun har bir havola DNS ini olib tashlaydi, bu ichki nomlar uchun boʻlingan DNS ni buzadi va soʻrovlarni ichida saqlash uchun moʻljallangan tunnel maqsadini puchga chiqaradi. resolvconf oʻrnatish va ommaviy serverlarni mahkamlash qoʻshimcha qatlam bilan bir xil xarajat. Ikkalasidan birini diagnostika deb qabul qiling: agar u koʻrishni tiklasa, siz hal qiluvchi integratsiyasi aybdor ekanini bilib oldingiz, ommaviy serverlar toʻgʻri ekanini emas.

Barqaror tuzatish har bir qatlam uchun bitta egadir: tunnel havolasining DNS iga qaysi komponent egaligini va global standartga qaysi biri egaligini hal qiling, buni yozib qoʻying va qolganlarini yoʻldan olib tashlang. Keyin uzilgandan soʻng faqat VPN hal qiladigan nom bilan tekshiring. Agar shaxsiy nom hali ham javob bersa, roʻyxatga olish olib tashlanmagan; agar hech narsa hal qilinmasa, fayl endi mavjud boʻlmagan serverga ishora qiladi. Ikkalasi ham brauzer ochishdan oldin resolvectl da koʻrinadi.

O'xshash maqolalar