Miért nem látja az nftables az OpenVPN ügyfelek közötti forgalmát
A partnerek közötti forgalom a VPN-folyamaton belül kerül kézbesítésre, ezért a továbbítási számlálók soha nem mozdulnak. Megszámlálni annyit tesz, mint választani a kernelút és a folyamatút között.
Két ügyfél egy szerveren fájlokat cserél, az átvitel sikerül, és minden továbbítási szabály, amelyet az alagútra irányít, nulla csomagot jelent. A szabályok nincsenek elrontva, és a lánc sincs rossz helyen. Ha a partnerek közötti továbbítás be van kapcsolva, a csomag a szerverfolyamaton belül kerül kézbesítésre, és a gazdagép veremtára soha nem lesz útválasztó, így a kernel tűzfalának nincs mit számlálnia. Ennek a kettősségnek a megértése dönti el, hogy megtartja-e a rövidítést, vagy újraépíti az utat a kernelen keresztül.
Kövessen egy csomagot a szerveren keresztül
Egy útválasztott alagútban a démon minden ügyfél visszafejtett csomagját átadja az alagút-eszköznek. Onnan a gazdagép továbbítja, lefut a továbbítási horog, és az alagút-eszközhöz illeszkedő szabály számlálhatja vagy eldobhatja a forgalmat. Ezt az utat feltételezi a legtöbb tűzfalpélda.
| 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 |
A rövidítés kiveszi a gazdagépet a középpontból. Az egyik munkamenet visszafejtett csomagja a démonon belül egy másik munkamenethez kerül, és a belső csomag soha nem kerül ki az alagút-eszközre, és a gazdagép sem továbbítja. A beágyazott forgalom továbbra is átlépi a fizikai interfészt, ezért a külső rögzítés foglaltnak tűnik, miközben a belső szabályok hallgatnak. Az alagút-eszközön készített rögzítés semmit sem mutat, ami mindenkit meglep, aki ott szeretné látni az átvitelt. Ez az aszimmetria a leggyorsabb módja annak, hogy a rövidítést a démonon kívülről felismerje.
A számlálós próba, amely eldönti, melyik út futott le
Csatoljon számlálót az érvényesülni hivatott szabályhoz, futtasson átvitelt két ügyfél között, amelyeket ennek a szabálynak blokkolnia kellene, majd olvassa le a számlálót.
sudo nft list ruleset
sudo nft add rule inet filter forward iifname "tun0" oifname "tun0" counter accept
sudo nft list chain inet filter forward
Ha az átvitel sikerül, és a számláló nullán marad, a kernel soha nem kezelte ezeket a csomagokat, és ezen semmilyen szabályszerkesztés nem változtat. Ismételje meg ugyanezt a próbát a szerveren futó szolgáltatás ellen, mert az a folyam valóban átmegy a gazdagép veremtárán, és a számlálója mozdul. A két eredmény összevetése adja meg a választ.
Két részlet akadályozza meg a téves leolvasást. A lánccímkébe írt interfésznév önmagában semmit nem szűr, mert az illesztés a szabályokon belüli interfészmezőkön történik. A hidalt 2. rétegű kialakítás pedig megint másképp viselkedik: ott az ügyfelek egy üzenetszóró tartományt osztanak meg, ezért a partnerfelderítés várható, nem útválasztási hiba.
A kapcsoló nem hozzáférési lista
Ez az a rész, amely egy délutánba kerül. A partnerek közötti továbbítás egyetlen be- vagy kikapcsolt beállítás, és amíg be van kapcsolva, a démon az egyetlen továbbítási pont. A gazdagép tűzfala nem tudja kifejezni, ki kit érhet el, és az ügyfelenkénti fájlok nem teszik a kapcsolót házirend-mátrixszá.
Ha partnerenkénti szabályokra van szüksége, a választás a rövidítés feladása és a gazdagép tűzfalának mint vezérlőnek a feladása között van. Kikapcsolása visszaállítja a kernel továbbítását, amihez IP-továbbítás kell a szerveren és kifejezett szabályok a kívánt folyamokhoz. Bekapcsolva hagyása azt jelenti, hogy a házirend a démon konfigurációjában él, ami a gyakorlatban minden partner vagy egy sem.
Külön szerverfolyamatok saját címtárakkal és portokkal jelentik a járható középutat. Minden folyamat pontosan egy hozzáférési döntést hordoz, így két csoport házirend-mátrix nélkül is kaphat különböző szabályokat. A gazdagép továbbíthat a tárak között, ha ez a szándék, és akkor a tűzfal látja ezeket a folyamokat, mert átlépik a gazdagépet. Az ár a többletport, a többlettanúsítvány és a csoportonkénti profil.
A továbbítási pont kiválasztása
Akkor válassza a kernel továbbítását, ha a tűzfal a házirend-motor, ha folyamonkénti naplózásra van szüksége, vagy ha az elszámolás számít. Az ár a gazdagép veremtárán átmenő átviteli teljesítmény és a több karbantartandó szabály. Az előny, hogy minden meglévő eszköz, a számlálóktól a folyamkiviteli eszközökig, újra leírja a forgalmat. Kis szerveren ez az ár láthatatlan; forgalmas továbbítón nem.
Akkor válassza a folyamaton belüli továbbítást, ha a partnerek közötti forgalom vagy teljesen engedélyezett, vagy teljesen tiltott, és a szerver erre van méretezve. Az ár az, hogy a számlálók, a várakozási sorok fegyelme és a kapcsolatkövetés már nem írja le a belső folyamokat; ez csak akkor elfogadható, ha később senki nem támaszkodik rájuk.
Bármit is választ, írja le a tűzfalszabályok mellé. Egy szabálykészlet, amely úgy tűnik, engedélyezi a partnerek közötti forgalmat, miközben a démon úgyis dönt, félrevezeti a következő embert, aki egy sikertelen átvitelt hibakeres. Aki csak a szabályokat olvassa, azt fogja feltételezni, hogy a kernel a kapu.
Mit ellenőrizzen a szabályok módosítása előtt
Azt a konfigurációt olvassa, amelyet a szerver ténylegesen betöltött, ne azt a fájlt, amelyről emlékszik, hogy szerkesztette, és erősítse meg, hogy a partnerbeállítás jelen van-e. Ha módosította, győződjön meg róla, hogy a szolgáltatás újratöltött, és nem csak újraírt egy fájlt a lemezen.
Ezután ismételje meg a próbát egy ügyféltől szerverig tartó folyammal, hogy bebizonyítsa, a szabály egyáltalán illeszkedik, és ellenőrizze a küldött útvonalakat, mert egy hiányzó útvonal az ügyfél oldaláról pontosan tűzfaltiltásnak látszik. A szabályok sorrendjét csak akkor módosítsa, ha tudja, melyik továbbítási pont birtokolja a döntést.