VPN tashqarisiga faqat bitta mahalliy veb xizmatni port bo‘yicha yo‘naltirish
Manba porti qoidasi bitta xost xizmatini WAN orqali chiqara oladimi, xostning qolgan qismi VPNdan foydalanishda davom etadimi va bu qancha turishini hal qiling.
Bitta xost xizmati internetga jismoniy yuqori kanal orqali javob berishi kerak, mashinadagi qolgan hamma narsa tunneldan foydalanishda davom etadi. Siyosatga asoslangan marshrutlash bu yukni ko‘tara oladimi, buni uchta shart hal qiladi va har birini qoida yozishdan oldin tekshirish arzon. Xizmat DNAT yoki yo‘naltirilgan port orqasida emas, shu xostda tugashi kerak, VPNning o‘z qoidalari istisnoga ruxsat berishi kerak va siz so‘rovni emas, javobni moslashtirishingiz kerak. Uchtadan biri bajarilmasa, quyidagi buyruqlar xatosiz yuklanadi, lekin foydali hech narsa qilmaydi.
Qoida yozishdan oldin uchta shartni tekshiring
Portni DNAT orqali e’lon qiluvchi konteyner yoki port yo‘naltirish orqasidagi server bu xostda paydo bo‘lmaydigan paketlar hosil qiladi. Bu paketlar yo‘naltiriladi, shuning uchun xostning mahalliy kirishiga bog‘langan qoida ularni hech qachon ko‘rmaydi va trafik standart marshrutni olishda davom etadi. Davom etishdan oldin xizmat aslida qayerda ishlashini tasdiqlang, chunki odamlar eng ko‘p xato qiladigan shart shu.
Ikkinchi shart — mexanika emas, siyosat. Tunnelni chetlab o‘tadigan har qanday marshrut tunnel maqsadidan istisno bo‘ladi va boshqariladigan xostda bu qaror siyosat egasiga tegishli, vaqt tugashini tuzatayotgan odamga emas.
Javobni moslashtiring, mijozning maqsad portini emas
TCP 443da tinglayotgan serverning javobi xostdan manba porti 443 bilan chiqadi. Xuddi shu xostdagi brauzer uzoq HTTPS saytga ulanayotganda vaqtinchalik manba porti va maqsad porti 443ni yuboradi. Ikkalasi ham 443 porti trafigi va ulardan faqat bittasi WAN jadvalini olishi kerak, shuning uchun maqsad portini moslashtirish noto‘g‘ri yarmini ushlaydi.
Javob yo‘nalishi — siz ajrata oladigan narsa. Manba portini moslashtiring, qoidani mahalliy yaratilgan paketlar bilan cheklang, shunda qoida brauzer so‘rovlariga tegmasdan xizmatning o‘z javoblarini qamrab oladi.
Qoida unga ishora qilishidan oldin to‘liq qaytish jadvalini quring
Bo‘sh jadval marshrut yo‘q degani, bu buzilgan siyosatdan ko‘ra buzilgan xizmatga o‘xshaydi. Avval uni to‘ldiring, xostda boshqa hech narsa talab qilmaydigan jadval raqami va ustuvorlik bilan:
ip -4 route add table 100 192.0.2.0/24 dev eth0
ip -4 route add table 100 default via 192.0.2.1 dev eth0
ip -4 rule add priority 1000 iif lo ipproto tcp sport 443 lookup 100
Raqamlarni nusxalash o‘rniga tirik xostdan o‘qing. ip -4 rule show qaysi ustuvorliklar olinganini aytadi va allaqachon mavjud ustuvorlikka qoida qo‘shish alohida-alohida to‘g‘ri ko‘rinadigan ikkita qoidaning tartibini jimgina o‘zgartiradi.
Bu yerda haqiqiy ishni ikkita selektor qiladi. iif lo — yadro xostning o‘zi yaratgan paketlarni qanday xabar qilishi, shuning uchun qoida tashqaridan kelayotgan yo‘naltirilgan trafikni tasodifan ushlay olmaydi. ipproto tcp sport 443 uni bitta transport va bitta port bilan cheklaydi, bu talab ruxsat berganidek qattiq. Protokol selektorini olib tashlasangiz, qoida UDP 443ni ham ushlaydi, bu boshqa xatti-harakatli boshqa xizmat.
Shaxsiy javoblarni tunnel ichida saqlang
Agar o‘sha tinglovchi shaxsiy tomondagi mijozlarga ham javob bersa, 100-jadvalda hamma narsani ushlaydigan standart WAN marshruti o‘sha javoblarni yuqori kanal orqali qaytarishga urinadi. WAN standartiga ergashmasligi kerak bo‘lgan shaxsiy prefikslarni qo‘shing yoki ularni keyingi siyosat qoidasiga tushishiga yo‘l qo‘ying:
ip -4 route add table 100 throw 10.90.0.0/24
throw marshruti bu jadvaldagi qidiruvni tugatadi va paketni qoidalar ro‘yxatiga qaytaradi, shuning uchun keyingi VPN siyosati o‘z imkoniyatini oladi. Uning o‘zi tunnelga hech narsa yo‘naltirmaydi va agar keyingi hech bir qoidada mos marshrut bo‘lmasa, paket baribir muvaffaqiyatsiz bo‘ladi; throwni tuzatish deb hisoblash o‘rniga keyingi siyosatni tekshiring.
Teskari yo‘l filtrlash va xostning xavfsizlik devori qoidalari kelayotgan so‘rovga hali ham tegishli. Validatsiyani yumshatishdan oldin ularning haqiqiy hukmlarini ko‘ring, chunki marshrut istisnosi rp_filter parametrini imkonsiz deb hisoblaydigan qaytish yo‘lini qabul qilishga majbur qilmaydi.
TCP, keyin QUIC, keyin qayta yuklashni sinab ko‘ring
Vakolatli tashqi mijozdan bitta va shaxsiy tomondan bitta ulanish oching, keyin javob qidiruvini haqiqiy manzillar va portlar bilan tekshiring. Tashqi javob 100-jadvalni olsa, shaxsiy javob olmasa, siyosat siz so‘ragan narsani qilyapti.
HTTP/3 UDP orqali taqdim etiladi va TCP qoidasi bilan moslashtirilmaydi, shuning uchun QUIC tinglovchisiga o‘z selektori kerak, aks holda HTTPS ishlayotganda ham u tunneldan foydalanishda davom etadi. Qaysi qoidalarga to‘xtasangiz, ularni interfeysga ega komponentda saqlang va qayta ulangandan yoki DHCP yangilanganidan keyin tasdiqlang. Qayta yuklashdan keyin raqib menejer ish vaqti marshrutini olib tashlasa, bu manbada tuzatilishi kerak bo‘lgan egalik muammosi, ustiga kengroq NAT qoidalarini qo‘shish sababi emas.