Favqulodda to‘xtatgich faqat IPv4 ni bloklaydi: IPv6 nega hali ham chiqib ketadi
IPv4 uchun tarmoq devori qoidalari to‘plami IPv6 haqida hech narsa aytmaydi. Ikki qatlamli qurilmada tunnel yiqilishi mumkin, ilova esa uning atrofida ishlaydigan yo‘lni ushlab turadi.
Tunnel yiqiladi, favqulodda to‘xtatgich ishga tushganini xabar qiladi, va yuklab olish davom etadi. IPv4 qoidalarida hech narsa buzilmagan. Ilova faqat o‘sha qoidalar hech qachon yozilmagan yo‘lga o‘tdi.
Ikki qatlamli qurilmalarning chiqish uchun ikki mustaqil yo‘li bor. Ulardan birini bloklash — yarim bloklash.
Ikki qoidalar to‘plami, ikki standart
Linux da, iptables va ip6tables alohida siyosatlarga ega alohida jadvallardir. IPv4 jadvalining INPUT va OUTPUT zanjirlarini DROP ga qo‘yish IPv6 jadvalida hech narsani o‘zgartirmaydi, u yerda standart odatda ACCEPT. Xuddi shu bo‘linish nftables da ham mavjud, u yerda bitta oilani tekshirib, sizning qoidalaringizni faqat bittasi olib yurishini bilib olishingiz mumkin. Bu asimmetriya normaldir va butun muammo shunda.
Shuning uchun favqulodda to‘xtatgich to‘liq ko‘rinib, qisman harakat qilishi mumkin. IPv4 qoidalarini yozgan skript ishga tushdi, hisoblagichlar ortib bormoqda, jurnal satri paydo bo‘ladi, va IPv6 paketi jismoniy interfeysdan butunlay tegilmagan holda chiqadi.
Mijozingiz aslida nima o‘rnatishini o‘qing, marketing sahifasi nima va’da qilishini emas. Ba’zi mijozlar IPv6 ni tunnelga yo‘naltiradi, ba’zilari uni ataylab bloklaydi, yana ba’zilari platforma darajasidagi qulf boshqa qoidani qo‘llayotganda uni o‘z holicha qoldiradi. Bu yerda ishonishga arziydigan yagona manba — ishlab chiqaruvchi hujjatlari.
Interfeys konfiguratsiyasi sizga nima aytadi
wg-quick qo‘llanma sahifasi o‘zining namunaviy konfiguratsiyasida IPv6 qoidalarini o‘z ichiga oladi, va sabab aynan shu bo‘shliqdir. Namuna bezak emas. U faqat IPv4 qoidalari ikkinchi oilani ochiq qoldirishi sababli mavjud.
Namunaning yarmini ko‘chirish siyosatning yarmini beradi. Bu bu sizib chiqishning eng keng tarqalgan manbai. Bitta blog posti uzunligi uchun namunani qisqartirdi. Keyin qisqartirilgan versiya hamma qayta ishlatgan shablonga aylandi.
# what is actually installed, per family?
sudo iptables -S OUTPUT | head -20
sudo ip6tables -S OUTPUT | head -20
# nftables: inspect each family separately
sudo nft list ruleset inet | head -40
# does this host even have a usable IPv6 path?
ip -6 route show default
Agar ikkinchi buyruq ruxsat beruvchi siyosatni chiqarsa, birinchisi esa DROP chiqarsa, siz mijozga tegmasdan javobni topdingiz. Bu asimmetriya — xato.
Nega bitta qidiruv butun hikoya emas
Bitta nom A yozuvini ham, AAAA yozuvini ham qaytarishi mumkin, va ilovalarning hammasi bir xil tanlamaydi. Brauzer tarmoq taklif qilganda IPv6 ni afzal ko‘rishi va muvaffaqiyatsizlikda orqaga qaytishi mumkin, fondagi sinxronizatsiya yoki yangilovchi esa o‘z hal qiluvchisi va o‘z afzalligidan foydalanadi. Shuning uchun IPv4 orqali bitta muvaffaqiyatli sinov bitta yo‘lni isbotlaydi, siyosatni emas.
Tarmoq o‘tishlari ham javobni o‘zgartiradi. Boshqa Wi-Fi tarmog‘iga qo‘shilish, uyqudan uyg‘onish yoki uyali tarmoqqa o‘tish qurilmaga yangi IPv6 prefiksini berishi mumkin, va ofis LAN ida yetarli ko‘ringan siyosat uni qamrab olmasligi mumkin.
Tunnel o‘chirilgan holatni sinab ko‘ring
Ulangan holda sinash tunnel ishlayotganini aytadi. Qiziqarli sinov — mavjud bo‘lmagan holat, chunki aynan o‘shanda favqulodda to‘xtatgich ushlab turishi kerak. Tunnelni ataylab to‘xtating, keyin himoya qilayotgan ilovangizdan muhim manzillarni sinab ko‘ring.
# with the tunnel stopped, does anything still leave?
ip -6 route get 2606:4700:4700::1111
curl -6 -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://ipv6.example.net/
curl -4 -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://ipv4.example.net/
Ikkala oila ham yopiq holda muvaffaqiyatsiz bo‘lishi kerak. Agar IPv4 so‘rovi vaqti tugasa va IPv6 so‘rovi holat kodini qaytarsa, siyosat to‘liq emas, va tunnelni qancha marta qayta sinasangiz ham bu o‘zgarmaydi.
O‘sha sinovda hujjatlashtirilgan istisnolarni ham saqlang. Mahalliy tarmoqni aniqlash, DHCP yangilanishi yoki VPN oxirgi nuqtasiga yuklash yo‘li yetib boriladigan bo‘lib qolishi kerak bo‘lishi mumkin, va bu istisnolar uzilish paytida aniqlanish o‘rniga siyosatda nomlanishi kerak. Tunnel qayta ko‘tarila olmaganligi sababli muvaffaqiyatsiz bo‘lgan sizib chiqish sinovi xavfsizlik topilmasi emas, bu ulanish topilmasi.