UFW favqulodda o'chirgichi VPN-ingizni to'syaptimi? Tengdoshga ruxsat bering
Chiqishni taqiqlovchi qoidangiz tunnelning qo'l siqishini yiqitadi. ufw enable oldidan qo'shilgan bitta tengdosh istisnosi siyosatni o'chirgichga aylantiradi.
Siz tekshiruv ro'yxatiga amal qildingiz: chiqishni taqiqlang, tunnelga ruxsat bering, ufw-ni yoqing. Keyin mijoz qo'l siqishda kutadi va hech qachon ulanmaydi, yoki ulanadi va hech qanday sahifa yuklanmaydi. Ikkala muvaffaqiyatsizlik ham bir xil bo'shliqdan kelib chiqadi. Tunnelning mavjud bo'lishiga ruxsat beruvchi qoida yo'q, chunki tunnel sizning paketlaringiz chiqadigan interfeys emas.
Nega tun0 dagi ruxsat boshida hech narsaga mos kelmaydi
tun0 ni mijoz seans paydo bo'lgandan keyin yaratadi. O'sha seansni quradigan datagrammalar provayderga 1194 portiga yuborilgan oddiy UDP paketlari bo'lib, ular jismoniy manba manzili bilan wlan0 yoki eth0 orqali chiqadi. allow out on tun0 faqat chiqish interfeysi tun0 bo'lgan trafikka mos keladi, shuning uchun qo'l siqish paytida u hech narsaga mos kelmaydi.
Uning ustiga default deny outgoing qo'ysangiz, tashqi paketlar interfeys ko'rinishidan oldin tashlab yuboriladi. Mijoz qayta urinadi, vaqt tugaydi va TLS yoki qo'l siqish xatosi haqida xabar beradi, bu odamlarni sertifikatlar va MTU ichida qidirishga yuboradi, firewall esa ulanishni jimgina yeb qo'yadi. Trafigingizni ushlab turishi kerak bo'lgan qoida o'sha trafikning ushlab turilishiga to'sqinlik qilmoqda.
Refleks tuzatish oqishni doimiy qiladi. sudo ufw allow out on wlan0, yoki standartni yana ruxsatga qaytarish tunnelni ko'taradi va mashinani o'chirgichsiz qoldiradi: keyingi safar tunnel yiqilganda hamma narsa jismoniy adapter orqali davom etadi. Men aynan o'sha ikki o'zgarishga yarim kunimni yo'qotdim, qaysi paketni filtrlayotganimni tushunmagunimcha.
Ikki paket to'plamiga nima kerak
Trafigingiz firewalldan ikki marta, ikki shaklda o'tadi. Ichki paket tunnel manzilidan tun0 orqali tashqariga chiqadi. Tashqi paket jismoniy manzildan tengdoshga boradi va simda ko'rinadigan yagona narsa shu. Har bir shakl uchun bitta qoida:
sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow out to 203.0.113.10 port 443 proto tcp comment 'tcp fallback'
Manzil va portni o'z profilingizdagilar bilan almashtiring. WireGuard tengdoshlari odatda 51820/udp da javob beradi; TCP 443 orqali yuruvchi OpenVPN profillari esa o'rniga o'sha portni talab qiladi. Tafsilotlar boshqacha, shakl bir xil: ikkala qoida ham tor va birgalikda tunnel o'chirilganda mashina yeta oladigan yagona manzillarni belgilaydi.
Tartib ikkinchi afsona. Xom iptables bilan zanjirni yuqoridan pastga o'qib, qaysi qoida yutishini o'ylaysiz. ufw yozgan ro'yxatingizning yupqa qobig'i emas; u qoidalaringizni o'z zanjirlariga kompilyatsiya qiladi va kiritish nuqtalarini tanlaydi. ufw status ularni ufw tartibida chop etadi, sizning tartibingizda emas. Qoida e'tiborsiz ko'rinsa, biror narsani qayta yozishdan oldin ufw show added ni iptables -S | grep ufw dan kompilyatsiya qilingan to'plam bilan solishtiring.
Istisno bir manzil kengligida qolishi kerak
Tengdosh qoidasi faqat mijoz qo'ng'iroq qiladigan manzilni nomlaganda to'g'ri bo'ladi. Provayderlar oxirgi nuqtalarni aylantiradi va xost nomini hal qiluvchi profil DNS o'zgarishini yangi manzilga kuzatadi, qoida esa eskisini ko'rsatishda davom etadi. Oylab ishlagan tunnel ko'tarilmay qolganda, biror narsani kengaytirishdan oldin qoidadagi manzilni mijoz izlayotgan manzil bilan solishtiring.
Butun subnetga yoki 1194 portidagi har bir manzilga kengaytirish siyosatni yana teshikli firewallga aylantiradi. Istisno — o'chirgich; u keng bo'lgach, o'chirish uchun hech narsa qolmaydi. Uni bitta manzilda saqlang va qaysi profil hamda provayderga tegishli ekanini nomlovchi izoh qoldiring, chunki olti oydan keyin manzil tasodifiy ko'rinadi.
Nomlarni hal qilish o'z satriga loyiq. Qidiruv tunnel mavjud bo'lishidan oldin, jismoniy interfeys orqali amalga oshiriladi, shuning uchun qat'iy chiqishni taqiqlash siyosati mijozni o'z serverini topa olmaydigan holatda qoldirishi mumkin. Hal qiluvchingiz manziliga 53 portiga ruxsat bering yoki bir marta hal qilib, manzilni profilda mahkamlang. Har bir interfeysda DNS ga ruxsat berish — qaror, standart emas.
Siyosatni tunnel kerak bo'lishidan oldin quring
ufw enable butun siyosatni birdan qo'llaydi va zanjirlarini qayta yuklaydi, ishlab turgan firewallda standart siyosatni o'zgartirish ham ularni qayta yuklaydi. ufw qo'llanmasi bu SSH kabi mavjud ulanishlarni uzishi mumkinligi haqida ogohlantiradi. Shuning uchun buyruqlar shu tartibda boradi, SSH qoidasi yoqishdan oldin va konsol seansi ochiq holda:
sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status verbose
ufw reset bu blokdan ataylab chiqarilgan. U har bir qoidani o'chiradi va firewallni o'chiradi, masofaviy xostda esa keyingi yoqish seansingizni uzadigan narsa. Agar baribir qayta o'rnatsangiz, SSH qoidasini qo'shing va davom etishdan oldin konsol orqali qaytishning ikkinchi yo'lini tasdiqlang.
Tartib bezak emas. ufw ishlab turganda qo'shilgan qoidalar hech narsani yuvmaydi, lekin standart siyosatni aylantirgan lahzada zanjirlar qayta yuklanadi va eski siyosat ruxsat bergan seans ham ular bilan ketadi. Standartlarni, ruxsatlarni va yoqishni bir o'tishda bajaring, hali ham mashinaga bog'liq bo'lmagan kirish yo'lingiz bor ekan.
Bloklangan holatni sinab ko'ring va bekor qilishni saqlang
Sinovdan o'tmagan o'chirgich — taxmin. Mijozni ataylab uzing va sahifani yuklashga urinib ko'ring: u muvaffaqiyatsiz bo'lishi kerak. Qayta ulaning va u hech bir qoidaga tegmasdan tiklanishi kerak. sudo ufw status verbose standartlar va jurnal holatini tasdiqlaydi, ufw status numbered esa sinov qoidasi o'z maqsadidan oshib ketganda qaysi birini o'chirish kerakligini ko'rsatadi.
Teskari skriptni to'g'ri skriptning yonida saqlang. Chiqishni taqiqlash va o'lik tunnelli mashina o'z tuzatishini yuklab olmaydi, shuning uchun bekor qilish diskda turishi va konsoldan o'qilishi kerak:
sudo ufw reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
Uni tunnel allaqachon yiqilgan va qoidalarni olib tashlash kerak bo'lganda ishga tushiring, odatiy qadam sifatida emas. Terminalni yopishdan oldin to'rt narsa to'g'ri bo'lishi kerak: tengdosh qoidasi aynan bitta manzilni nomlaydi, DNS da nomlangan istisno bor, yoqish ruxsatlardan keyin kelgan va tunnelni tortib olish oddiy trafikni o'ldiradi, lekin mijozni butunlay o'ldirmaydi.