Bitta LAN quyi tarmog‘ini OpenVPN orqali o‘tkazing va standart marshrutni saqlang
Bitta quyi tarmoq tunnel orqali o‘tayotganda LAN standart marshrutini saqlang. Siyosat jadvalini asosiy jadval tahrirlari bilan solishtiring, so‘ng NAT yoki server tomonidagi marshrutni tanlang.
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
| Approach | What it buys | What it costs |
|---|---|---|
| Separate table plus source rule | LAN traffic and host traffic keep independent defaults | Every lookup now depends on rule order |
| Editing the main table only | Fewer moving parts on a single-purpose host | One mistake takes the gateway offline entirely |
| Two half-default routes | Works for a full-tunnel client | Ambiguous 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 vpnBu 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.1Agar 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 MASQUERADEServerni 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.