Niyə nftables OpenVPN-in müştərilər arası trafikini görə bilmir
Həmkar trafiki VPN prosesinin içində çatdırılır, ona görə də yönləndirmə sayğacları heç vaxt hərəkət etmir. Onu saymaq nüvə yolu ilə proses yolu arasında seçim etmək deməkdir.
Bir serverdə iki müştəri fayl mübadiləsi edir, ötürmə uğurla başa çatır və tunelə yönəltdiyiniz hər yönləndirmə qaydası sıfır paket bildirir. Qaydalar pozulmayıb və zəncir yanlış yerdə deyil. Həmkar-həmkar yönləndirməsi aktiv olduqda paket server prosesinin içində çatdırılır və host yığını heç vaxt marşrutlaşdırıcı olmur, buna görə də nüvə firewall-unun sayacağı bir şey qalmır. Bu ayrımı anlamaq qısa yolda qalmağınızı, yoxsa yolu nüvə vasitəsilə yenidən qurmağınızı müəyyən edir.
Serverdən bir paketi izləyin
Marşrutlaşdırılmış tuneldə demon hər müştərinin şifrəsi açılmış paketini tunel qurğusuna verir. Oradan host onu marşrutlaşdırır, yönləndirmə qarmağı işə düşür və tunel qurğusuna uyğun gələn qayda trafiki saya və ya ata bilər. Əksər firewall nümunələrinin güman etdiyi yol budur.
| Forwarding path | Who decides | What the host firewall sees |
|---|---|---|
| Kernel routing between clients | Host routing table and forward rules | Every inner packet, with interface names |
| Peer forwarding inside the server process | The VPN daemon's own peer table | Only the outer encrypted transport |
Qısa yol hostu ortadan çıxarır. Bir sessiyanın şifrəsi açılmış paketi demonun içində başqa sessiyaya verilir və daxili paket heç vaxt tunel qurğusunda buraxılmır və host tərəfindən marşrutlaşdırılmır. Kapsullanmış trafik yenə də fiziki interfeysi keçir, buna görə xarici tutma məşğul görünür, daxili qaydalar isə səssiz qalır. Tunel qurğusunda götürülmüş tutma heç nə göstərmir və bu, ötürməni orada izləməyi gözləyən hər kəsi təəccübləndirir. Bu asimmetriya qısa yolu demonun xaricindən tanımağın ən sürətli yoludur.
Hansı yolun işlədiyini həll edən sayğac testi
Tətbiq olunmalı qaydaya sayğac əlavə edin, həmin qaydanın bloklamalı olduğu iki müştəri arasında ötürmə işə salın və sonra sayğacı oxuyun.
sudo nft list ruleset
sudo nft add rule inet filter forward iifname "tun0" oifname "tun0" counter accept
sudo nft list chain inet filter forward
Ötürmə uğurla başa çatsa və sayğac sıfırda qalsa, nüvə o paketlərlə heç vaxt işləməyib və heç bir qayda redaktəsi bunu dəyişməyəcək. Eyni testi serverin özündəki xidmətə qarşı təkrarlayın, çünki həmin axın host yığınından keçir və onun sayğacı hərəkət edir. İki nəticəni müqayisə etmək cavabı verən şeydir.
Yanlış oxunuşun qarşısını iki detal alır. Zəncir etiketinə yazılmış interfeys adı təkbaşına heç nəyi filtrləmir, çünki uyğunlaşdırma qaydaların içindəki interfeys sahələrində baş verir. Və körpülənmiş 2-ci qat dizaynı yenə başqa cür davranır: orada müştərilər eyni yayım domenini paylaşır, buna görə həmkar aşkarlanması gözləniləndir, marşrut xətası deyil.
Kommutator giriş siyahısı deyil
Bir günün yarısını aparan hissə budur. Həmkar yönləndirməsi tək bir yandır-söndür parametridir və o yandıqda demon yeganə yönləndirmə nöqtəsidir. Host firewall-u kimin kimə çata biləcəyini ifadə edə bilmir və müştəri üzrə fayllar kommutatoru siyasət matrisinə çevirmir.
Həmkar üzrə qaydalar lazımdırsa, seçim qısa yoldan imtina etmək ilə nəzarət vasitəsi kimi host firewall-undan imtina etmək arasındadır. Onu söndürmək nüvə yönləndirməsini bərpa edir, bu da serverdə IP yönləndirməsinin aktiv olmasını və istədiyiniz axınlar üçün açıq qaydalar tələb edir. Onu yandırıq saxlamaq siyasətin demonun konfiqurasiyasında yaşaması deməkdir, bu da praktikada ya bütün həmkarlar, ya heç bir həmkar deməkdir.
Öz ünvan hovuzları və portları olan ayrı server prosesləri işlək orta yoldur. Hər proses dəqiq bir giriş qərarı daşıyır, buna görə iki qrup siyasət matrisi olmadan fərqli qaydalara sahib ola bilər. Host hovuzlar arasında marşrutlaşdıra bilər, o zaman firewall bu axınları görür, çünki onlar hostdan keçir. Xərc əlavə portlar, əlavə sertifikatlar və hər qrup üçün bir profildir.
Yönləndirmə nöqtəsini seçmək
Firewall siyasət mühərrikidirsə, hər axın üçün jurnal lazımdırsa və ya uçot vacibdirsə, nüvə yönləndirməsini seçin. Xərc host yığınından keçən ötürmə qabiliyyəti və saxlanmalı daha çox qaydadır. Fayda odur ki, sayğaclardan axın ixracatçılarına qədər hər mövcud alət trafiki yenidən təsvir edir. Kiçik serverdə bu xərc görünməzdir; məşğul releydə isə deyil.
Həmkar trafiki ya tamamilə icazəli, ya da tamamilə qadağandırsa və server buna görə ölçüləndirilibsə, prosesdaxili yönləndirməni seçin. Xərc odur ki, sayğaclar, növbə intizamları və bağlantı izləmə daxili axınları artıq təsvir etmir; bu yalnız sonradan heç kim onlara güvənməzsə məqbuldur.
Hansını seçsəniz seçin, onu firewall qaydalarının yanında yazın. Həmkar trafikinə icazə verdiyi görünən, halbuki demon hər halda qərar verən qayda dəsti uğursuz ötürməni ayıklayan növbəti şəxsi çaşdırır. Yalnız qaydaları oxuyan hər kəs nüvənin qapı olduğunu güman edəcək.
Qaydaları dəyişməzdən əvvəl nəyi yoxlamaq lazımdır
Serverin həqiqətən yüklədiyi konfiqurasiyanı oxuyun, redaktə etdiyinizi xatırladığınız faylı deyil, və həmkar seçiminin mövcud olub-olmadığını təsdiqləyin. Əgər onu dəyişmisinizsə, xidmətin diskdəki faylı yalnız yenidən yazmadığına, həqiqətən yenidən yüklədiyinə əmin olun.
Sonra qaydanın ümumiyyətlə uyğun gəldiyini sübut etmək üçün testi müştəridən serverə axınla təkrarlayın və göndərilən marşrutları yoxlayın, çünki çatışmayan marşrut müştəri tərəfindən tam olaraq firewall blokuna bənzəyir. Qayda sırasını yalnız hansı yönləndirmə nöqtəsinin qərara sahib olduğunu bildikdən sonra dəyişin.