Mahalliy ilova, VPN qoidasi: FORWARD zanjiringiz nega hech qachon ishga tushmaydi
Mashinadagi jarayon FORWARD emas, OUTPUT ishlatadi. To'g'ri nom fazosidagi ilgakni tanlang, so'ng belgi yoki oddiy marshrut yetarlimi, shuni hal qiling.
VPN trafigi uchun FORWARD zanjiriga qoida qo'shasiz, so'rovni o'sha Linux mashinasidan ishga tushirasiz, hisoblagich esa nolda qoladi. Qoida ehtimol to'g'ri. Paket bu yo'ldan hech qachon o'tmagan, chunki mashinaning o'zida paydo bo'lgan so'rovni u uzatmaydi. Paketning soketdan simgacha bo'lgan hayotini kuzatish nima uchun bunday bo'lishini va qoida aslida qayerda bo'lishi kerakligini tushuntiradi.
Paket qayerda tug'ilganini toping
Netfilter ilgaklari tartibi uch holatni ajratadi va ulardan faqat bittasi FORWARD bilan bog'liq:
| Origin | Path | Hook that sees it |
|---|---|---|
| Local process | OUTPUT then POSTROUTING | OUTPUT, POSTROUTING |
| Addressed to a local service | PREROUTING then INPUT | PREROUTING, INPUT |
| Received for another host | PREROUTING, FORWARD, POSTROUTING | FORWARD |
Mahalliy ilova OUTPUT yo'lida boshlanadi, chunki yadro paket shu yerda paydo bo'lishini va hech qachon uzatish nomzodi emasligini allaqachon aniqlagan. Tunnel yaratish bu tasnifni o'zgartirmaydi; tunnel paket chiqishi mumkin bo'lgan qurilma, mahalliy chiqishni tranzitga aylantiruvchi bosqich emas.
Ikki paket, bir hikoya
Tunnel ko'tarilgach, ilovaning ichki paketi va shifrlangan tashqi paket alohida obyektlardir. Ichki paket ilova tanlagan manzil va yukni olib yuradi. Tashqi paket shifrmatnni hamkorning manzili va portiga olib boradi va jismoniy interfeysdan haqiqatda o'tadigan ham shu.
Sizning siyosatingiz ulardan biriga tegishli, noto'g'risini tanlash esa qoida hech narsa qilmayotgandek ko'rinishining keng tarqalgan sababi. Hamkorning tashqi manziliga mos keladigan qoida har bir tunnel paketini bir xil ko'radi, ichkaridagi ilova nima qilsa ham. Ichki manzilga mos keladigan qoida sizga muhim trafikni ko'radi va u paket siz qoida o'rnatgan ilgakka yetgandagina ishga tushadi.
Nom fazolari chegarani suradi
Konteyner tamoyilni o'zgartirmasdan buni qiyinlashtiradi. Ilovaning so'rovi konteyner tarmoq nom fazosi ichidagi mahalliy chiqishdir. Xost bu trafikni virtual Ethernet interfeysida qabul qiladi va uzatishi mumkin, shuning uchun so'rovni yaratgan jarayon xostning OUTPUT zanjiriga hech qachon tegmasa ham, xostdagi FORWARD qoidasi mazmunli bo'lishi mumkin.
Ilgakni tanlashdan oldin qoidalar to'plami va tunnel aslida qayerda yashashini aniqlang. Konteyner ichidagi tunnel, konteyner u orqali marshrutlangan xostdagi tunnel va alohida nom fazosidagi tunnel uch xil topologiya va uch xil qoida joylashuvidir. Qoidalarni qurilmaga tegishli nom fazosi ichida o'qing, faqat standartdagisida emas.
Belgi umuman kerakmi, deb so'rang
Maqsad bitta manzil prefiksini tunneldan o'tkazish bo'lsa, o'sha prefiks uchun marshrut yetarli bo'lishi mumkin. Avval amaldagi marshrutlarni tekshiring, server itarib yuborgan hamma narsa bilan: yo'naltirilgan standart marshrut VPN orqali siz o'ylagan tor siyosatdan ancha ko'p trafik yuboradi va qancha belgi qo'ymang, natija maqsadga mos kelmaydi.
Tasniflash qaror marshrut ifodalay olmaydigan narsaga bog'liq bo'lganda kerak: manba, foydalanuvchi yoki jarayon kabi. Qabul qilinadigan trafik uchun PREROUTINGdagi belgi ishlaydi. Mahalliy trafik uchun belgi belgi qo'yilgandan keyin yangi marshrut qidiruvini boshlay oladigan chiqish bosqichida bo'lishi kerak. nftablesda bu chiqish ilgagidagi route turidagi zanjir; oddiy chiqish filtr zanjiri qiymatni qo'yib, marshrutni o'zgartirmay qoldiradi.
iptablesda ekvivalenti mangle OUTPUT tartibida yashaydi va xuddi shu talab amal qiladi: marshrutlash qarori belgi mavjud bo'lgandan keyin qayta ko'rib chiqilishi kerak. So'ngra siyosat qoidasi belgini iste'mol qilishi va yaroqli marshrut saqlagan jadvalga ishora qilishi kerak. conntrack belgisini qo'yish uchinchi, alohida amaldir; u oqimga qiymat saqlaydi va o'sha qiymatni marshrutlash o'qiy olishi uchun joriy paketga o'zi qo'ymaydi.
Qidiruv va hisoblagichni birga tekshiring
nft list ruleset
ip route get 198.51.100.25
ip route get 198.51.100.25 mark 0x1
Manzil va belgi misol uchun, ikki marshrut so'rovi esa ikki xil savolga javob beradi. Ikkinchisi paket o'sha belgini olib yursa yadro nima qilishini so'raydi; qoidalar to'plamingiz belgi berishini ko'rsatmaydi. Buni faraz sinovi deb biling, siyosat ishlayotganining isboti deb emas.
So'ngra zararsiz so'rov ishga tushiring va bir vaqtda ikki narsani kuzating: tanlagan ilgagingizdagi hisoblagichni va paket haqiqatda olgan chiqishni. Hisoblagich oshib, paket boshqa joydan chiqsa, belgi yoki jadval xato. Ikkisi ham oshmasa, paket o'sha ilgakka umuman yetmaydi va keyingi savol nom fazosi yoki yo'ldir.
Nihoyat, sinovni mexanizm ifodalay oladigan narsa bilan cheklang. Bitta manzil uchun bitta marshrut manzillari almashib turadigan xizmat uchun doimiy siyosatga aylanmaydi. Avval paketlar qamrovini hal qiling, so'ng qayta ulangandan keyin ham marshrutlash va belgilash dizayni o'sha qamrovni saqlay olishini tekshiring.