Nega ofis LAN tarmog'idagi VPN mijozi har bir javobni yo'qotadi
Ofis LAN tarmog'ida va bir xil quyi tarmoqdagi tunnelda bo'lgan noutbuk noto'g'ri interfeysdan javob beradi. Bo'sh teskari yo'l filtrlash bu sukunatni tushuntiradi.
Noutbuk Ethernet orqali ofisning /24 tarmog'ida o'tiradi va shu /24 ichida yashovchi OpenVPN serveriga ham ulanadi. Hamkasb tunnel manziliga ping yuboradi; so'rov aniq yetib boradi, ammo hech narsa qaytmaydi. Tunnel jurnali toza va ko'rish hali ishlaydi, shuning uchun tunnel noto'g'ri gumondor. Qabul qiluvchi mashinada IPv4 manba tekshiruvi paketni biror narsa o'qishidan oldin tashlab yuboradi.
Tashlash paketni biror narsa o'qishidan oldin sodir bo'ladi
Manba tekshiruvi har bir kiruvchi paket haqida bitta savol beradi: agar bu host o'sha manbaga javob bersa, javob paket hozir kirgan interfeysdan chiqadimi? Javob yo'q bo'lsa, yadro paketni kelgan zahoti tashlaydi. Hech qanday soket ham, uzatish yo'li ham uni hech qachon ko'rmaydi, shuning uchun tunnelda olingan yozuv ilova hech qachon olmaydigan so'rovni baribir qayd etadi.
Bu yerda mijoz o'z tunnelida 10.66.0.9 ni ushlab turadi, OpenVPN serveri esa ofis prefiksi ichidagi 192.168.80.10 dan javob beradi. 192.168.80.25 dagi hamkasb tunnel manziliga ping yuboradi, shuning uchun so'rov LAN ni kesib o'tadi, server uni tunnelga yo'naltiradi va u ofis manba manzilini ko'tarib mijozning tunnel interfeysiga yetib boradi. O'sha mashinaning marshrutlash jadvalida ofis prefiksi Ethernet qurilmasiga tegishli, tunnelga emas. Tekshiruv kelish interfeysini marshrut bilan solishtiradi, nomuvofiqlikni topadi va paketni tashlaydi, shuning uchun ikkala uch ham sog'lom tunnel haqida xabar berganida hamkasb to'liq yo'qotishni ko'radi.
Ko'zgu yo'nalishi ham xuddi shu shaklga ega: mijoz ofis tomon boshlaganda javoblar ofis tomonida xuddi shu sabab bilan tashlanishi mumkin. Faqat bir yo'nalishda tekshirilgan tuzatish odatda ikkinchi chipta bo'lib qaytadi.
Har qanday sysctl ga tegishdan oldin amaldagi rejimni isbotlang
Tarqatma standartiga ishonish o'rniga haqiqiy qiymatlarni o'qing, chunki har bir interfeys sozlamasi qarorning yarmi xolos. Amaldagi rejim interfeys qiymati va all qiymatidan kattasi, shuning uchun tunnel interfeysidagi nol all bir bo'lguncha hech narsani bildirmaydi. Qattiq rejim qarori marshrutlash qarori, shuning uchun yadro bajaradigan qidiruvni bajaring va uning javobini paket haqiqatan kelgan interfeys bilan solishtiring.
tcpdump -ni tun0 icmp and host 192.168.80.25
ip route get 192.168.80.25
sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.tun0.rp_filter
Keyin xato hisoblagichini kuzatib pingni takrorlang. Yozuv allaqachon ko'rsatgan so'rov yonida o'sayotgan son bu tashlashning imzosi, yo'qolgan marshrutniki emas. U yerda bo'lganingizda Mars paketlari jurnalini yoqing, yadro rad etgan manba va interfeysni nomlasin. Birgalikda ular shifrni, xavfsizlik devorini va yo'q iroute ni tushuntirish sifatida istisno qiladi.
Biror narsani o'zgartirishdan oldin boshlang'ich chiziqni yozib qo'ying: ikkala qiymat, qidiruv tanlagan qurilma va siz kuzatgan hisoblagich. O'zgarish siz o'ylagan ishni qildimi-yo'qmi, buni keyin aynan o'sha yozuv aytadi.
Har bir rp_filter rejimi aslida nimani qabul qiladi
Yadro har bir interfeys uchun uchta qiymatni ko'rsatadi va ular bitta qoidaning uchta tusidir emas. Nol tekshiruvni o'chiradi. Bir qattiq va manba kelish interfeysi orqali orqaga marshrutlanishini talab qiladi. Ikki bo'sh va jadvalda manbaga qandaydir marshrut mavjudligini talab qiladi, u qayoqqa ko'rsatsa ham.
| Value | Name | Accepts | Still rejects |
|---|---|---|---|
| 0 | off | any source at all | nothing on this check |
| 1 | strict | a source routed back out the arrival interface | a source whose route points elsewhere |
| 2 | loose | a source with any route in the table | a source with no route at all |
Bu yerda muhim satr — bo'sh satr va uning hali ham rad etadigani. Jadvalingizda istalgan joyda marshrutlanadigan soxta manba o'tadi, umuman marshruti yo'q manba esa hali ham rad etiladi. Noutbukda bu tor yon berish; boshqalarning trafigini uzatuvchi routerda u keng. Rejim hostga tegishli, shuning uchun bir xil raqam ikki joyda turlicha og'irlik ko'taradi.
Bu topologiyaga qaysi satr kerakligi odatdan emas, jadvaldan kelib chiqadi. Paket qonuniy va uning manbasi marshrutlanadi, shuning uchun bo'shi uni qabul qiladi, qattig'i yo'q. Bu ishda hech narsa nolni talab qilmaydi va nolni tanlash bu yerda hech qanday xarajat qilmaydigan tekshiruvni olib tashlardi.
Noaniqlikni yo'q qiladigan eng kichik o'zgarishni tanlang
Bo'sh rejim mos keladigan eng kichik o'zgarish va bu qattiqlikning haqiqiy pasayishi, zararsiz o'chirgich emas. Topologiya ruxsat bergan har safar yaxshiroq variant bor: qoplanishni olib tashlang, noaniqlik yo'qoladi.
Ofis prefiksi faqat Ethernet orqali kerak bo'lgan joyda uni profil tortadigan marshrutlardan chiqarib tashlang, manzil bir yo'l bilan yetib boriladigan bo'ladi. Ikki yo'l chindan ham birga mavjud bo'lishi kerak bo'lsa, har bir interfeysda tekshiruvni bo'shatish o'rniga siyosat qoidasi bilan manba va qurilmani qotirib qo'ying. Bu mashinadagi qolgan hamma narsa uchun qattiq filtrlashni saqlaydi va istisnoni keyingi injener qidiradigan joyda hujjatlashtiradi.
Qaysi yo'lni tanlasangiz ham, uni tirik buyruqqa emas, sysctl drop-in fayliga yozing. all va default kalitlarini birga o'rnating, qayta ulanish qattiq rejimni jimgina qaytara olmasin.
# /etc/sysctl.d/99-rp-filter.conf
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2
sysctl --system
Bo'sh rejim nimadan voz kechadi, va qayerda
Bo'sh rejim hech qanday marshrut yetib bormaydigan manbani hali ham rad etadi va tasodifan marshrutlanadigan soxta manbani rad etishni to'xtatadi. Noutbukda bu tor yon berish. O'ziga tegishli bo'lmagan trafikni uzatuvchi qurilmada xuddi shu tanlov ancha keng. Shuning uchun bir xil sozlama qayerda ishlashiga qarab ikki juda boshqacha ma'no kasb etadi.
Boshqalar uchun trafik uzatuvchi hostda tekshiruvni butunlay o'chirish — qochish kerak bo'lgan yagona tuzatish. Nol bo'sh rejim ehtiyotkorlik bilan saqlaydigan tekshiruvni tashlab yuboradi. Agar host boshqalar uchun uzatsa, buning o'rniga oldingi bo'limdagi siyosat qoidasi variantini yoqlang.
Ikki interfeys, qoplanuvchi prefiks va endi muvaffaqiyatli bo'ladigan aniq sinovni nomlaydigan eslatma qoldiring. Bu keyingi injener uchun filtrlash sozlandi degan satrdan foydaliroq.