Paket pre 10.77.20.0/24 robí na serveri OpenVPN dve samostatné rozhodnutia: operačný systém ho musí odovzdať rozhraniu VPN a OpenVPN musí vedieť, ktorý pripojený klient vlastní tento prefix. Chýbajúca trasa v jadre ho zahodí pred tunelom, chýbajúca trasa peera po ňom. Obe zlyhania vyzerajú zo vzdialenej LAN rovnako a diagnostika, ktoré máte, si vyžaduje jeden príkaz na každej strane.

V klasickej dátovej ceste v používateľskom priestore dostane trasa v jadre paket do procesu tunela a iroute tomuto procesu povie, ktorý peer ho má prijať. Ani jedno nenahrádza druhé a konfigurácia len s jedným z nich bude vyzerať rozumne až do prvého ping.

Dve rozhodnutia, nie jedna trasa

Predstavte si prepojenie dvoch lokalít, kde 10.77.20.0/24 leží za jediným klientom. Trasa v jadre servera, napríklad ip route add 10.77.20.0/24 dev tun0, posiela zodpovedajúce pakety tunelovému zariadeniu. Potom OpenVPN nahliadne do svojej vlastnej internej tabuľky, zostavenej zo záznamov iroute v adresári konfigurácie klienta, aby rozhodol, ktoré spojenie peera ich prijme. Bez trasy v jadre sa paket nikdy nedostane do procesu a bez trasy peera sa do procesu dostane a nikam nejde.

Toto rozdelenie sa ľahko zabudne, pretože jediný riadok trasy v profile klienta môže vyzerať, že robí obe práce. Nerobí: vloženie trasy hovorí klientom, čo majú posielať tunelom, kým iroute hovorí serveru, kto vlastní rozsah adries za klientom. Žijú v rôznych súboroch, čítajú ich rôzne strany a zlyhávajú v opačných smeroch.

Kam patrí iroute a čo hovorí

Záznam ide do súboru pre jednotlivého klienta pomenovaného podľa common_name klienta, v client-config-dir, ako iroute 10.77.20.0/24. Zhoda názvu súboru nie je kozmetická: OpenVPN vyhľadá overenú identitu a prečíta súbor presne s týmto názvom, takže súbor s názvom site-a pôsobí len na klienta, ktorého spoločné meno je site-a. Pridajte ccd-exclusive, ak klienti bez takého súboru majú byť rovno odmietnutí, čo je správne nastavenie, keď je každý klient bránou lokality. Udržujte jeden súbor na bránu a pomenujte ho podľa subjektu certifikátu, ktorý skutočne vydávate.

Otestujte záznam zo servera, než obviníte vzdialenú LAN. Stavový súbor vypisuje pripojených klientov s ich spoločnými menami a server bežiaci s --verb 4 zaznamenáva inštaláciu iroute v momente, keď sa peer pripojí. Ak sa pri pripojení nič neobjaví, súbor je v nesprávnom adresári alebo pomenúva nesprávnu identitu.

Pasca: súbor existuje, identita je nesprávna

Správne vyzerajúci iroute pripojený k nesprávnemu peerovi stráca viac času než chýbajúci súbor, pretože na disku všetko vyzerá správne. Premenovanie certifikátov, duplicitné spoločné mená a username-as-common-name meniaci efektívnu identitu to všetko vytvárajú. Skontrolujte, ktorú identitu server overil, a nie ktorú ste očakávali: výstup stavu je smerodajný, kým názov súboru je len vyhľadávací kľúč.

Trasa môže prežiť svojho vlastníka. Statické trasy a záznamy iroute opisujú prefix, nie záruku dostupnosti, takže prevádzka môže ďalej prúdiť k peerovi, ktorý je práve odpojený.

Dokončite cestu za peerom

Vlastníctvo peera je stred cesty, nie koniec. Klient musí preposielať pakety z tunela do svojej LAN, čo znamená zapnuté preposielanie IP na tom hostiteľovi a pravidlo firewallu, ktoré priechod povoľuje. Hostitelia vo vzdialenej LAN potrebujú spätnú cestu pre adresu tunela: buď trasu smerujúcu späť na bránu, alebo zámerný návrh NAT na strane klienta. Overte nastavenie preposielania na klientovi pomocou sysctl net.ipv4.ip_forward, namiesto predpokladu predvolenej hodnoty distribúcie.

Ak sa k tejto podsieti musia dostať iní klienti VPN, usporiadanie znova rastie: server potrebuje client-to-client a tí klienti musia prefix smerovať tunelom. Nič z toho nevyplýva z vlastnej smerovacej tabuľky servera.

Overte jeden cieľ z reálneho zdroja namiesto zo samotného servera. Ping z nesúvisiaceho hostiteľa v LAN na hostiteľa za klientom precvičí spätnú cestu, pravidlo preposielania aj vlastníctvo peera jedným pohybom, kým úspešný handshake dokazuje len identitu. Potom odpojte vlastniaceho peera a zaznamenajte, čo trasa robí, pretože tá odpoveď je váš spôsob zlyhania.

Súvisiace články