Az OpenVPN pull-filter többet talál a szándékolt útvonalnál
A pull-filter előtagként hasonlítja össze a szöveget a továbbított beállításokkal, ezért a route a route-gatewayt és a route-ipv6-ot is elkapja. Először az igéket, aztán az útvonalakat.
Hozzáad egy sort, hogy megtartsa a helyi alapértelmezett útvonalát, és utána az alagút már nem éri el a belső DNS-kiszolgálót. A sor pull-filter ignore "route" volt, ami nem azt jelenti, hogy "hagyd figyelmen kívül ezt az útvonalat". Azt jelenti, hogy "dobd el minden továbbított beállítást, amelynek szövege ezzel az öt betűvel kezdődik", és egy normál kiszolgálón ez magában foglalja a route-gateway, route-metric és route-ipv6 beállításokat is magukkal az útvonalakkal együtt. Az alábbi ellenőrzőlista az, amit végigfutok, mielőtt hozzányúlok egy profilhoz, amelyet másnak kell használnia.
A szűrő csak a továbbított beállításokra hat
pull-filter csak azokra a beállítási sorokra hat, amelyeket a kiszolgáló az alagút létrejötte után küld, és semmi másra. A helyi fájlban írt beállításokat nem érinti, az alkalmazásforgalmat sem. Ha abban reménykedett, hogy megakadályozza egy folyamat alagút használatát, ez teljesen rossz eszköz, és a szűrők semmilyen kombinációja nem fogja megtenni.
Ez a hatókör hasznos, mert azt jelenti, hogy békén hagyhatja a kiszolgáló konfigurációját, és mégis helyben elutasíthat belőle egy részt. Ez egyben olyan korlát, amelyet érdemes a jegybe írni: a szűrő azt változtatja meg, hogy ez az ügyfél mit fogad el, nem azt, hogy a kiszolgáló mit kínál. Nincs hatással ugyanazon profil más felhasználóira. Nem éli túl azt sem, ha olyan másik ügyfélre vált, amely nem valósítja meg a beállítást, amit érdemes tudni, mielőtt munkafolyamatot épít rá.
Erősítse meg, mit küld valójában a kiszolgáló, mielőtt megírja a mintát. Magas részletességi szinten az ügyfél kinyomtatja a kapott továbbított beállítássorozatot, és ez az egyetlen őszinte forrás a pontos szöveghez, amelyhez hasonlít:
sudo openvpn --config /etc/openvpn/corp.ovpn --verb 4
sudo grep -n 'pull-filter' /etc/openvpn/corp.ovpn
Olvassa a továbbított sort vesszővel elválasztott beállítások listájaként, és vegye észre, hogy a beállításneveket és argumentumaikat szóköz választja el. A szűrőszöveget ehhez a folyamhoz hasonlítják, ezért olyan fontosak a szóközök a következő lépésben.
Az egyeztetés előtag, tehát a szóközök döntenek mindenről
Az összehasonlítás karakterlánc-előtag, nem elemzett beállításnév. Ezért a "route" a route-gateway 10.8.0.1, route-ipv6 2001:db8::/32 és route-metric 100 beállításokra is illeszkedik. Egy záró szóköz leszűkíti arra a családra, amelyet valószínűleg értett, a teljes előtag pedig tovább szűkíti egy konkrét célra.
| Filter text | What it actually matches | Typical outcome |
|---|---|---|
"route" | Every option beginning with those letters | Routes, gateway, metric and IPv6 routes all dropped |
"route " | Route entries only, not the hyphenated siblings | The routes go, the rest survives |
"route 10.60." | A single destination range | The narrowest rule, and the easiest to audit |
"dhcp-option DNS" | Pushed DNS settings | Resolver stays local, internal names stop resolving |
Az utolsó sor az, amely osztott alagút munkája közben elkapja az embereket. A saját feloldó megtartása jogos választás, és azt jelenti, hogy minden belső név most egy olyan feloldótól függ, amely nem látja a privát zónát. Ez szándékosan elfogadandó következmény, nem pedig termelésben felfedezendő mellékhatás.
Az előtag-egyeztetés azt is jelenti, hogy egy szabály később csendben kiszélesedhet. Amikor a kiszolgáló olyan új beállítást ad hozzá, amely az Ön szövegével kezdődik, a szűrő elkezd rá alkalmazni anélkül, hogy bárki szerkesztené a profilt. Ez az a hibaüzemmód, amely ellen tervezni kell, és a mérséklés az, hogy a beállítás minél nagyobb részét egyeztesse, nem pedig minél kisebbet.
Három ige, három különböző eredmény
accept, ignore és reject nem ugyanannak az ötletnek a három írásmódja. Abban különböznek, hogy mit tesz az ügyfél az egyezéssel, és hogy kiderül-e valakinek.
ignore csendben eldobja az egyező beállítást, amit szándékosan lecserélt beállításnál szeretne. reject eldobja, és panaszra készteti az ügyfelet, amit akkor szeretne, ha hiányának naplóban kell látszania, nem pedig később felfedezve lennie. accept a pozitív forma, akkor használják, amikor engedélylistát épít, nem pedig egyedi beállításokat távolít el.
Bármelyik igét is használja, a szűrők megjelenésük sorrendjében érvényesülnek, így két átfedő szabály sorrendfüggő eredményt ad, amelyet nagyon nehéz átnézni. Tartson egy szabályt szándékonként, és mindegyikbe a legkonkrétabb szöveget tegye. Ha engedélylistára van szüksége, inkább néhány accept szabályt válasszon egy rakás ignore szabály helyett, amelyek ugyanarra jutnak. Akkor a bírálók fentről lefelé olvashatják a fájlt, és megjósolhatják az eredményt, és ez az egyetlen teszt, amely skálázódik.
Az alkalmazott útvonalat és feloldót ellenőrizze, ne a profilt
Egy fájlban helyesnek tűnő szűrő még mindig hagyhat olyan alagutat, amely semmi hasznosat nem irányít. Ellenőrizze a hatást a futó rendszeren, ahol a továbbított beállításokat már alkalmazták vagy eldobták:
ip route show default
ip route show | grep -c 'proto static'
resolvectl status | grep -A4 'Link.*tun0'
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://intranet.example.internal/
Az első két sor megmondja megérkezett-e a továbbított alapértelmezett útvonal, és hogy hány statikus bejegyzés maradt életben. A feloldó-lekérdezés megmutatja, melyik kiszolgálót használja valójában az alagút interfésze, és általában ott jelenik meg a DNS-meglepetés. Az utolsó sor az egyetlen kérdésre válaszol, amely a felhasználónak számít.
Tesztelje mindkét irányt, amíg ott van. Az a szabály, amely működőképesen tartja a helyi internetet, de csendben megtöri a belső névfeloldást, átmegy egy felületes ellenőrzésen, és az első valódi feladatnál elbukik, ezért ugyanabba a tesztbe tegyen egy belső erőforrást és egy nyilvános webhelyet.
Jegyezze fel a kivételt és annak tulajdonosát
A szűrő kivétel az üzemeltető tervezéséből, ezért indoklással és ellenőrzési ponttal írja le. "Figyelmen kívül hagyja a továbbított útvonalakat a helyi alapértelmezett megtartásához" átnézhető; a profilban lévő csupasz sor nem az, és a következő ember törli vagy találgatással bővíti.
A verzió itt is számít. Az egyeztetési viselkedést és a pontos elfogadott szintaxist az OpenVPN 2.4, 2.5 és 2.6 során finomították, ezért a mintát a szállított build kézikönyve alapján erősítse meg, ne egy régebbi kiadásról szóló fórumbejegyzés alapján. Az OpenVPN 2.6 kézikönyve dokumentálja a beállítást és annak egyeztetési szabályát.
Végül egyeztesse a kivételt azzal, aki a kiszolgálót üzemelteti. Az ügyféloldali szűrő, amely ellentmond egy szándékos kiszolgálói szabályzatnak, olyan támogatási esemény, amely a következő auditra vár, és sokkal olcsóbb elintézni a profil kiküldése előtt, mint miután valaki észreveszi, hogy hiányoznak az útvonalak.