Mae'r tiwnel i fyny, rydych yn cau terfynell sbâr, ac mae'r VPN yn mynd i lawr heb un deiglad bysell yn y cleient. Yn y cleient AnyConnect ar Linux, yr achos a adroddir yw cyfrifyddiaeth sesiynau yn hytrach na llwybro: mae'r cleient yn cofnodi pa sesiynau mewngofnodi oedd yn bodoli pan godwyd y tiwnel ac yn trin diwedd unrhyw un ohonynt fel rheswm i'w rwygo i lawr. Mae'r gwiriadau isod yn rhedeg yn eu trefn, a'r cyntaf sy'n methu sy'n dweud wrthych a ydych yn edrych ar yr ymddygiad hwn o gwbl. Nid oes dim yn allbwn arferol y cleient yn crybwyll terfynell, a dyna pam mae'r reddf gyntaf, sef beio'r concentrator, fel arfer yn ymdrech ofer.

Peidiwch â dechrau drwy olygu ffeiliau system. Mae pob cam naill ai'n esbonio'r cwymp neu'n tynnu ymgeisydd, a daw'r camau rhad yn gyntaf.

Gwahaniwch gwymp sesiwn oddi wrth gwymp y rhwydwaith sylfaenol

Ailgysylltwch yn syth ar ôl y datgysylltiad. Mae tiwnel sy'n dychwelyd o fewn eiliadau, ar yr un rhwydwaith, heb unrhyw gymwysterau newydd, yn awgrymu sbardun lleol fel sesiwn a gaewyd yn hytrach na dolen i fyny farw, crwydro Wi-Fi neu ôl-amser segur ar y concentrator. Mae tiwnel sy'n hongian ar Connecting, neu sy'n methu nes i chi newid rhwydwaith, yn erthygl wahanol.

Nodwch beth oedd ar agor pan godwyd y tiwnel: y derfynell y gwnaethoch redeg y cleient ohoni, unrhyw ail gragen, y mewngofnod graffigol, ac unrhyw sesiwn SSH o beiriant arall. Bydd arnoch angen y rhestr honno cyn bo hir, ac mae ei hailadeiladu o'r cof ar ôl y cwymp nesaf yn annibynadwy.

Gwiriwch beth a gofnododd y cleient wrth gysylltu

Nid yw'r cleient yn archwilio rhieni prosesau na pherchenogaeth terfynell. Mae'n cymryd ciplun o'r set o sesiynau mewngofnodi a oedd yn bresennol wrth gysylltu ac yn cymharu'r set honno'n ddiweddarach; pan fydd aelod yn diflannu, mae'r gymhariaeth yn methu ac mae'r tiwnel yn mynd gyda hi. Dyna pam y gallai cau'r ffenestr y cysylltwch ohoni fod yn ddiniwed tra bo cau terfynell sbâr ddi-gysylltiad yn lladd y cysylltiad: yr hyn sy'n bwysig yw a oedd y sesiwn honno yn y set wreiddiol. Cymhariaeth set yw'r gwiriad, nid cyfrif, a dyna pam y gall disodli sesiwn fod mor angheuol â cholli un.

Rhestrwch beth y gallai'r cleient ei weld cyn i chi newid unrhyw beth:

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

Mae pob llinell o who yn gofnod proses defnyddiwr yn utmp. Os yw'ch sesiwn yn ymddangos ddwywaith, unwaith ar gyfer y mewngofnod graffigol ac unwaith ar gyfer y derfynell, roedd y ddau gofnod yn bodoli wrth gysylltu ac mae'r ddau yn ymgeiswyr.

Tynnwch eich cofnod eich hun yn unig o utmp

Mae'r ateb dros dro a gyhoeddwyd yn gwneud y sesiwn rydych ar fin ei defnyddio yn anweladwy yn utmp cyn i'r cleient ddechrau. Mae rhaglen C fach yn cerdded getutent(), yn paru'r cofnod y mae ei ut_line yn hafal i TTY y mewnbwn safonol, ac yna'n ailysgrifennu'r cofnod hwnnw. Mae'r drefn yn fwriadol: setutent(), darllen y cofnod, copïo ei ut_id, gosod ut_type i DEAD_PROCESS, clirio'r meysydd defnyddiwr a llinell, ei ysgrifennu'n ôl gyda pututline(), yna endutent().

Compiliwch ef, yna ei redeg fel root o'r gragen a fydd yn cychwyn y cleient:

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

Mae dau fodd methu yn esbonio'r rhan fwyaf o adroddiadau bod yr offeryn yn gwneud dim. Mae'n gweithredu ar y TTY sydd ynghlwm wrth y mewnbwn safonol, felly mae ei redeg o sgript neu swydd cron heb derfynell yn gadael dim iddo ei baru. Ac nid yw /run/utmp yn ysgrifennadwy gan ddefnyddwyr cyffredin, felly mae rhedeg heb root yn methu'n dawel oni bai eich bod yn gwirio statws gadael.

Gwiriwch fod y tiwnel yn goroesi'r cau

Profwch y mecanwaith yn hytrach na'i dybio. Cysylltwch o sesiwn rydych yn bwriadu ei chadw, agorwch ail derfynell, cauwch yr ail, yna cadarnhewch fod y tiwnel yn dal i fyny gyda vpn state ac edrychiad ar y rhestr rhyngwynebau. Os yw'r tiwnel yn goroesi, sbardun o fath sesiwn penodol oedd hi yn hytrach na phob sesiwn, ac rydych wedi dod o hyd i'r sesiwn sy'n rhaid iddi aros ar agor.

Os yw'n dal i gwympo, roedd y sesiwn a wyliwyd yn rhywle arall, yn amlaf y mewngofnod graffigol a gynhyrchodd eich terfynell, ac ni fydd tynnu un cofnod TTY yn helpu. Ailadroddwch yr arsylwi gyda'r rhestr lawn o'r cam cyntaf yn hytrach nag ychwanegu mwy o lawdriniaeth.

Pryd yw ailysgrifennu utmp yn ateb anghywir

Cyfrifyddiaeth a rennir yw utmp, nid tabl preifat. Mae ailysgrifennu cofnod sesiwn sy'n dal yn fyw yn gwneud i who, w a rhywfaint o offer archwilio ei thangofnodi, a gall rhaglen sy'n cau'r un cofnod yn ddiweddarach fethu'n llwyr. Cadwch yr offeryn yn gyfyngedig i'ch sesiwn eich hun, cadwch gopi o'r ffeil wreiddiol, a pheidiwch â'i droi'n wasanaeth cychwyn sy'n tynnu pob cofnod.

Os yw'ch safle'n casglu cyfrifyddiaeth sesiynau ar gyfer cydymffurfiaeth, mae'r ateb dros dro yn gwrthdaro â'r gofyniad hwnnw a'r ateb a gefnogir yw fersiwn cleient gwahanol neu ddull mynediad gwahanol, nid utmp wedi'i glytio. I'r rhan fwyaf o bobl, y cywiriad lleiaf ymwthiol yw dechrau'r cleient o sesiwn a fydd yn aros ar agor trwy'r dydd a gadael y ffenestr honno'n llonydd.

Cyn i chi gau'r tocyn, cofnodwch pa sesiwn roedd y cleient yn ei gwylio pan godwyd y tiwnel. Yr un llinell honno sy'n troi datgysylltiad dirgel yn gyflwr atgynhyrchadwy i'r person nesaf wrth y peiriant.

Erthyglau cysylltiedig