Ajratilgan chiqish: usb0'da VPN hovuzi, eth0'da shlyuz trafigi
Yo'naltirilgan VPN mijozlari usb0 orqali chiqishi mumkin, shlyuz esa o'zining eth0 standart yo'lini saqlaydi. To'liq tanlangan jadvalni tuzing, so'ng nosozlikni oqib ketish o'rniga yopilishga aylantiring.
Mijozlar ulanadi va autentifikatsiyadan o'tadi, so'ng ularning trafigi noto'g'ri yuqori kanal orqali chiqadi, chunki qurilmadagi yagona standart yo'l shlyuzning o'ziniki. O'sha standart yo'lni almashtirish qurilmaning o'z yangilanishlari va boshqaruv kirishini buzadi, shuning uchun tanlov «butun trafik»dan torroq bo'lishi kerak. Ishlaydigan shakl — mijozlar hovuzining ichki manba manziliga asoslangan va muqobil WAN ga ega ikkinchi marshrutlash jadvalini ko'rsatuvchi siyosat qoidasi. Undan keyin tekshiruv ro'yxati qoidaning o'zi haqida emas, to'liqlik va nosozlik paytida xatti-harakat haqida.
Manba manzili marshrutlash qarorigacha yetib borishini tasdiqlang
Manba diapazoniga mos keladigan siyosat qoidasi faqat paket qidiruv paytida o'sha manbani hali olib yurganda ishga tushadi. Yo'naltirilgan mijoz trafigi shunday qiladi, agar marshrutlashdan oldin yuqorida biror narsa uni qayta yozmagan bo'lsa. Shlyuz o'zi yaratadigan trafik bunday qilmaydi, va aynan shuning uchun shlyuzning o'z standart yo'li o'z joyida qolishi mumkin.
Bu yerda mahalliy sinovlar chalg'itadi. Shlyuzda ishga tushirilgan curl — shlyuz manzili bilan mahalliy yaratilgan oqim, shuning uchun u asosiy jadvalni oladi va mijoz yo'li haqida hech narsani isbotlamaydi. Ulangan mijozdan sinab ko'ring yoki hovuzga haqiqatan tegishli manba bilan trafik yarating.
Haqiqiy qiymatlarni yozishdan boshlang: hovuz prefiksi, uni olib yuruvchi tunnel interfeysi, ikkinchi WAN manzili va keyingi sakrashi, va ishlatmoqchi bo'lgan jadval raqami. Yangi qoidalarni qo'shishdan oldin har qanday oldingi urinishning eski qoidalarini tozalang, chunki turli ustuvorlikdagi takrorlangan qoidalar tasodifiy ko'rinadigan nosozliklar keltiradi.
To'liq bo'lgan tanlangan jadvalni tuzing
Jadval — do'sti bor standart yo'l emas. Har bir qidiruv uning ichida hal bo'lishi uchun yetarli marshrutlar kerak, jumladan WAN quyi tarmog'ining ulangan marshruti, keyingi sakrash yetib boradigan bo'lishi uchun. tun1 dagi 10.77.0.0/24 hovuzi, keyingi sakrashi 203.0.113.1 bo'lgan 203.0.113.20/24 WAN manzili va 600 jadvali uchun:
ip -4 route replace 203.0.113.0/24 dev usb0 src 203.0.113.20 table 600
ip -4 route replace 10.77.0.0/24 dev tun1 table 600
ip -4 route replace default via 203.0.113.1 dev usb0 table 600
ip -4 rule add priority 1500 from 10.77.0.0/24 lookup 600
Qoida mavjud hamma narsani ushlaydigan har qanday qoidadan pastroq ustuvorlikda turadi, shuning uchun mos keladigan mijozlar avval 600 jadvaliga tushadi, qolgani esa asosiy jadvalga tushadi. ip-rule ma'lumotnomasi tartiblangan qidiruv modeli va selektor sintaksisini to'liq bayon qiladi.
So'ng jadvalda nima yo'qligini o'ylab ko'ring. Faqat asosiy jadvalda marshruti bo'lgan manzil, masalan eth0 orqali yetib boriladigan boshqaruv quyi tarmog'i, 600 jadvalida topilmaydi va u yerda standart yo'l paydo bo'lgach asosiyga qaytmaydi. Agar bu yo'llar muhim bo'lsa, ularni tanlangan jadvalga aniq qo'shing, bu VPN chiqish jadvali uchun odatda to'g'ri javob.
Tinglovchining o'z trafigini siyosatdan tashqarida saqlang
OpenVPN tinglovchisining o'z tashqi ulanishi bor, u mijoz yetib kelgan yuqori kanal orqali olib o'tiladi. Bu trafik kelgan qaytish yo'lini saqlashi kerak, serverning ommaviy manzili yoki butun tunnel interfeysini qamrab oluvchi keng qoida uni muqobil jadvalga tortib yuborishi mumkin. Qoidani ichki hovuz bilan cheklang, boshqa hech narsa bilan emas.
Qaytish yo'li filtri ham xuddi shu sabab bilan ko'rishga arziydi. Mijozlarga javoblar usb0 orqali chiqib, so'rov boshqa kanal orqali kelgan bo'lsa, qattiq rp_filter sozlamasi marshrutlash siyosati to'g'ri deb hisoblagan paketlarni tashlab yuborishi mumkin. Qoida ishlamadi degan xulosaga kelishdan oldin ikkala interfeysdagi amaldagi sysctl qiymatlarini tekshiring.
Tartib qurilmadagi qolgan hamma narsaga nisbatan ham muhim. Docker ko'priklari, ikkinchi VPN va provayder obrazidan oldindan mavjud har qanday qoidalar ustuvorliklar qo'shadi, shuning uchun 100 ustuvorligi yolg'iz deb taxmin qilish o'rniga qoidalarning to'liq ro'yxatini o'qing.
Yo'naltirish va tarjimani marshrut bilan uyg'unlashtiring
Marshrutlash yuqori kanalni tanlaydi; u yo'naltirishga ruxsat bermaydi. Yadroda IPv4 yo'naltirish yoqilgan bo'lishi kerak, xavfsizlik devori esa mijozdan WAN ga yo'nalishni va qaytish trafigini qabul qilishi kerak. Oqimni tashlaydigan FORWARD zanjiri bilan to'g'ri jadval yo'qolgan marshrut kabi belgi beradi, shuning uchun ikkalasi bir o'tishda tekshiriladi.
Agar ikkinchi WAN xususiy hovuzni sizga qaytarib marshrutlamasa, o'sha chiqishda manbani tarjima qiling. Dinamik manzilli interfeys uchun hovuz va interfeys bilan cheklangan tor masquerade qoidasi odatiy tanlov:
iptables -t nat -A POSTROUTING -s 10.77.0.0/24 -o usb0 -j MASQUERADE
Bu yerda qamrov maqsaddan muhimroq. Har qanday chiquvchi interfeysga mos keladigan masquerade qoidasi eth0 orqali to'g'ri chiqadigan trafikni ham qayta yozadi va bu marshrutlash xatolarini tuzatish o'rniga yashiradi. Tarjima marshrutlash qaroridan keyin ishlaydi, shuning uchun noto'g'ri yuqori kanalga yuborilgan paketni hech qachon tuzata olmaydi.
Yo'llar farq qilganda tunnel xarajati ham e'tibor talab qiladi. Agar mijozlar katta TCP MSS bo'yicha kelishsa va muqobil WAN pastroq MTU ga ega bo'lsa yoki ichida tunnel bo'lsa, katta segmentlar to'xtab qoladi, kichiklari ishlaydi. Yo'naltirish yo'lida MSS ni siqish buni ahyon-ahyonda qotib qolish o'rniga oldindan aytib bo'ladigan xatti-harakatga aylantiradi.
usb0 yo'qolganda nima bo'lishini hal qiling
Bo'sh jadval nosozlikda yopiladigan holat emas. Agar mos keladigan marshrut yo'qolsa, qidiruv keyingi qoidaga o'tadi, asosiy jadvalga yetib boradi va eth0 standartini oladi. Ikkinchi WAN orqali chiqishi kerak bo'lgan trafik indamay birinchisi orqali chiqadi, siyosat bilan marshrutlangan joylashtirishda bu odatda siz eng kam xohlaydigan natija.
Bu orqaga chekinish qabul qilib bo'lmaydigan joyda 600 jadvaliga aniq terminal marshrut qo'shing, masalan blackhole standarti, yoki interfeys o'chirilgan paytda hovuzni xavfsizlik devorida tashlang. Ikkalasidan biri ham yozib qo'yish mumkin bo'lgan qaror; sukunat emas.
Barqarorlik oxirgi band. Ikkala kanalga ham ega kim bo'lsa ham, u tarmoq menejeri bo'ladimi, jo'natuvchi skript yoki ulanishning hayot tsikli bo'ladimi, har qayta ulanishda nusxalarni qo'shmasdan marshrutlar va qoidani qaytadan yaratishi kerak. Haqiqiy mijoz so'rovi va shlyuzdan alohida so'rov bilan tekshiring, ikkalasida ham kuzatilgan chiqishni tasdiqlang, so'ng ikkinchi WAN ni uzib, dizayn qilgan ikki natijadan qaysi biri haqiqatda sodir bo'lishini kuzating. IPv6 ga o'z jadvali, qoidasi va tarjimasi kerak; yuqoridagi IPv4 qoidasi bu haqda hech narsa demaydi.