Nega ochiq Linux xizmatingiz VPN orqali javob beradi
Mahalliy xizmat eth0 da qabul qilib, to‘liq tunnel VPN orqali javob bera oladi. To‘liq WAN jadvali bilan manba qoidasi bu javoblarni asl yo‘lda ushlab turadi.
Soketda hech narsa so‘rovni qaysi interfeys tashiganini eslab qolmaydi, shuning uchun to‘liq tunnel VPN ning standart marshruti WAN ga tegishli javobni ushlab qolishi mumkin. Xizmat kiruvchi interfeysni e’tiborsiz qoldirmayapti; Linux mahalliy yaratilgan javobni manzil va manba siyosatiga ko‘ra marshrutlaydi. Manbaga asoslangan qoida buning o‘rniga faqat xizmatning javoblarini to‘liq WAN jadvali orqali yuborishi va oddiy chiqishni tunnelda qoldirishi mumkin. Javob noto‘g‘ri yo‘ldan chiqayotganda ham port ochiq qoladi, shuning uchun alomat bir tomonlama ko‘rinadi.
Noto‘g‘ri tushuncha: javoblar kelgan interfeysga ergashadi
eth0 ga kelgan paket eth0 dan chiqishi kerakdek tuyuladi. Holatsiz paket filtrlarini shunday yozish mumkin, kirish tomonidagi tcpdump esa so‘rovni kutilgan joyda ko‘rsatadi. Xost o‘zi yaratadigan trafik uchun marshrutlash bunday ishlamaydi.
Xizmat ulanishni qabul qilgach, uning javobi yangi, mahalliy yaratilgan paketdir. Yadro javobning manzili va manbasi uchun marshrutlash qoidalarini ko‘rib chiqadi, VPN ning standart marshruti esa to‘liq haqiqiy javobdir. Soketda hech narsa so‘rovni qaysi interfeys tashiganini eslab qolmaydi.
Shuning uchun alomat bir tomonlama ko‘rinadi: so‘rovlar keladi, javoblar yo‘qoladi. Shuning uchun kiruvchi port uchun firewall qoidasi qo‘shish ham hech narsani o‘zgartirmaydi. Paket ichkariga ketayotgan yo‘lda to‘sib qo‘yilmayapti; u tashqariga ketayotgan yo‘lda boshqa joyga marshrutlanmoqda. Javobni manba bilan aniqlangan qidiruv orqali kuzatib boring va aylanma yo‘l ko‘rinadi.
Yadro aslida nimani marshrutlaydi: manba manzili
Sizga kerak bo‘lgan tutqich — xizmat javoblar uchun ishlatadigan mahalliy manzil. eth0 manzili misol tariqasida 192.0.2.10/24 va shlyuzi 192.0.2.1 bo‘lgan xostda bu manzil interfeysda mavjud. Bulut VM da ommaviy manzil yuqorida tarjima qilingan va mehmonda yo‘q bo‘lishi mumkin, shuning uchun xost haqiqatan egalik qiladigan manzildan foydalaning.
Jadval raqami yoki qoida ustuvorligini band qilishdan oldin joriy holatni tekshiring. Mavjud siyosat qoidalari yangisini soya qilishi mumkin, xuddi shu raqamli eski jadvalda esa allaqachon aloqasiz marshrutlar bo‘lishi mumkin:
ip -4 addr show dev eth0
ip -4 rule show
ip -4 route show table all
So‘ngra manbaga ko‘ra jadval tanlang. Qoida allaqachon 192.0.2.10 ni olib yurgan javoblarga mos keladi, ya’ni siz istisno qilmoqchi bo‘lgan mahalliy tugagan trafikka. Yo‘naltirilgan trafik va boshqa mahalliy manzillardan kelgan paketlar mos kelmaydi.
Yarim standart emas, to‘liq qaytish jadvalini quring
Faqat standart marshrutli jadval yetarli emas. Yadro hali ham shlyuzni hal qilishi kerak, bu hal esa xuddi shu jadvaldagi ulangan prefiksni talab qiladi. Bu prefiks bo‘lmagan jadval standart marshruti to‘g‘ri ko‘rinsa ham shlyuzni hal qilishda muvaffaqiyatsiz bo‘ladi. Ikkalasini ham qo‘shing, so‘ngra manba qoidasini jadvalga yo‘naltiring:
ip -4 route add table 100 192.0.2.0/24 dev eth0 src 192.0.2.10
ip -4 route add table 100 default via 192.0.2.1 dev eth0
ip -4 rule add priority 1000 from 192.0.2.10/32 lookup 100
Misolni ko‘chirish o‘rniga haqiqiy prefiks va shlyuzdan foydalaning. On-link shlyuz bilan /32 qilib sozlangan bulut interfeysi boshqa ulangan marshrutni talab qiladi, noto‘g‘ri prefiksdan qurilgan jadval esa birinchi sakrashda muvaffaqiyatsiz bo‘ladi. src atributi o‘sha marshrut uchun afzal manbani ko‘rsatadi; u manba qoidasini almashtirmaydi.
Tartib ham muhim. Pastroq ustuvorlik raqamli keng qoida birinchi baholanadi, shuning uchun manba qoidasiga bu trafikni asosiy jadvalga qaytaradigan har qanday qoidadan oldin yetish kerak. Ustuvorliklarni qo‘shgandan so‘ng ip rule show bilan tekshiring, faqat yuklanishda emas.
Manba bilan aniqlangan qidiruv bilan tekshiring
Yadrodan xizmat manzilidan sinov manziliga marshrutlashni so‘rang. Javob tunnelni emas, eth0 va WAN shlyuzini nomlashi kerak:
ip -4 route get 198.51.100.25 from 192.0.2.10
So‘ngra yangi ruxsat berilgan ulanish o‘rnating va ikkala yo‘nalishni kuzating. To‘g‘ri jadvalni tanlaydigan, lekin jonli ulanish hali ham muvaffaqiyatsiz bo‘lgan qidiruv jadvalga emas, teskari yo‘l filtratsiyasiga yoki firewall qoidasiga ishora qiladi. Biror narsani global o‘chirishdan oldin o‘sha nazoratlarni tekshiring.
Yakuniy marshrutlar va qoidani interfeysga egalik qiluvchi tarmoq menejeri ostiga qo‘ying. Manzil o‘zgarishlari, DHCP yangilanishi va VPN qayta ulanishlari yadro holatini qayta yozadi, qo‘lda qo‘shilgan qoida esa keyingi hodisadan keyin yo‘qoladi yoki eskirgan shlyuzga ishora qiladi.
Bu istisno qayerda tugaydi
Qoida bitta manba manzilidan mahalliy tugagan trafikni istisno qiladi. U Docker e’lon qilgan portlarni, DNAT ni yoki xost orqali yo‘naltirilgan xizmatlarni qamrab olmaydi, chunki bunday paketlar yo‘naltirilgan trafik sifatida marshrutlanadi va hech qachon xostning mahalliy manbasini xuddi shunday olib yurmaydi. Bunday dizaynlar odatda kirishda qo‘yilgan belgi va shu belgiga mos keladigan qoidani talab qiladi.
U xostning ommaviy manzilini interfeysda ko‘rsatmaydi ham. Yuqoridagi NAT o‘sha manzilga ega bo‘lsa, javob hali ham o‘sha NAT kutgan yo‘l orqali chiqishi kerak, shuning uchun WAN jadvali taxmin qilingan ommaviy diapazonni emas, asl shlyuz va prefiksni aks ettirishi kerak.
Istisnoni jadval raqami, qoida ustuvorligi va aniq manba manzili bilan hujjatlashtirib saqlang. VPN yoki interfeysdagi keyingi o‘zgarish uni jimgina buzishi mumkin, uchta qiymatni nomlaydigan eslatma esa mijoz hisobotidan alomatni qayta topishdan tezroq tekshiriladi.
Agar manba bilan aniqlangan qidiruv muvaffaqiyatli bo‘lgandan keyin ham xizmat noto‘g‘ri yo‘ldan javob bersa, jonli soketning manba manzilini qoidadagi manzil bilan solishtiring. Wildcard manzilga bog‘langan xizmat siz sinagan manzildan boshqa manbani tanlashi mumkin, o‘sha nomuvofiqlik esa qolgan bo‘shliqdir.