Tunel deluje, zaprete rezervni terminal in VPN pade brez enega samega pritiska tipke v odjemalcu. V odjemalcu AnyConnect za Linux je navedeni vzrok obračunavanje sej, ne usmerjanje: odjemalec zabeleži, katere prijavne seje so obstajale ob vzponu tunela, in konec katere koli od njih šteje za razlog, da ga podre. Spodnja preverjanja potekajo po vrsti in prvo neuspešno pove, ali sploh gledate to vedenje. V običajnem izpisu odjemalca ni o terminalu nobene besede, zato je prvi vzgib, kriviti koncentrator, običajno zaman.

Ne začnite z urejanjem sistemskih datotek. Vsak korak bodisi pojasni padec bodisi odstrani kandidata, poceni koraki pa pridejo prvi.

Ločite padec seje od padca spodnjega sloja

Takoj po prekinitvi se znova povežite. Tunel, ki se vrne v nekaj sekundah, v istem omrežju in brez novih poverilnic, kaže na lokalni sprožilec, kot je zaprta seja, ne pa na mrtev uplink, gostovanje Wi-Fi ali časovno omejitev nedejavnosti na koncentratorju. Tunel, ki visi na Connecting ali ne uspe, dokler ne zamenjate omrežja, je drug članek.

Zapišite, kaj je bilo odprto ob vzponu tunela: terminal, iz katerega ste zagnali odjemalca, morebitna druga lupina, grafična prijava in vsaka seja SSH z drugega stroja. Seznam boste potrebovali čez trenutek, obnavljanje po spominu po naslednjem padcu pa ni zanesljivo.

Preverite, kaj je odjemalec zabeležil ob povezavi

Odjemalec ne pregleduje staršev procesov ali lastništva terminala. Naredi posnetek množice prijavnih sej, prisotnih ob povezavi, in to množico pozneje primerja; ko član izgine, primerjava ne uspe in tunel gre z njim. Zato je zaprtje okna, iz katerega ste se povezali, lahko neškodljivo, medtem ko zaprtje nepovezanega rezervnega terminala ubije povezavo: pomembno je, ali je bila ta seja v izvirni množici. To je primerjava množic, ne štetje, zato je lahko zamenjava seje enako usodna kot izguba ene.

Naštejte, kaj je odjemalec lahko videl, preden kar koli spremenite:

who
w
last -n 10
sudo ls -l /run/utmp

Vsaka vrstica iz who je vnos uporabniškega procesa v utmp. Če se vaša seja pojavi dvakrat, enkrat za grafično prijavo in enkrat za terminal, sta oba vnosa obstajala ob povezavi in oba sta kandidata.

Iz utmp odstranite samo svoj vnos

Objavljena rešitev naredi sejo, ki jo boste uporabili, nevidno v utmp pred zagonom odjemalca. Majhen program v C gre skozi getutent(), najde zapis, katerega ut_line je enak TTY standardnega vhoda, in ta zapis prepiše. Vrstni red je nameren: setutent(), branje vnosa, kopiranje njegovega ut_id, nastavitev ut_type na DEAD_PROCESS, brisanje polj uporabnika in vrstice, prepis z pututline(), nato endutent().

Prevedite ga in nato zaženite kot root iz lupine, ki bo zagnala odjemalca:

sudo ./utmpremove && /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.edu

Dva načina okvare pojasnjujeta večino poročil, da orodje ne naredi ničesar. Deluje na TTY, priključenem na standardni vhod, zato zagon iz skripta ali opravila cron brez terminala ne pusti ničesar za ujemanje. In /run/utmp običajni uporabniki ne morejo pisati, zato zagon brez roota tiho spodleti, če ne preverite izhodnega stanja.

Preverite, ali tunel preživi zaprtje

Preizkusite mehanizem, namesto da bi ga predpostavljali. Povežite se iz seje, ki jo nameravate obdržati, odprite drugi terminal, zaprite drugega in nato potrdite z vpn state ter pogledom na seznam vmesnikov, da tunel še vedno deluje. Če tunel preživi, je bil sprožilec določena vrsta seje in ne vsaka seja, in našli ste sejo, ki mora ostati odprta.

Če še vedno pade, je bila opazovana seja drugje, najpogosteje grafična prijava, ki je ustvarila vaš terminal, in odstranitev enega vnosa TTY ne pomaga. Ponovite opazovanje s celotnim seznamom iz prvega koraka, namesto da dodajate več posegov.

Kdaj je prepisovanje utmp napačen odgovor

utmp je skupno knjigovodstvo, ne zasebna tabela. Prepis vnosa še žive seje povzroči, da who, w in nekatera revizijska orodja to sejo prikazujejo premalo, program, ki pozneje zapre isti vnos, pa lahko povsem odpove. Orodje omejite na svojo sejo, shranite kopijo izvirne datoteke in iz njega ne delajte zagonske storitve, ki izbriše vsak zapis.

Če vaša organizacija zbira obračunavanje sej za skladnost, je ta rešitev v nasprotju s to zahtevo, podprt odgovor pa je različica odjemalca ali druga metoda dostopa, ne popravljen utmp. Za večino ljudi je najmanj vsiljiva rešitev preprosto zagnati odjemalca iz seje, ki ostane odprta ves dan, in pustiti to okno pri miru.

Preden zaprete zahtevek, zabeležite, katero sejo je odjemalec opazoval ob vzponu tunela. Ta ena vrstica spremeni skrivnostno prekinitev v stanje, ki ga je mogoče ponoviti za naslednjo osebo pri stroju.

Sorodni članki