VPN mijozlari ulanadi, lekin internet yo'q: uchta yetishmayotgan qism
ping ga javob beruvchi tunnelga hali ham yo'naltirish, tarjima va yo'naltirish qoidasi kerak. Mijozni yana tahrirlashdan oldin uchtadan qaysi biri yetishmayotganini aniqlang.
Mijoz manzil oladi, server ping ga javob beradi, va baribir har bir sahifa vaqt tugashi bilan yakunlanadi. Ko'pchilik ayni shu bosqichda mijoz profilini tahrirlashni boshlaydi, bu odatda behuda mehnat: tunnel ko'tarilgach, server router kabi tutishi kerak. Paket chiqib javob qaytishi uchun uchta shart bir vaqtda bajarilishi kerak, va qaysi biri yetishmasa ham alomat bir xil.
Nega ishlayotgan tunnelning hali chiqish yo'li yo'q
Yadro paketlarni interfeyslar orasida yo'naltirishi kerak, bu ko'pchilik Linux distributivlarida sukut bo'yicha o'chirilgan. Trafik tashqi dunyo javob bera oladigan manzilga tarjima qilinishi kerak, agar har bir yuqori router tunnel quyi tarmog'iga qaytish yo'lini allaqachon bilmasa. Xavfsizlik devorining yo'naltirish yo'li trafikni ikkala yo'nalishda ham, javoblarni qo'shgan holda, o'tkazishi kerak.
Ularning har birini alohida tuzatish mumkin, va aynan shu tuzoq. Tarjima qoidasisiz yo'naltirishni yoqish paketlarning shaxsiy manba bilan va qaytish yo'lisiz chiqishiga olib keladi. Yo'naltirish qoidasisiz tarjimani qo'shish yadroni bir qadam keyin paketni tashlashga majbur qiladi.
Shuning uchun mijozni emas, uch qatlamni sinab ko'ring, va natija mazmunga ega bo'lishi uchun bir vaqtda bittasini o'zgartiring.
Yo'naltirish — doimiy qilish kerak bo'lgan yadro kaliti
O'zgartirishdan oldin joriy qiymatni tekshiring, so'ng uni o'rnating va o'zgarish kuchga kirganini tasdiqlang.
sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
sysctl net.ipv4.ip_forwardBirinchi buyruq joriy qiymatni bildiradi, ikkinchisi uni ish vaqtida o'rnatadi, uchinchisi esa yozish ishlaganini isbotlaydi. Ish vaqtidagi qiymat keyingi qayta yuklashda yo'qoladi, shuning uchun ishlayotgan sessiya texnik xizmatdan keyin hech qanday konfiguratsiya o'zgarishisiz buzilishi mumkin.
Uni /etc/sysctl.d/ ostidagi faylda doimiy qiling, so'ng bilish uchun qayta yuklash o'rniga o'sha faylni qo'llang. FreeBSD da ekvivalenti net.inet.ip.forwarding, doimiylik uchun rc.conf da gateway_enable=YES. Yo'naltirish o'chirilgan deb xabar beradigan qurilma «paketlar keladi va hech narsa qaytmaydi» kabi butun bir toifadagi hisobotlarni tushuntiradi. Har bir yangilanishdan keyin ham sozlamani tekshiring, chunki qayta qurilgan yadro yoki almashtirilgan qurilma obrazi uni hech kimga aytmasdan qayta o'rnatishi mumkin.
masquerade yoki bitta qat'iy tarjima manzilini tanlang
Dinamik tashqi manzil bilan masquerading eng oddiy to'g'ri shakldir. Tunnel quyi tarmog'ini manba, tashqi interfeysni chiqish deb nomlang.
iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -o eth0 -j MASQUERADEStatik ommaviy manzil bilan manbani aynan o'sha manzilga tarjima qilish oldindan aytish osonroq va tekshirishga qulay.
iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -j SNAT --to-source 198.51.100.10Ikkinchi shakl texnik xizmat tuzog'ini olib yuradi: keyin o'zgaradigan qattiq kodlangan manzil tunnelni ishlatib turadi, internetga kirish esa jimgina to'xtaydi. Yoki masquerade ishlating, yoki provayder sizni ko'chirganda qoidani yangilang. Interfeys ham muhim, chunki o'zining yuqori tunnelini bo'lishadigan router jismoniy WAN orqali emas, o'sha tunnel orqali tarjima qilishi kerak.
Filtr jadvali — uchinchi darvoza
Yo'naltirish ham, tarjima ham to'g'ri bo'lishi mumkin, lekin paket filtr jadvalida o'ladi. ufw ko'p uchraydigan aybdor: uning yo'naltirish siyosati DROP sifatida keladi, qolgan sozlama esa butunlay to'g'ri ko'rinishi mumkin, o'sha bitta sozlama trafikni o'ldiradi. Uni ko'tarish — belgi qutisi emas, ongli xavfsizlik qarori.
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTBirinchi qoida tunneldan tashqariga yangi trafikka ruxsat beradi, ikkinchisi faqat javoblarning qaytishiga. Ikkalasini ham tunnel quyi tarmog'i va mo'ljallangan manzil bilan cheklang, chunki tunnel interfeysida umumiy ruxsat VPN ni autentifikatsiyadan o'ta oladigan har kim uchun ochiq chiqish nuqtasiga aylantiradi.
Ko'prikli tunnel boshqacha javob talab qiladi. Manzil jismoniy portga emas, ko'prikka tegishli, shuning uchun interfeysni qul qilish uning avvalgi manzilini olib tashlaydi va ko'prikning o'zi manzil olmaguncha xost yetib bo'lmaydigan ko'rinadi, buni dhclient br0 bera oladi. Bu nosozlik VPN muammosiga o'xshaydi, aslida ikkinchi qatlam muammosi. Xavfsizlik devoriga tegishdan oldin ko'prikning o'z manzilini tekshiring, chunki filtr o'zgarishi yuboradigan manzili qolmagan xostni tuzata olmaydi.
Sahifa hech qachon yuklanmasa, qayerga qarash kerak
Tunnel borligini isbotlash uchun serverning tunnel manziliga ping yuboring. So'ng mijozdan ommaviy manzilga traceroute ishga tushiring va qayerda to'xtashini o'qing: serverda paket yetib keladi, lekin yo'naltirilmaydi yoki tarjima qilinmaydi; serverdan narida muammo yuqorida va sizning qo'lingizda emas.
ping -c 3 10.9.0.1
traceroute -n 198.51.100.10Birinchi buyruq tunnel trafikni serverning o'ziga olib borishini isbotlaydi, ikkinchisi paket tashqariga qanchalik uzoqqa yetishini ko'rsatadi. Tunnel manzilida tugaydigan iz serverdagi yo'naltirish yoki tarjimaga ishora qiladi, bir sakrashdan keyin to'xtaydigan iz esa provayderga yoki yuqori routerning qaytish yo'liga.
Serverda, mijoz sahifa yuklayotganda tashqi interfeysni kuzating. Shaxsiy manba manzili bilan chiqayotgan trafik tarjima yetishmayotganini bildiradi, umuman javob yo'qligi esa yo'naltirish yo'li yoki yuqori qaytish marshruti uni tashlab yuborayotganini bildiradi.
Agar masofaviy mijozlar serverning LAN idagi xostlarga ham yetishi kerak bo'lsa, LAN ga tunnel quyi tarmog'iga qaytish marshruti kerakligini unutmang. Bu tarjima emas, marshrutlash, va internet yo'li nihoyat ishlagandan keyin eng ko'p unutiladigan qadam shu.