AnyConnect inakatika unapofunga terminal: ukaguzi wa vikao
Mteja wa AnyConnect kwenye Linux hukumbuka vikao vya kuingia vilivyokuwa wazi wakati wa kuunganisha na hukata handaki pale kimoja kikifungwa. Kagua mfululizo kabla ya kuandika upya utmp.
Handaki liko juu, unafunga terminal ya ziada, na VPN inaanguka bila hata kitufe kimoja kuguzwa kwenye mteja. Kwenye mteja wa AnyConnect wa Linux sababu inayotajwa ni uhasibu wa vikao, si uelekezaji: mteja hurekodi ni vikao gani vya kuingia vilikuwepo wakati handaki lilipoinuka na huchukulia mwisho wa kimoja chao kama sababu ya kulibomoa. Ukaguzi ulio hapa chini hufanyika kwa mfululizo, na ule wa kwanza kushindwa hukuambia kama unaangalia tabia hii kabisa. Hakuna chochote katika matokeo ya kawaida ya mteja kinachotaja terminal, ndiyo sababu wazo la kwanza, kulaumu kikusanyaji, kwa kawaida ni kazi bure.
Usianze kwa kuhariri faili za mfumo. Kila hatua ama inaeleza kuanguka au inaondoa mtarajiwa mmoja, na hatua za bei ndogo huja kwanza.
Tenganisha kuanguka kwa kikao na kuanguka kwa tabaka la chini
Unganisha tena mara moja baada ya kukatika. Handaki linalorudi ndani ya sekunde chache, kwenye mtandao huo huo na bila vyeti vipya, linaelekeza kwa kichocheo cha ndani kama kikao kilichofungwa na si kiungo cha juu kilichokufa, uzinzi wa Wi-Fi au muda wa kutokufanya kazi kwenye kikusanyaji. Handaki linaloning'inia kwenye Connecting, au linaloshindwa hadi ubadilishe mtandao, ni makala nyingine.
Andika kilichokuwa wazi wakati handaki lilipoinuka: terminal uliyoendeshea mteja, shell yoyote ya pili, kuingia kwa picha, na kikao chochote cha SSH kutoka mashine nyingine. Orodha hiyo utaihitaji baada ya muda mfupi, na kuijenga upya kutoka kumbukumbu baada ya kukatika kunakofuata hakuaminiki.
Kagua kile mteja alichorekodi wakati wa kuunganisha
Mteja hachunguzi wazazi wa michakato au umiliki wa terminal. Huchukua picha ya seti ya vikao vya kuingia vilivyokuwepo wakati wa kuunganisha na baadaye hulinganisha seti hiyo; mwanachama anapotoweka, ulinganisho unashindwa na handaki huondoka nayo. Ndiyo sababu kufunga dirisha ulilounganisha kutoka kwake kunaweza kuwa kusio na madhara wakati kufunga terminal ya ziada isiyohusiana kunaua muunganisho: cha muhimu ni kama kikao hicho kilikuwa kwenye seti ya awali. Ni ulinganisho wa seti, si hesabu, ndiyo sababu kubadilisha kikao kunaweza kuwa mbaya kama kupoteza kimoja.
Orodhesha kile mteja angeweza kuona kabla ya kubadilisha chochote:
who
w
last -n 10
sudo ls -l /run/utmpKila mstari kutoka who ni kumbukumbu ya mchakato wa mtumiaji katika utmp. Ikiwa kikao chako kinaonekana mara mbili, mara moja kwa kuingia kwa picha na mara moja kwa terminal, kumbukumbu zote mbili zilikuwepo wakati wa kuunganisha na zote mbili ni mtarajiwa.
Ondoa kumbukumbu yako tu kutoka utmp
Suluhisho lililochapishwa hufanya kikao unachokaribia kutumia kisionekane katika utmp kabla mteja hajaanza. Programu ndogo ya C inapita getutent(), inapata kumbukumbu ambayo ut_line yake ni sawa na TTY ya ingizo la kawaida, kisha inaandika upya kumbukumbu hiyo. Mfululizo ni wa makusudi: setutent(), soma kumbukumbu, nakili ut_id yake, weka ut_type kuwa DEAD_PROCESS, futa sehemu za mtumiaji na mstari, andika upya kwa pututline(), kisha endutent().
Iunganishe, kisha iendeshe kama root kutoka shell itakayoanzisha mteja:
sudo ./utmpremove && /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.eduMbinu mbili za kushindwa zinaeleza ripoti nyingi kwamba chombo hakifanyi chochote. Hufanya kazi kwenye TTY iliyounganishwa na ingizo la kawaida, kwa hivyo kuiendesha kutoka skripti au kazi ya cron bila terminal hakuachi chochote cha kulinganisha. Na /run/utmp haiandikiki na watumiaji wa kawaida, kwa hivyo uendeshaji bila root hushindwa kimya isipokuwa ukague hali ya kutoka.
Thibitisha kwamba handaki linastahimili kufungwa
Jaribu utaratibu badala ya kuudhani. Unganisha kutoka kikao unachokusudia kudumisha, fungua terminal ya pili, funga ile ya pili, kisha thibitisha kwa vpn state na mtazamo wa orodha ya violesura kwamba handaki bado liko juu. Ikiwa handaki linastahimili, kichocheo kilikuwa aina fulani ya kikao na si kila kikao, na umepata kikao kinachopaswa kubaki wazi.
Ikiwa bado kinaanguka, kikao kilichofuatiliwa kilikuwa mahali pengine, mara nyingi kuingia kwa picha kulikozalisha terminal yako, na kuondoa kumbukumbu moja ya TTY hakusaidii. Rudia uchunguzi na orodha kamili kutoka hatua ya kwanza badala ya kuongeza upasuaji zaidi.
Wakati kuandika upya utmp ni jibu lisilo sahihi
utmp ni uhasibu wa pamoja, si jedwali la kibinafsi. Kuandika upya kumbukumbu ya kikao kilicho hai bado hufanya who, w na zana zingine za ukaguzi kuripoti kidogo, na programu inayofunga kumbukumbu hiyo baadaye inaweza kushindwa kabisa. Weka chombo hicho kwa kikao chako tu, hifadhi nakala ya faili ya awali, na usikifanye huduma ya kuanza inayoondoa kila kumbukumbu.
Ikiwa tovuti yako inakusanya uhasibu wa vikao kwa ajili ya uzingatiaji, suluhisho hili linapingana na hitaji hilo na jibu linalotumika ni toleo la mteja au njia nyingine ya ufikiaji, si utmp iliyorekebishwa. Kwa watu wengi suluhisho lisiloingilia sana ni kuanzisha mteja kutoka kikao kitakachobaki wazi siku nzima na kuacha dirisha hilo.
Kabla ya kufunga tikiti, rekodi ni kikao gani mteja alikuwa akifuatilia wakati handaki lilipoinuka. Mstari huo mmoja hubadilisha kukatika kwa ajabu kuwa hali inayoweza kurudiwa kwa mtu anayefuata kwenye mashine.