Klient VPN maže vámi přidanou trasu? Použijte tabulku zásad
Klient znovu prosazuje trasy, které vlastní, takže ručně přidaná položka zmizí během sekund. Dejte výjimku do tabulky zásad s prioritou pravidla, které vyhraje.
Jedna /24 pro laboratorní tiskárnu zmizí mezi dvěma voláními ip route show a klientský log jen říká, že se změnila síť. S příkazem, prefixem ani vašimi oprávněními nebylo nic špatně. Podnikový klient, který vlastní model směrování hostitele, tento model znovu prosazuje, kdykoli ho někdo jiný upraví, takže vámi přidaná položka je odstraněna jako vetřelec. Bojovat s ním ve stejné tabulce je prohraná pozice. Řešením je přestat o tu tabulku vůbec soutěžit a umístit výjimku tam, kam se monitor nikdy nedívá.
Monitor vysvětluje chybějící trasu
Ukažte to, než cokoli předěláte: přečtěte tabulku, přidejte prefix, počkejte několik sekund, přečtěte znovu. Pokud položka chybí a nic jste nezadali, aby ji odstranilo, nějaký agent to sleduje. Najděte proces, který toto chování vlastní, a přečtěte jeho log kolem okamžiku, kdy trasa zmizí, protože stejná služba obvykle spravuje tunel, paketové filtry a konfiguraci resolveru. Zabít ho, aby vaše trasa vydržela, je výměna, které budete při dalším připojení litovat.
ip route show
ip route add 192.168.2.0/24 dev enp0s31f6
sleep 5; ip route showPrefix a rozhraní výše jsou zástupné. Kopírování názvu rozhraní z funkčního příkladu na jiném stroji je nejčastější důvod, proč tato demonstrace neprodukuje vůbec nic.
Druhá tabulka je pro monitor neviditelná
Agent přestavuje jen tabulku, kterou vlastní. Dejte výjimce vlastní tabulku plus pravidlo, které tam posílá odpovídající cíle, a hlavní tabulka se nikdy nemění, takže agent nemá co opravovat. To je celá myšlenka: jeden jmenný prostor tras, který spravuje někdo jiný, a jeden, kterého se dotýkáte jen vy.
Výměnou je údržba. Dva objekty se mohou rozejít a pozice pravidla v seznamu je stejně důležitá jako trasa uvnitř tabulky, kterou vybírá.
Postavte výjimku a pak ji nechte vyhrát
Vytvořte tabulku, nainstalujte trasu a přidejte pravidlo, které pro tento cíl vybírá tabulku. Priorita rozhoduje, zda se vaše pravidlo prozkoumá před pravidly vloženými klientem, nebo po nich, a pravidlo, které se řadí později, se nikdy nedostane na řadu, takže číslo je součástí návrhu, ne dekorace. Pak se zeptejte jádra, co by skutečně udělalo, což je jiná otázka než to, co jste nakonfigurovali.
ip rule add to 192.168.2.0/24 table 110 pref 30010
ip route add 192.168.2.0/24 dev enp0s31f6 table 110
ip route get 192.168.2.50ip route get vyřeší trasu, kterou by jádro použilo, včetně zařízení a zdrojové adresy. Nevypisuje identifikátor tabulky, takže ho spárujte s ip rule show, když potřebujete potvrdit, která tabulka vyhrála. Společně odpovídají na jedinou důležitou otázku: opouští provoz na tuto adresu tam, kde jste zamýšleli?
Jiné podoby téže myšlenky
Vzor se zobecní, jakmile přestanete myslet v cílech. Místní podsíť může zůstat dostupná, zatímco tunel drží výchozí trasu. Odpovědi SSH serveru připojeného k LAN mohou odcházet rozhraním, kterým přišly, místo aby zmizely v tunelu. A pravidlo založené na rozhraní může poslat vše, co přichází na bezdrátové rozhraní, do tunelu, zatímco provoz, který hostitel sám generuje, zůstává na Ethernetu:
ip rule add iif wlan0 table 10
ip route add default dev tun0 table 10Poslední případ odpovídá příchozímu rozhraní, nikoli cíli, což je jiný typ pravidla a jiný mentální model. Přesměrovaný provoz také vyžaduje zapnutý net.ipv4.ip_forward a vzdálená strana musí zdrojový rozsah směrovat zpět nebo ho překládat; pravidlo na jednom stroji nikdy nevytvoří druhou polovinu cesty.
Berte pravidlo jako spotřební
Pravidla a trasy tabulek žijí v paměti. Po opětovném připojení může být zařízení tunelu přejmenováno, přiřazená adresa se může posunout a pravidlo se starou hodnotou tiše přestane odpovídat. Znovu použijte celou změnu z jednoho skriptu, který ji vlastní, a poté znovu zkontrolujte ip rule show, aktuální název zařízení a čerstvý ip route get proti skutečnému cíli, než výjimce uvěříte.
Dvě hranice přežijí jakoukoli péči. Klient stále ovládá svá vlastní pravidla filtrování a konfiguraci resolveru a směrovací výjimka nepřebíjí ani jedno. Pokud klient smaže i vaše pravidlo zásad, podporované cesty jsou jeho vlastní politika rozděleného tunelu nebo klient, který vám umožní spravovat trasy, jako OpenConnect; záplatování binárky dodavatele, aby ztichl jeho monitor, je závazek údržby s připojenou kontrolou integrity.
Napište číslo tabulky, prioritu a cíl do poznámky vedle skriptu. Jinak další člověk najde pravidlo, které předčí tunel, a nemá jak zjistit proč.