OpenConnect môže dokončiť handshake tunela a napriek tomu vás nechať bez trasy do privátnej podsiete, pretože klient a pomocný skript, ktorý mení stav lokálnej siete, sú dva rôzne programy. Overenie dokazuje, že brána reláciu prijala; nič nedokazuje o tom, ktoré rozhranie, ktoré trasy alebo ktoré nastavenia prekladača sa nainštalovali potom. Väčšina mätúcich hlásení vzniká nahradením pomocného skriptu kópiou zo starej odpovede, čo mení správanie každého pripojenia na stroji. Skôr než v ňom čokoľvek upravíte, nájdite skript, ktorý spustený klient skutočne volá.

Dva programy, dve zodpovednosti

Klient vlastní prenos, overenie a zariadenie tunela. Samostatný pomocný skript vlastní to, čo sa v lokálnom systéme deje, keď tunel existuje: adresovanie na rozhraní, trasy do podsietí ohlásených bránou a konfiguráciu prekladača. dokumentácia pomocného skriptu OpenConnect opisuje toto rozdelenie a prostredie, ktoré skript dostáva. Rozdiel je dôležitý pri zlyhaní, pretože odmietnuté heslo a chýbajúca trasa nie sú tá istá udalosť, aj keď plocha zobrazuje jeden dialóg pre oboje.

Držanie tohto rozdelenia na pamäti tiež vysvetľuje, prečo pripojenie môže hlásiť úspech, kým privátne mená sa stále neprekladajú. Tunel je v oboch prípadoch hore a líši sa len fáza lokálnej integrácie.

Nájdite skript, ktorý spustený klient používa

Cesta sa nastavuje pri zostavení balíka a dá sa prepísať pri každom volaní, takže súbor, ktorý si pamätáte z inej distribúcie, nemusí mať s týmto pripojením nič spoločné. Pýtajte sa spusteného procesu, nie dokumentácie, ktorú máte práve otvorenú.

openconnect --version
ps -o args= -C openconnect
dpkg -L openconnect | grep -i script
ls -l /etc/vpnc/ 2>/dev/null

Ak riadok procesu nesie argument --script , vyhráva tento súbor pred skompilovanou predvolenou hodnotou. Staršie cesty ako /etc/vpnc/vpnc-script môžu existovať a zostať nevyužité, a preto ich zmazanie alebo úprava v novšom zostavení nič nemení. Skontrolujte aj dátum zmeny, pretože skript, ktorého sa roky nikto nedotkol, je silným znamením, že prácu robí predvolená hodnota z balíka.

Integrácia s NetworkManagerom je tretí vlastník, s vlastným skriptom a vlastnými nastaveniami profilu. Vrstvenie druhého skriptu pre trasy alebo prekladač na túto integráciu zdvojuje trasy a necháva prekladač, o ktorom dva programy tvrdia, že ho spravujú. Zvoľte jedného vlastníka na pripojenie a druhého pred testovaním vypnite.

Čítajte prvú neúspešnú operáciu, nie posledné varovanie

Konfigurácia rozhrania, inštalácia trás, voľba prekladača a čistenie zastaraného stavu sú samostatné kroky a varovanie vytlačené nakoniec je často sťažnosť na čistenie, nie porucha, ktorá prerušila pripojenie. Čítajte nahor k prvej konkrétnej operácii, ktorá zlyhala. Chyba skriptu, ktorá pomenuje súbor alebo adresu, má väčšiu cenu než desať riadkov hluku z rozoberania.

Porovnajte zamýšľaný lokálny výsledok so zisteným: zariadenie tunela existuje, trasa k známej privátnej adrese vedie cez ne a prekladač odpovedá pre privátne meno. Skript, ktorý uspeje v prvých dvoch a zlyhá v treťom, ukazuje na politiku prekladača, nie na smerovanie. Skript, ktorý zariadenie vôbec nenakonfiguruje, pravdepodobne nikdy nebežal, a to je otázka oprávnení, nie siete. Pred prepísaním akejkoľvek logiky potvrďte spustiteľný bit a servisný účet.

Overte pripojenie, opätovné pripojenie a odpojenie

Nastavenie je len polovica zmluvy, pretože ten istý skript musí po zatvorení tunela obnoviť alebo odstrániť stav, ktorý vlastní. Skript, ktorý pridáva trasy a nikdy ich neodstraňuje, necháva stroj so zastaranou cestou, ktorá prežije reláciu.

ip -brief address show tun0
ip route get 10.24.8.15
resolvectl status tun0
journalctl -u NetworkManager -b --no-pager | grep -i -E 'vpnc|script'

Spustite prvé tri, kým ste pripojení, odpojte sa a potom ich spustite znova a potvrďte, že trasa aj záznam prekladača zmizli. Štvrtý riadok ukazuje, či bol skript vôbec vyvolaný a ktorú spustiteľnú cestu služba použila. Uložte túto dvojicu výstupov do tiketu, pretože práve porovnanie pred a po robí chybu čistenia zjavnou.

Udržujte skript zabalený a spustiteľný pre servisný účet, pretože skript, ktorý beží vo vašom shelli, môže byť napriek tomu pod obmedzenou servisnou politikou odmietnutý. Keď je prispôsobenie naozaj potrebné, zdokumentujte jeho účel a vlastníka a pri každej aktualizácii ho porovnajte so zabalenou verziou. Nevysvetlený fork skriptu je jednou z mála vecí, ktoré môžu funkčné pripojenie o rok pokaziť.

Súvisiace články