Tunelis darbojas, jūs aizverat papildu termināli, un VPN nokrīt, klientā ne reizes ne nospiežot taustiņu. Linux AnyConnect klientā norādītais cēlonis ir sesiju uzskaite, nevis maršrutēšana: klients reģistrē, kuras pieslēgšanās sesijas pastāvēja, kad tunelis tika pacelts, un jebkuras no tām beigas uzskata par iemeslu to nomest. Tālākās pārbaudes veicamas secībā, un pirmā neizdevusies parāda, vai vispār saskaraties ar šo uzvedību. Klienta parastajā izvadē terminālis nav minēts, tāpēc pirmā instinkta vainot koncentratoru parasti ir veltīgs darbs.

Nesāciet ar sistēmas failu rediģēšanu. Katrs solis vai nu izskaidro kritienu, vai novērš kandidātu, un lētie soļi nāk pirmie.

Atdaliet sesijas kritienu no pamatnes kritiena

Pēc atvienošanās nekavējoties pieslēdzieties vēlreiz. Tunelis, kas atgriežas dažu sekunžu laikā, tajā pašā tīklā un bez jauniem akreditācijas datiem, norāda uz vietēju iemeslu, piemēram, aizvērtu sesiju, nevis bojātu augšupielādes kanālu, Wi-Fi viesabonēšanu vai koncentratora dīkstāves taimautu. Tunelis, kas karājas pie Connecting vai neizdodas, līdz nomaināt tīklu, ir cits raksts.

Pierakstiet, kas bija atvērts, kad tunelis pacēlās: terminālis, no kura palaidāt klientu, jebkura otrā čaula, grafiskā pieteikšanās un jebkura SSH sesija no citas mašīnas. Šis saraksts drīz būs vajadzīgs, un rekonstruēt to no atmiņas pēc nākamā kritiena ir neuzticami.

Pārbaudiet, ko klients reģistrēja pieslēgšanās brīdī

Klients neaplūko procesu vecākus vai termināļa piederību. Tas uzņem pieslēgšanās brīdī esošo sesiju kopu un vēlāk to salīdzina; kad kāds elements pazūd, salīdzinājums neizdodas, un tunelis krīt līdzi. Tāpēc loga, no kura pieslēdzāties, aizvēršana var būt nekaitīga, bet nesaistīta papildu termināļa aizvēršana nogalina savienojumu: svarīgi, vai tā sesija bija sākotnējā kopā. Tā ir kopas, nevis skaita pārbaude, tāpēc sesijas aizstāšana var būt tikpat liktenīga kā tās zaudēšana.

Uzskaitiet, ko klients varēja redzēt, pirms kaut ko maināt:

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

Katra who rinda ir lietotāja procesa ieraksts utmp failā. Ja jūsu sesija parādās divreiz, vienreiz grafiskajai pieteikšanās un vienreiz terminālim, abi ieraksti pastāvēja pieslēgšanās brīdī, un abi ir kandidāti.

Noņemiet no utmp tikai savu ierakstu

Publicētais apiešanas paņēmiens padara sesiju, kuru grasāties izmantot, neredzamu utmp failā pirms klienta startēšanas. Neliela C programma iet cauri getutent(), atrod ierakstu, kura ut_line ir vienāds ar standarta ievades TTY, un pārraksta šo ierakstu. Secība ir apzināta: setutent(), ieraksta nolasīšana, tā ut_id kopēšana, ut_type iestatīšana uz DEAD_PROCESS, lietotāja un rindas lauku notīrīšana, pārrakstīšana ar pututline() un visbeidzot endutent().

Kompilējiet to un pēc tam palaidiet kā root no čaulas, kas startēs klientu:

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

Divi kļūdu režīmi izskaidro lielāko daļu ziņojumu, ka rīks neko nedara. Tas darbojas ar TTY, kas pievienots standarta ievadei, tāpēc, palaižot to no skripta vai cron darba bez termināļa, tam nepaliek ar ko saskaņot. Un /run/utmp parastajiem lietotājiem nav rakstāms, tāpēc palaišana bez root klusi neizdodas, ja vien nepārbaudāt iziešanas statusu.

Pārbaudiet, vai tunelis pārdzīvo aizvēršanu

Pārbaudiet mehānismu, nevis pieņemiet to. Pieslēdzieties no sesijas, kuru plānojat saglabāt, atveriet otru termināli, aizveriet otro un pēc tam apstipriniet, ka tunelis joprojām darbojas, izmantojot vpn state un apskatot saskarņu sarakstu. Ja tunelis izdzīvo, iemesls bija konkrēts sesijas tips, nevis katra sesija, un jūs esat atradis sesiju, kurai jāpaliek atvērtai.

Ja tas joprojām krīt, novērotā sesija bija citur, visbiežāk grafiskā pieteikšanās, kas radīja jūsu termināli, un viena TTY ieraksta noņemšana nepalīdzēs. Atkārtojiet novērojumu ar pilnu pirmā soļa sarakstu, nevis pievienojiet vairāk operāciju.

Kad utmp pārrakstīšana ir nepareizā atbilde

utmp ir kopīga uzskaite, nevis privāta tabula. Vēl dzīvas sesijas ieraksta pārrakstīšana liek who, w un dažiem audita rīkiem to uzrādīt nepietiekami, un programma, kas vēlāk aizver to pašu ierakstu, var vienkārši sabojāties. Ierobežojiet rīku ar savu sesiju, glabājiet oriģinālā faila kopiju un nepadariet to par palaišanas pakalpojumu, kas izdzēš katru ierakstu.

Ja jūsu organizācija vāc sesiju uzskaiti atbilstības nodrošināšanai, šis paņēmiens ir pretrunā ar šo prasību, un atbalstītā atbilde ir klienta versija vai cita piekļuves metode, nevis ielāpīts utmp. Lielākajai daļai cilvēku vismazāk invazīvais risinājums ir vienkārši startēt klientu no sesijas, kas paliks atvērta visu dienu, un neaiztikt šo logu.

Pirms aizverat biļeti, pierakstiet, kuru sesiju klients novēroja, kad tunelis pacēlās. Šī viena rinda pārvērš noslēpumaino atvienošanos atkārtojamā nosacījumā nākamajam cilvēkam pie mašīnas.

Saistītie raksti