Paket pro 10.77.20.0/24 činí na serveru OpenVPN dvě samostatná rozhodnutí: operační systém jej musí předat rozhraní VPN a OpenVPN musí vědět, který připojený klient vlastní tento prefix. Chybějící trasa v jádru jej zahodí před tunelem, chybějící trasa protějšku po něm. Obě selhání vypadají ze vzdálené LAN stejně a diagnóza, které máte, vyžaduje jeden příkaz na každé straně.

V klasické datové cestě v uživatelském prostoru dostane trasa v jádru paket do procesu tunelu a iroute tomuto procesu říká, který protějšek jej má přijmout. Ani jedno nenahrazuje druhé a konfigurace s pouze jedním z nich bude vypadat rozumně až do prvního pingu.

Dvě rozhodnutí, ne jedna trasa

Představte si propojení dvou lokalit, kde 10.77.20.0/24 leží za jediným klientem. Trasa v jádru serveru, například ip route add 10.77.20.0/24 dev tun0, posílá odpovídající pakety tunelovému zařízení. OpenVPN pak nahlédne do své vlastní interní tabulky, sestavené ze záznamů iroute v adresáři konfigurace klienta, a rozhodne, které spojení protějšku je přijme. Bez trasy v jádru se paket nikdy nedostane do procesu a bez trasy protějšku se do procesu dostane a nikam nedojde.

Toto rozdělení se snadno zapomene, protože jediný řádek trasy v profilu klienta může vypadat, že dělá obě práce. Nedělá: vložení trasy říká klientům, co mají posílat tunelem, zatímco iroute říká serveru, kdo vlastní rozsah adres za klientem. Žijí v různých souborech, čtou je různé strany a selhávají v opačných směrech.

Kam iroute patří a co říká

Záznam jde do souboru pro jednotlivého klienta pojmenovaného podle common_name klienta, v client-config-dir, jako iroute 10.77.20.0/24. Shoda názvu souboru není kosmetická: OpenVPN vyhledá ověřenou identitu a přečte soubor přesně s tímto názvem, takže soubor site-a působí jen na klienta, jehož běžné jméno je site-a. Přidejte ccd-exclusive, pokud klienti bez takového souboru mají být rovnou odmítnuti, což je správné nastavení, když je každý klient bránou lokality. Udržujte jeden soubor na bránu a pojmenujte jej podle subjektu certifikátu, který skutečně vydáváte.

Otestujte záznam ze serveru, než obviníte vzdálenou LAN. Stavový soubor vypisuje připojené klienty s jejich běžnými jmény a server běžící s --verb 4 zapisuje instalaci iroute ve chvíli, kdy se protějšek připojí. Pokud se při připojení nic neobjeví, soubor je ve špatném adresáři nebo pojmenovává špatnou identitu.

Past: soubor existuje, identita je špatná

Správně vypadající iroute připojený ke špatnému protějšku ztrácí více času než chybějící soubor, protože na disku vypadá vše správně. Přejmenování certifikátů, duplicitní běžná jména a username-as-common-name, který mění efektivní identitu, to vše vytváří. Zkontrolujte, kterou identitu server ověřil, místo které jste očekávali: výstup stavu je směrodatný, zatímco název souboru je jen vyhledávací klíč.

Trasa může svého vlastníka přežít. Statické trasy a záznamy iroute popisují prefix, nikoli záruku dostupnosti, takže provoz může dál proudit k protějšku, který je právě odpojený.

Dokončete cestu za protějškem

Vlastnictví protějšku je střed cesty, ne konec. Klient musí přeposílat pakety z tunelu do své LAN, což znamená povolené přeposílání IP na onom hostiteli a pravidlo firewallu, které průchod dovolí. Hostitelé ve vzdálené LAN potřebují zpáteční cestu pro adresu tunelu: buď trasu směřující zpět na bránu, nebo záměrný návrh NAT na straně klienta. Ověřte nastavení přeposílání na klientovi pomocí sysctl net.ipv4.ip_forward, místo abyste předpokládali výchozí hodnotu distribuce.

Jestliže se k této podsíti musí dostat jiní klienti VPN, uspořádání znovu roste: server potřebuje client-to-client a ti klienti musí prefix směrovat tunelem. Nic z toho nevyplývá z vlastní směrovací tabulky serveru.

Ověřte jeden cíl ze skutečného zdroje místo ze samotného serveru. Ping z nesouvisejícího hostitele v LAN na hostitele za klientem procvičí zpáteční cestu, pravidlo přeposílání i vlastnictví protějšku jedním pohybem, zatímco úspěšný handshake dokazuje jen identitu. Potom odpojte vlastnící protějšek a zaznamenejte, co trasa dělá, protože ta odpověď je váš způsob selhání.

Související články