LAN uchun marshrutlash qiladigan va ayni paytda VPN ga ulanadigan qurilmalar o‘zlari bilan bir xil bahsga tushadi: tunnel standart marshrutga ega bo‘lishni xohlaydi, LAN esa uni qaytarib olishi kerak. OpenVPN ulanganda tunnel orqali standart marshrut yoki ikkita yarim standart marshrut o‘rnatishi mumkin, bu noutbuk uchun to‘g‘ri, qo‘shnilari uning LAN manzilidan javob kutadigan shlyuz uchun esa noto‘g‘ri. Javob VPN dan voz kechish emas. Javob ikkala qarorga turli jadvallar berishdir.

Bitta standart marshrut, ikki egasi

Yo‘naltirilgan trafik va mahalliy hosil bo‘lgan trafik bir xil yo‘ldan yurishi shart emas. LAN mijozlariga tunnel faqat siz tanlagan manzillar uchun kerak, xosting o‘zining boshqaruv seanslari va o‘sha mijozlarga bergan javoblari esa LAN standart marshrutiga muhtoj. Ikkalasini asosiy jadvalda aralashtirish ikki xil savolga bitta javobni majburlaydi.

OpenVPN da aynan shu uchun kalit bor. route-noexec mijozning asosiy jadvalga umuman tegishini taqiqlaydi, u ishlatadigan qiymatlar esa route-up skriptiga route_vpn_gateway, dev va interfeys manzillari sifatida eksport qilinadi. So‘ng qaysi jadval qaysi marshrutni olishini siz hal qilasiz, keyinroq o‘qishingiz mumkin bo‘lgan kodda.

Siyosat jadvali yoki asosiy jadvalni qayta yozish

ApproachWhat it buysWhat it costs
Separate table plus source ruleLAN traffic and host traffic keep independent defaultsEvery lookup now depends on rule order
Editing the main table onlyFewer moving parts on a single-purpose hostOne mistake takes the gateway offline entirely
Two half-default routesWorks for a full-tunnel clientAmbiguous on a host that must answer on its LAN address

Alohida jadval bitta quyi tarmoqdan nariga miqyoslanadigan yagona variant. Unga bir marta nom bering, so‘ng nomi bilan murojaat qiling, hech kim raqamni yodda saqlashi shart bo‘lmasin:

echo "10 vpn" >> /etc/iproute2/rt_tables
ip rule add from 192.168.50.0/24 table vpn
ip route add default via 10.8.0.1 dev tun0 table vpn

Bu yerdagi manzillar o‘rinbosar. Biror narsani ishga tushirishdan oldin LAN prefiksini, tunnel shlyuzini va qurilma nomini o‘z joylashtiruvingizdan almashtiring.

Qoida xostingga ham mos kelishi kerak

Faqat LAN prefiksiga mos keladigan qoida yo‘naltirilgan paketlarni qamrab oladi. U shlyuzning o‘zi yaratadigan trafikni qamrab olmaydi va LAN mijozlariga qaytariladigan, manba sifatida shlyuzning LAN manzilini olib yuruvchi javoblarni ham qamrab olmaydi. O‘sha qidiruvlar main ga tushadi va baribir tunnel orqali chiqishi mumkin.

Shlyuzning o‘z LAN manzili uchun ikkinchi qoida qo‘shing yoki birinchi qoidani ikkalasini ham qamrab oladigan to‘plamgacha kengaytiring. Tartib muhim: aniqroq qoidani birinchi qo‘ying va natijani manbani aniq ko‘rsatadigan qidiruv bilan tekshiring.

ip route get 203.0.113.9 from 192.168.50.1

Agar bu mahalliy qolishi kerak bo‘lgan manzil uchun tunnel qurilmasini ko‘rsatsa, jadvalda nima bo‘lishidan qat’i nazar, qoidalar to‘plami noto‘g‘ri.

NAT yoki narigi tomonda marshrut

VPN serveri tunnel quyi tarmog‘ini biladi, boshqa hech narsani bilmaydi. LAN manba manzili bilan kelgan paketlarning qaytish yo‘li yo‘q, agar kimdir uni ta’minlamasa, va uni ta’minlashning aynan ikki usuli bor. Serverda LAN prefiksi uchun marshrut qo‘shish asl manbani oxirigacha ko‘rinadigan qilib saqlaydi, auditdan o‘tgan dizayn odatda shuni xohlaydi. Shlyuzda maskeradalash manbani tunnel manziliga qayta yozadi va serverdan hech qanday hamkorlik talab qilmaydi.

iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o tun0 -j MASQUERADE

Serverni boshqarmasangiz va u yerda marshrut qo‘sha olmasangiz, NAT ni tanlang. Jurnallar, kirish nazorati yoki qaytish yo‘li simmetriyasi muhim bo‘lsa, server tomonidagi marshrutni tanlang, chunki maskeradalash asl manzilni narigi tomon qayd qiladigan hamma narsadan o‘chiradi.

Har holda yo‘naltirish yoqilgan bo‘lishi kerak, qat’iy teskari yo‘l filtri esa main o‘sha manba uchun tunnelni tanlamagan holatda javobni tashlab yuborishi mumkin. Tunnelni ayblashdan oldin amaldagi qiymatni tekshiring.

Bo‘linish qayta ulanishdan keyin ham saqlanib qolsin

Qo‘lda qo‘shilgan qoidalar va marshrutlar interfeys qayta yaratilganda yo‘qoladi, eski jadval yozuvi esa uni oqlagan seansdan uzoqroq yashashi mumkin. Jadval qoidasini, tunnel marshrutini va maskerada yozuvini mijozning route-up skriptiga joylashtiring va skript boshida jadvalni tozalang, eski shlyuz yangi seansga o‘tib keta olmasin.

Ikki tomondan tekshiring: shlyuzda LAN manbasi bilan qidiruv va LAN mijozidan tunnel orqali o‘tishi kerak bo‘lgan manzilga haqiqiy so‘rov. Mavjud bo‘lsa-da hech qachon tanlanmaydigan marshrut, hisoblagichlarni o‘qimaguningizcha umuman marshrut yo‘qdek ishlaydi.

O'xshash maqolalar