AnyConnect pada kad zatvorite terminal: provjere sesija
Linux AnyConnect klijent pamti prijavne sesije otvorene pri povezivanju i ruši tunel kad se jedna od njih zatvori. Provjerite redoslijed prije nego prepišete utmp.
Tunel je podignut, zatvorite rezervni terminal i VPN padne bez ijednog pritiska tipke u klijentu. U Linux AnyConnect klijentu prijavljeni uzrok je obračun sesija, a ne usmjeravanje: klijent bilježi koje su prijavne sesije postojale kad se tunel podigao i kraj bilo koje od njih smatra razlogom da ga sruši. Provjere ispod idu redom, a prva koja ne uspije kaže gledate li uopće ovo ponašanje. Ništa u uobičajenom izlazu klijenta ne spominje terminal, zato je prvi nagon, kriviti koncentrator, obično uzaludan posao.
Ne počinjite uređivanjem sistemskih datoteka. Svaki korak ili objašnjava pad ili uklanja kandidata, a jeftini koraci dolaze prvi.
Odvojite pad sesije od pada donjeg sloja
Ponovno se povežite odmah nakon prekida. Tunel koji se vrati u nekoliko sekundi, na istoj mreži i bez novih vjerodajnica, upućuje na lokalni okidač poput zatvorene sesije, a ne na mrtav uplink, Wi-Fi roaming ili vremensko ograničenje mirovanja na koncentratoru. Tunel koji visi na Connecting ili ne uspijeva dok ne promijenite mrežu drugi je članak.
Zapišite što je bilo otvoreno kad se tunel podigao: terminal iz kojeg ste pokrenuli klijent, svaki drugi shell, grafička prijava i svaka SSH sesija s drugog računala. Ta lista treba uskoro, a rekonstruirati je po sjećanju nakon sljedećeg pada nije pouzdano.
Provjerite što je klijent zabilježio pri povezivanju
Klijent ne ispituje roditelje procesa ni vlasništvo terminala. Snima skup prijavnih sesija prisutnih pri povezivanju i kasnije ga uspoređuje; kad član nestane, usporedba ne uspije i tunel ode s njim. Zato zatvaranje prozora iz kojeg ste se povezali može biti bezopasno, dok zatvaranje nepovezanog rezervnog terminala ubija vezu: važno je je li ta sesija bila u izvornom skupu. To je usporedba skupova, a ne brojanje, zato zamjena sesije može biti jednako kobna kao gubitak jedne.
Navedite što je klijent mogao vidjeti prije nego išta promijenite:
who
w
last -n 10
sudo ls -l /run/utmpSvaki redak iz who unos je korisničkog procesa u utmp. Ako se vaša sesija pojavljuje dvaput, jednom za grafičku prijavu i jednom za terminal, oba su unosa postojala pri povezivanju i oba su kandidati.
Uklonite iz utmp samo vlastiti unos
Objavljeni zaobilazni postupak čini sesiju koju ćete koristiti nevidljivom u utmp prije nego se klijent pokrene. Mali C program prolazi kroz getutent(), pronalazi zapis čiji je ut_line jednak TTY-u standardnog ulaza, a zatim prepisuje taj zapis. Redoslijed je namjeran: setutent(), čitanje unosa, kopiranje njegova ut_id, postavljanje ut_type na DEAD_PROCESS, brisanje polja korisnika i retka, prepisivanje pomoću pututline(), zatim endutent().
Kompajlirajte ga, a zatim ga pokrenite kao root iz shella koji će pokrenuti klijent:
sudo ./utmpremove && /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.eduDva načina neuspjeha objašnjavaju većinu izvještaja da alat ne radi ništa. Djeluje na TTY povezan sa standardnim ulazom, pa pokretanje iz skripte ili cron posla bez terminala ne ostavlja ništa za usporedbu. I /run/utmp nije pisan običnim korisnicima, pa pokretanje bez roota tiho ne uspijeva ako ne provjerite izlazni status.
Potvrdite da tunel preživljava zatvaranje
Testirajte mehanizam umjesto da ga pretpostavljate. Povežite se iz sesije koju namjeravate zadržati, otvorite drugi terminal, zatvorite drugi, pa potvrdite s vpn state i pogledom na popis sučelja da je tunel još podignut. Ako tunel preživi, okidač je bio određena vrsta sesije, a ne svaka sesija, i pronašli ste sesiju koja mora ostati otvorena.
Ako i dalje pada, promatrana sesija bila je drugdje, najčešće grafička prijava koja je stvorila vaš terminal, a uklanjanje jednog TTY unosa ne pomaže. Ponovite promatranje s cijelim popisom iz prvog koraka umjesto dodavanja novih zahvata.
Kad je prepisivanje utmp-a pogrešan odgovor
utmp je zajedničko knjigovodstvo, a ne privatna tablica. Prepisivanje unosa još žive sesije čini da je who, w i neki alati za reviziju prikazuju manje, a program koji kasnije zatvori taj isti unos može u potpunosti otkazati. Ograničite alat na vlastitu sesiju, sačuvajte kopiju izvorne datoteke i ne pretvarajte ga u uslugu pokretanja koja briše svaki zapis.
Ako vaša organizacija prikuplja obračun sesija radi usklađenosti, ovaj je postupak u sukobu s tim zahtjevom, a podržani je odgovor verzija klijenta ili drugi način pristupa, a ne zakrpani utmp. Za većinu je najmanje invazivno rješenje jednostavno pokrenuti klijent iz sesije koja će ostati otvorena cijeli dan i ostaviti taj prozor na miru.
Prije nego zatvorite tiket, zapišite koju je sesiju klijent promatrao kad se tunel podigao. Taj jedan redak pretvara tajanstveni prekid u uvjet koji se može ponoviti za sljedeću osobu za računalom.