OpenConnect vpnc-script: katera datoteka se izvaja?
Pomožni skript, ki namešča poti in DNS, je ločen od odjemalca tunela. Poiščite pot, ki jo uporablja tekoči odjemalec, preden jo zamenjate s kopijo s foruma.
OpenConnect lahko dokonča rokovanje tunela in vas vseeno pusti brez poti do zasebnega podomrežja, ker sta odjemalec in pomožni skript, ki spreminja stanje lokalnega omrežja, dva različna programa. Preverjanje pristnosti dokazuje, da je prehod sprejel sejo; ne dokazuje ničesar o tem, kateri vmesnik, katere poti ali katere nastavitve razreševalnika so bile nameščene zatem. Večina zmedenih poročil izhaja iz zamenjave pomožnega skripta s kopijo iz starega odgovora, kar spremeni vedenje vsake povezave na stroju. Preden kar koli v njem spremenite, poiščite skript, ki ga tekoči odjemalec zares kliče.
Dva programa, dve odgovornosti
Odjemalec ima v lasti prenos, preverjanje pristnosti in napravo tunela. Ločen pomožni skript ima v lasti to, kar se v lokalnem sistemu zgodi, ko tunel obstaja: naslavljanje na vmesniku, poti do podomrežij, ki jih je objavil prehod, in konfiguracijo razreševalnika. dokumentacija pomožnega skripta OpenConnect opisuje to delitev in okolje, ki ga skript prejme. Razlika je pomembna ob napaki, ker zavrnjeno geslo in manjkajoča pot nista isti dogodek, tudi ko namizje prikaže eno pogovorno okno za oba.
Če to delitev upoštevate, to pojasni tudi, zakaj lahko povezava poroča o uspehu, medtem ko se zasebna imena še vedno ne razrešijo. Tunel je v obeh primerih vzpostavljen, razlikuje se le faza lokalnega povezovanja.
Poiščite skript, ki ga uporablja tekoči odjemalec
Pot se določi ob gradnji paketa in jo je mogoče prepisati pri vsakem klicu, zato datoteka, ki se je spomnite iz druge distribucije, morda nima nič skupnega s to povezavo. Vprašajte tekoči proces, ne dokumentacije, ki je po naključju odprta.
openconnect --version
ps -o args= -C openconnect
dpkg -L openconnect | grep -i script
ls -l /etc/vpnc/ 2>/dev/null
Če vrstica procesa nosi argument --script , ta datoteka premaga prevedeno privzeto vrednost. Starejše poti, kot je /etc/vpnc/vpnc-script , lahko obstajajo in ostanejo neuporabljene, zato njihovo brisanje ali urejanje v novejši gradnji ničesar ne spremeni. Preverite tudi datum spremembe, ker je skript, ki se ga leta nihče ni dotaknil, močan znak, da delo opravlja privzeta vrednost iz paketa.
Integracija z NetworkManagerjem je tretji lastnik, z lastnim skriptom in lastnimi nastavitvami profila. Dodajanje drugega skripta za poti ali razreševalnik na to integracijo podvoji poti in pusti razreševalnik, za katerega dva programa trdita, da ga upravljata. Izberite enega lastnika na povezavo in pred preskušanjem onemogočite drugega.
Preberite prvo neuspešno operacijo, ne zadnjega opozorila
Konfiguracija vmesnika, namestitev poti, izbira razreševalnika in čiščenje zastarelega stanja so ločeni koraki, opozorilo, natisnjeno nazadnje, pa je pogosto pritožba zaradi čiščenja in ne napaka, ki je prekinila povezavo. Berite navzgor do prve konkretne neuspešne operacije. Napaka skripta, ki imenuje datoteko ali naslov, je vredna več kot deset vrstic hrupa razstavljanja.
Primerjajte predvideni lokalni izid z opaženim: naprava tunela obstaja, pot do znanega zasebnega naslova poteka skozi njo, razreševalnik pa odgovori za zasebno ime. Skript, ki uspe pri prvih dveh in ne uspe pri tretjem, kaže na politiko razreševalnika in ne na usmerjanje. Skript, ki naprave sploh ne konfigurira, verjetno ni bil nikoli izveden, in to je vprašanje dovoljenj, ne omrežja. Preden prepišete kakršno koli logiko, potrdite izvršljivi bit in servisni račun.
Preverite povezavo, ponovno povezavo in prekinitev
Nastavitev je le polovica pogodbe, ker mora isti skript ob zaprtju tunela obnoviti ali odstraniti stanje, ki ga ima v lasti. Skript, ki dodaja poti in jih nikoli ne odstrani, pusti stroj z zastarelo potjo, ki preživi sejo.
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'
Zaženite prve tri, medtem ko ste povezani, prekinite povezavo, nato jih zaženite znova in potrdite, da sta pot in vnos razreševalnika izginila. Četrta vrstica pokaže, ali je bil skript sploh klican in katero izvršljivo pot je uporabila storitev. Shranite ta par izhodov v zahtevek, ker prav primerjava pred in po naredi napako čiščenja očitno.
Skript naj ostane zapakiran in izvršljiv za servisni račun, ker skript, ki teče v vaši lupini, je lahko pod omejeno servisno politiko vseeno zavrnjen. Ko je prilagoditev res potrebna, dokumentirajte njen namen in lastnika ter jo ob vsaki nadgradnji primerjajte z zapakirano različico. Nerazložen fork skripta je ena redkih stvari, ki lahko delujočo povezavo leto pozneje pokvarijo.