OpenVPN orqali ommaviy prefiks: qaytish yo‘lini tuzatish
Yo‘naltirilgan ommaviy prefiks OpenVPN TUN havolasidan o‘tishi mumkin, ammo javoblar xuddi shu yo‘ldan qaytishi kerak. Prefiksni delegatsiya qiling va ommaviy manba manzilini saqlang.
Tunnel ko‘tarilishini va klient narigi tomonga ping yuborishini kuzating, so‘ng VPN orqasida bo‘lishi kerak bo‘lgan ommaviy manzil boshqa joydan javob beradi yoki umuman javob bermaydi. Bu alomat odatda shifr yoki sertifikatlar bilan hech qanday aloqasi yo‘q. Provayder yo‘naltirgan prefiks IP marshrut sifatida yetkaziladi va uni OpenVPN orqali olib o‘tish bu marshrutni ikki darajada qayta yaratish va qaytish yo‘lida manba manzilini saqlash demakdir. WAN ni ko‘prik qilish shart emas va manzilni interfeysga qo‘shish yuqori marshrutni yaratmaydi.
Prefiks avval siz tomonga yo‘naltirilishi kerak
Provayderdan blok qanday yetkazilishini so‘rang. Serveringizning asosiy manziliga yo‘naltirilgan prefiks provayder WAN segmentida to‘g‘ridan-to‘g‘ri yetib borishini kutadigan manzillardan boshqa narsa. Bu yerdagi dizayn bilan faqat birinchi model ishlaydi.
Agar provayder 198.51.100.64/28 ni kirish serveringizga yo‘naltirsa, bu diapazon paketlari serverga keladi va siz ularni uzatmasangiz, shu yerda to‘xtaydi. Agar provayder buning o‘rniga diapazonni yuqori havolangizga ko‘prik qilsa, server buning uchun ARP javobini berishi kerak, bu boshqa muammo.
OpenVPN ga tegishdan oldin yetkazish modelini sinab ko‘ring: tashqaridan blokdagi manzilga ping yuboring va uni qaysi interfeys qabul qilishini ko‘ring. Hech narsa kelmasa, hech qanday tunnel konfiguratsiyasi yordam bermaydi. Agar manzil WAN da to‘g‘ridan-to‘g‘ri javob bersa, provayder yo‘naltirish o‘rniga ko‘prik qilmoqda va quyidagi dizayn qo‘llanmaydi.
Ikki yo‘naltirish darajasi: yadro marshruti va iroute
OpenVPN prefiksni ikki joyda talab qiladi. Yadro prefiks tunnel qurilmasiga tegishli ekanini bilishi kerak, shunda uzatilgan paketlar standart marshrut o‘rniga OpenVPN ga kiradi. OpenVPN qaysi autentifikatsiya qilingan klient prefiksga egaligini ham bilishi kerak va bu klientga xos katalogdagi iroute yozuvidir.
Server tomonidagi marshrut shunday ko‘rinadi, prefiks va mask taqsimotga mos kelishi kerak:
ip route add 198.51.100.64/28 dev tun0
Klientga xos konfiguratsiya egalikni belgilaydi. Uni klient sertifikatining umumiy nomi bilan nomlangan CCD fayliga joylashtiring va server haqiqatan o‘sha katalogni o‘qishini tasdiqlang:
iroute 198.51.100.64 255.255.255.240
OpenVPN ning yo‘naltirilgan tarmoqlar haqidagi hujjatlari ikkala darajani va nima uchun ular alohida ekanini tasvirlaydi. iroute siz yadro marshruti paketlarni egasiz tunneldan o‘tkazadi va OpenVPN ularni tashlaydi. Yadro marshrutisiz iroute paketlarni serverning standart yo‘lida qoldiradi. Ikkala xato ham klient tomondan buzilgan tunnel kabi ko‘rinadi.
Xizmat manzili qayerda yashaydi
Delegatsiya qilingan prefiks tunnelning o‘z manzillari bilan bir xil narsa emas. Xohlasangiz, havolani xususiy fazodan raqamlang va ommaviy xizmat manzilini xizmat haqiqatan ishlaydigan joyga qo‘ying.
Xizmatni mahalliy tugatadigan Linux klientida bitta xost manzili yetarli:
ip address add 198.51.100.70/32 dev lo
Agar prefiks keyinchalik VM xostiga yoki boshqa LAN ga yo‘naltirilsa, o‘rniga o‘sha quyi oqim yo‘lini va uning qaytish marshrutini sozlang. Blokdagi har bir manzilni VPN klientiga berish shart emas va keyinchalik ziddiyatlar keltirib chiqaradi.
Qaytish yo‘lida ommaviy manbani saqlang
Delegatsiya qilingan prefiksdan javob tunneldan chiqib provayder marshrutiga yetishi kerak. Agar uzoq xost uni o‘z ISP si orqali yuborsa, manba manzili soxta ko‘rinadi va provayder yoki manzil uni tashlaydi. Yechim manbaga asoslangan qoida yoki alohida yo‘naltirish jadvali, kengroq NAT emas. Busiz xizmat tunnel sherigidan ishlaydi va boshqa har joydan muvaffaqiyatsiz bo‘ladi.
Kirish serverida keng masquerade qoidasi odatiy aybdor. U ommaviy manbani serverning asosiy manziliga qayta yozadi va klient haqiqiyni hech qachon ko‘rmaydi:
iptables -t nat -S POSTROUTING
NAT ni unga muhtoj xususiy VPN klientlari bilan cheklang va delegatsiya qilingan prefiksni tarjima qilmasdan qoldiring. So‘ngra server prefiksni umuman uzatishini tasdiqlang, chunki standart rad etuvchi uzatish zanjiri uni jimgina tashlaydi.
Ishonishdan oldin ikkala yo‘nalishni tekshiring
Tekshiruv bitta emas, to‘rtta kuzatuvdir. Provayder marshruti kelishini, yadro prefiksni tunnelga yuborishini, OpenVPN uni to‘g‘ri klientga bog‘lashini va javob ommaviy manba bilan butun qaytishini tasdiqlang. Har bir kuzatuvning o‘z buyrug‘i bor, shuning uchun nosozlik butun dizaynni emas, bir qatlamni ko‘rsatadi. Har bir konfiguratsiya o‘zgarishidan keyin ularni shu tartibda bajaring.
Yadrodan delegatsiya qilingan manzil qaysi yo‘lni olishini so‘rang va so‘rov bajarilayotganda tunnelni kuzating:
ip route get 198.51.100.70
sudo tcpdump -ni tun0 host 198.51.100.70
Teskari yo‘l filtrlash to‘g‘ri marshrutni bekor qilishi mumkin. Tunnelda va yuqori havolada samarali sozlamani tekshiring va qat‘iy rejim manbasi kelgan interfeysga mos kelmaydigan trafikni rad etishini yodda tuting:
sysctl net.ipv4.conf.tun0.rp_filter net.ipv4.conf.eth0.rp_filter
Nihoyat, nosozlik holatini sinab ko‘ring. Tunnelni to‘xtating va ommaviy prefiks oddiy yuqori havoladan oqib chiqmasligini tasdiqlang. VPN ni tiklash xizmatni xost ochadigan portlarni kengaytirmasdan qaytarishi kerak.