Faqat o'zining chiquvchi trafigini himoya qilishi kerak bo'lgan Raspberry Pi uchun ikkita real loyiha bor: tunnelga tarmoq menejeri egalik qilsin, yoki unga egalik qiladigan skriptni saqlang. Ikkalasi ham trafikni tashiy oladi. Ular turli joylarda ishlamay qoladi, va tunda ikkida masofadan diagnoz qila oladigan nosozlik tanlashga arziydiganidir. Ularni egalik bo'yicha, IPv6 va DNS ishtirok etganda to'liq tunnel nimani anglatishi bo'yicha va tunnel uzilgan paytda nima bo'lishi bo'yicha solishtiring.

Bitta tunnelga ikki egasi

A loyihasi — tizim tarmoq menejeri ichidagi profil: import qilingan OpenVPN profili yoki mahalliy WireGuard ulanishi, uni yuklanish paytida Ethernet va Wi-Fi'ni ko'taradigan o'sha xizmat faollashtiradi. B loyihasi — mijozi to'g'ridan-to'g'ri ishga tushiradigan, resolver konfiguratsiyasini tahrirlaydigan va o'z marshrutlari hamda firewall qoidalarini o'rnatadigan o'z birligingiz. Ikkalasi ham qonuniy loyiha; ular marshrutlash jadvalini kim o'zgartirishi mumkinligi bilan farq qiladi.

Nosozliklar farq qiladi, chunki egalar farq qiladi. A da faollashmaydigan profil interfeysni yuqorida, tunnelni pastda qoldiradi, va menejer jurnallari sababini aytadi. B da yarim muvaffaqiyatli skript uni yaratgan jarayondan keyin ham qoladigan marshrutlarni qoldiradi. Ikkalasini ham ishga tushirish eng yomon natija: ikki jarayon standart marshrutni yozadi, yuklanishda ikki resolver tahriri raqobatlashadi va aylantirish uchun ikki sir to'plami kerak.

Har tunnel uchun bitta egasini tanlang va biror narsani sinashdan oldin ikkinchisini o'chiring. Ikki egasi tunnel ko'tarilganda va hech narsa hal qilinmasa qarash uchun ikki joy degani ham. Bu bitta qoida Pi VPN muhokamalarida tasvirlangan chalkash holatlarning ko'pini oldini oladi.

Import nima yaratadi va nima yaratmaydi

Raspberry Pi OS Bookworm va undan keyingi versiyalarda tarmoq konfiguratsiyasining standart vositasi NetworkManager, shuning uchun profil mijoz tunneli uchun tabiiy uydir. Import mos plagin o'rnatilgan bo'lishini talab qiladi; usiz import qo'llab-quvvatlanmaydigan ulanish turi haqidagi xabar bilan muvaffaqiyatsiz tugaydi, bu esa to'xtab plagin o'rnatishning halol signalidir.

nmcli connection import type openvpn file ./provider.ovpn
nmcli connection show
nmcli --ask connection up id provider-name

Import profilni saqlaydi. U qarshi tomon yetib borish mumkinligini isbotlamaydi va fayldagi har bir ko'rsatma konvertatsiyadan omon qolganiga kafolat bermaydi. Hosil bo'lgan ulanishni qayta o'qing va shaxs hamda ishonchni tashuvchi qismlarni tekshiring: sertifikat, masofaviy xost va port, hamda parol so'raladimi yoki saqlanadimi.

--ask bilan faollashtirish umumiy mashinada parol iborasini shell tarixidan tashqarida saqlaydi. Nazoratsiz Pi uchun oxir-oqibat profil yuklanishda ko'tarilishini xohlaysiz, bu uni qo'lda bir marta ko'tarishdan alohida qaror.

To'liq tunnel, ikki loyiha bo'yicha solishtirilganda

To'liq tunnel marshrutlar haqidagi da'vo, niyat haqida emas, va ikki loyiha buni turlicha ifodalaydi. Profil yondashuvi menejerdan standart marshrut va uning resolver sozlamalarini o'rnatishni so'raydi; skript yondashuvi skript nima desa shuni qiladi, hech narsa qilmaslikni ham qo'shib. Hech bir loyiha aytilmasa IPv6 ni qamrab olmaydi, va tegilmagan IPv6 standart marshruti IPv4 mukammal ko'ringanda trafikni tunneldan tashqariga xursandchilik bilan olib chiqadi.

ip -4 route get 198.51.100.23
ip -6 route show default
resolvectl query example.org

Marshrut qidiruvi uchun hujjat manzilini ishlatib, uni tekshirishga ruxsat berilgan xost bilan almashtiring. Birinchi buyruq Pi odatiy manzil uchun qaysi interfeysni ishlatishini ko'rsatadi; ikkinchisi IPv6 standart marshruti hali bor-yo'qligini ko'rsatadi; uchinchisi qaysi resolver javob berganini isbotlaydi. To'liq tunnel haqidagi har qanday da'voga ishonishdan oldin uchtasini ham o'qing.

Agar provayderning ko'rsatmalari to'liq tunnel va'da qilsa, lekin IPv6 standart marshruti qolsa, Pi oqib ketmoqda. Yuqori bog'lanishda IPv6 ni o'chiring yoki profildan uni talab qilishni so'rang, va keyinroq aniqlash o'rniga ongli ravishda qaror qiling.

Ochiq nosozlik yopiq nosozlikka qarshi

Tunnel uzilganda standart marshrutini yo'qotgan marshrutlash jadvali shunchaki jismoniy yuqori bog'lanishga qaytadi, va trafik ochiq holda davom etadi. Bu ochiq nosozlik, va biror narsa to'sqinlik qilmasa bu ikki loyihaning standart xatti-harakati. Ko'pchilik buni haftalar o'tib firewall jurnalini o'qib bilib oladi.

Yopiq nosozlik tunnel pastda bo'lganda sizni masofaviy kirishdan mahrum qiladi, shuning uchun boshqaruv yo'li uchun ongli istisno kerak. Bir yo'l tunneldan tashqarida faqat VPN sherigining manziliga ruxsat beradigan qoidadir:

sudo nft add table inet vpnkill
sudo nft 'add chain inet vpnkill out { type filter hook output priority 0; policy accept; }'
sudo nft add rule inet vpnkill out oifname != "tun0" ip daddr != 203.0.113.24 reject

Operatsion xarajatni halol solishtiring. Profil odatda bu qoidani ifodalay olmaydi, shuning uchun yopiq nosozlik sizni skript loyihasiga yoki qoidani tunneldan mustaqil o'rnatadigan kichik birlikka undaydi. Qanday bo'lmasin, rad etishlarni bir hafta yozib boring: jim rad etish buzilgan xizmatga aynan o'xshaydi, va foydalanuvchi bitta sayt yuklanmay qolganini xabar qilganda hisoblagich kerak bo'ladi.

Ekransiz Pi uchun tanlov

Agar obraz allaqachon NetworkManager ishlatsa, tunnel hech qanday g'alati narsa talab qilmasa, va u yuqori bog'lanishga avtomatik ergashishini xohlasangiz, profilni oling. Agar sizga siyosiy marshrutlash, har bir manzil uchun tanlanadigan bir nechta tunnel yoki tunnel ko'tarilishidan oldin mavjud bo'lishi shart yopiq nosozlik qoidasi kerak bo'lsa, skriptni oling va yuklanish tartibi hamda tozalashni qo'shib uning har bir qismiga egalik qiling. Ikki loyihani aralashtirish har biridan qimmatroq.

Ular o'rtasida ko'chish asosan tartib masalasi: eski egasini o'chiring, eskirgan marshrut yoki resolver yozuvi qolmaganini tasdiqlang, so'ng yangisini yoqing va ikki marta qayta yuklang. Bitta qayta yuklash ikkinchisi ochadigan poygani yashirishi mumkin. Tunnelni emas, Pi ni sinash bilan yakunlang: nomni hal qiling, IPv4 orqali biror narsa oling, saqlagan bo'lsangiz IPv6 orqali ham oling, so'ng tunnelni tushiring va tanlagan xatti-harakatingiz haqiqatan sodir bo'lishini tasdiqlang. ip link ichidagi interfeys sinovning boshlanishi, oxiri emas.

O'xshash maqolalar