Bir lahzada noutbuk ofis Wi-Fi'da, keyingi lahzada telefonga ulangan, va siz oynalarni almashtirishni tugatmasdan tunnel indikatori yana yashil. Yashil chiroq faqat tunnel qayta ulanganini bildiradi; o'sha bo'shliqda marshrutlash va bloklash siyosati nima qilgani boshqa savol. Bu siyosat oxirgi o'rnatishda kompilyatsiya qilingan moslik shartlari to'plami bo'lib, o'tish hozir olib tashlagan interfeys, manzil va manzil oilasini nomlaydi. Shuning uchun bir xil o'tish bir xil ko'rinadigan uchta natija beradi: bloklash davom etadi, siyosat o'z tiklanishini bloklaydi, yoki hech narsa qoplamaydigan yo'l ochiladi.

Ekronda bu uch holatni hech narsa ajratmaydi, shuning uchun indikator qanday rang ko'rsatishini emas, qoidalar qaysi identifikatorlarga bog'langanini so'rang. Linux'da qoida interfeys yoki undan to'ldirilgan ipsetni nomlashi mumkin; Android'da VpnService'ga setUnderlyingNetworks orqali qaysi asosiy tarmoqlarni kuzatishni aytish mumkin. Har bir bog'lanish almashtirilishi kerak bo'lgan zvenoga ishora qiladi va har biri keyin qayta baholanishi kerak.

O'tish aslida nimani qayta yozadi

Eski zveno yo'qolganda yadro uning manzillarini olib tashlaydi, u orqali o'tgan marshrutlarni qaytarib oladi va qolganidan manba manzil tanlovini qayta quradi. Standart marshrut yangi shlyuzga o'tadi, eski qoidalar murojaat qilgan interfeys indeksi esa yo'qolgan yoki boshqa qurilma uchun qayta ishlatilgan. Zveno bo'yicha hal qiluvchilar ham yangilanadi, ammo marshrutlar bilan bir lahzada emas. Bularning barchasi VPN mijozi ostida sodir bo'ladi, shuning uchun faqat o'z tunnelining holatini kuzatadigan mijoz buni ko'rmaydi.

Muammo shundaki, qoida o'z orqasidagi niyat o'rniga aniq identifikatorni kodlaydi. Tunnel interfeysidan chiqmaydigan hamma narsani tashlaydigan qoida interfeys nomini kodlaydi; oxirgi nuqtaga ruxsat beradigan qoida yangi tarmoq boshqa joyga yo'naltirishi mumkin bo'lgan manzilni kodlaydi. Identifikator yo'qolganda qoida ko'zga ko'rinadigan xato bo'lib qolmaydi: yo hech narsaga mos kelmay qo'yadi, yo noto'g'ri narsaga mos kela boshlaydi.

Teshik ochmasdan tashqi tunnelni qayta qurish

Tashqi transport eski manba manziliga bog'langan edi, shuning uchun u yangisidan yangi soket ochishi kerak. Oxirgi nuqta so'zma-so'z manzil emas, xost nomi bo'lsa, qidiruv blok hali amalda turganda muvaffaqiyatli bo'lishi kerak. Bu tartib tuzog'i: oxirgi nuqtadan boshqa hamma narsani tashlash uchun yetarlicha qat'iy siyosat uni topish uchun kerak bo'lgan qidiruvni ham tashlaydi, agar yechim blok ko'tarilishidan oldin bo'lmasa yoki hali tirik tunnel orqali olib o'tilmasa. Ikkala tartib ham ishlashi mumkin, lekin mijoz qaysi tartibda ekanini bilsa gina.

Mijozlar bu yerda diagnostika paytida muhim bo'ladigan tarzda farq qiladi. Ba'zilari avval hal qiladi, keyin qoidalarni o'rnatadi, shuning uchun o'tish ko'rinadigan uzilishga olib keladi va keyin o'zi tiklanadi; boshqalari blokni ushlab turadi va qidiruvni olib o'tish uchun omon qolgan tunnelga tayanadi, bu esa tunnel zveno bilan birga o'lganda butunlay muvaffaqiyatsiz bo'ladi. Ulanishni tiklash uchun keng to'g'ridan-to'g'ri standart marshrut qo'shish testni har doim o'tkazadi va siz oldini olayotgan oqishni har doim qoldiradi.

Hali eski shlyuzga ishora qilayotgan marshrut boshqa sababdan xuddi shu tiqilib qolgan tiklanishni beradi, shuning uchun mijozni ayblashdan oldin jadvalni o'qing. Quyidagi buyruqlar yadro haqiqatan ishlatadigan interfeys va manba manzilini nomlaydi, va bu eski yo'l hali o'rnatilganmi-yo'qmi bir satrda hal qiladi.

ip route get 1.1.1.1
ip -6 route get 2606:4700:4700::1111

Yangi zveno IPv6 olib kelsa, qoidalar olib kelmasa

Uyali va mehmon tarmoqlar ko'pincha global IPv6 prefiksini beradi, hatto ofisning simli LAN'i buni hech qachon qilmagan bo'lsa ham. Faqat IPv4 qoidalari sifatida yozilgan siyosat — qo'lda tayyorlangan aksariyat iptables va nftables retseptlarining standart shakli — bundan hech narsani qoplamaydi. Tunnel ulangan holda qoladi, IPv6 ga kirish imkoni bo'lgan ilovalar uning tashqarisiga chiqadi va indikator farqni ko'rsata olmaydi, chunki tunnel haqiqatan ishlayapti. Teskari holat ham shunchalik keng tarqalgan: faqat IPv6 uchun qoidalar to'plami v6 taklif qilmaydigan tarmoqda hech narsa qilmaydi.

Zveno nima taklif qilishini siyosat nima eslatishi bilan o'tishning ikki tomonida solishtiring. Bu buyruqlar mijoz ishlaydigan o'sha faktlarni chop etadi:

ip -4 route show default
ip -6 route show default
sudo nft list ruleset | grep -c 'ip6 '

Agar ikkinchi buyruq standart marshrutni chop etsa, uchinchisi esa nol qaytarsa, yangi zveno mashinani hech bir qoida kuzatmay turib IPv6 orqali tashqariga chiqarishi mumkin. O'tishdan keyin uchtasini ham qayta ishga tushiring, chunki qiziqarli raqam ikki ishga tushirish orasidagi farq. Agar ikkinchisi hech narsa chop etmasa, teskari holat amal qiladi va u yerda har qanday v6-og'ir siyosat shunchaki bezakdir.

Hal qiluvchi sessiya o'rtasida qo'l almashtiradi

Zamonaviy tizimlarda hal qiluvchilar zvenolarga bog'langan, shuning uchun yangi zveno yangi hal qiluvchilar to'plami va ehtimol boshqa split-DNS ko'rinishi bilan keladi. systemd-resolved har bir zveno uchun bitta scope saqlaydi va ular orasida marshrut bo'yicha tanlaydi, macOS esa scoped hal qiluvchilarni dinamik ombordan o'qib, interfeyslar tartibini hurmat qiladi. O'z hal qiluvchisini o'rnatgan mijoz zvenonik bilan raqobatlashadi va hech kim kuzatmaydigan ustuvorlik qoidalari g'olibni hal qiladi. Shunda nomlarni hal qilish buzilishi mumkin, paket filtrlash esa o'zi uchun yozilgan ishni aynan bajarayotgan bo'ladi.

Sozlangan hal qiluvchini emas, faol bo'lganini o'qing. systemd xostida status quyi buyrug'i har bir scope qaysi zvenodan kelganini va private-DNS nomi amalda ekanini ko'rsatadi:

resolvectl status --no-pager
resolvectl query intranet.example.com

Agar so'rov tunnel orqali emas, fizik zveno orqali chiqsa, mijoz ustuvorlik raqobatida yutqazgan va hech qanday firewall sozlamasi nomlashni tuzatmaydi. So'rov yo'lini o'tishning ikki tomonida solishtirib qaysi biri siljiganini ko'ring. Yangi tarmoq marshrutlay olmaydigan shaxsiy manzilga hal bo'ladigan nom uchinchi holat bo'lib, u xato sifatida emas, vaqt tugashi sifatida ko'rinadi.

O'tishni mashq qiling va yozuvni saqlang

O'zgarishni kutish o'rniga ataylab qayta hosil qiling. Tunnelni birinchi zvenoda ko'taring, uzoq davom etadigan uzatish va takroriy qidiruvni boshlang, keyin zvenoni almashtirib qaysi biri omon qolishini kuzating. Eski zveno yo'qolgan va tunnel ulanganini xabar qilgan orasidagi intervalni yozib qo'ying, chunki aynan shu oynada siyosat bardosh berdi yoki bermadi. Natija bir tomonlama bo'lmasligi uchun ketma-ketlikni teskari yo'nalishda ham ishga tushiring.

Istisnolar o'z bosqichini talab qiladi, chunki eski tarmoqda oqlangan chetlanish yangisida avtomatik oqlanmaydi. Uy LAN'idagi printer, NAS yoki captive portal uyali tarmoqda o'xshashiga ega emas va ularga yetib boradigan istisno o'xshashisiz qoidaga aylanadi.

Har bir yo'nalish uchun interfeys nomlarini, taklif qilinadigan oilalarni, amaldagi hal qiluvchini va uzilish davomiyligini yozing. Qayta ulanish transport tiklanganini isbotlaydi, bo'shliqda blok bardosh berganini emas, va bular chiptaga qo'yiladigan alohida da'volardir. Shu yozuv bilan keyingi o'tish xotira bilan emas, ma'lum holat bilan solishtiriladi.

O'xshash maqolalar