AnyConnect terminal bağlananda düşür: sessiya yoxlamaları
Linux üçün AnyConnect müştərisi qoşulma anında açıq olan giriş sessiyalarını yadda saxlayır və onlardan biri bağlananda tuneli salır. utmp-ni yenidən yazmadan əvvəl sıranı yoxlayın.
Tunel işləyir, əlavə bir terminalı bağlayırsınız və müştəridə bir düymə basmadan VPN düşür. Linux AnyConnect müştərisində bildirilən səbəb marşrutlaşdırma deyil, sessiya uçotudur: müştəri tunel qalxdığı anda hansı giriş sessiyalarının mövcud olduğunu qeyd edir və onlardan hər hansı birinin bitməsini tuneli dağıtmaq üçün səbəb sayır. Aşağıdakı yoxlamalar sıra ilə aparılır və ilk uğursuz olan sizə ümumiyyətlə bu davranışa baxdığınızı bildirir. Müştərinin adi çıxışında terminaldan heç bir söz keçmir, buna görə də ilk instinkt, yəni konsentratoru günahlandırmaq, adətən boşa sərf olunan səydir.
Sistem fayllarını redaktə etməklə başlamayın. Hər addım ya düşməni izah edir, ya da bir namizədi aradan qaldırır və ucuz addımlar əvvəl gəlir.
Sessiya düşməsini əsas şəbəkə düşməsindən ayırın
Kəsilmədən dərhal sonra yenidən qoşulun. Saniyələr içində, eyni şəbəkədə, yeni etimadnaməsiz geri gələn tunel ölü yuxarı kanal, Wi-Fi rouminqi və ya konsentratorda boşdayanma vaxt aşımı kimi xarici səbəblərdən deyil, bağlanmış sessiya kimi yerli tətikdən xəbər verir. Connecting üzərində ilişib qalan və ya şəbəkəni dəyişənə qədər uğursuz olan tunel başqa məqalədir.
Tunel qalxanda nəyin açıq olduğunu yazın: müştərini işə saldığınız terminal, hər hansı ikinci shell, qrafik giriş və başqa maşından gələn istənilən SSH sessiyası. Bu siyahı bir azdan lazım olacaq və növbəti düşmədən sonra onu yaddaşdan bərpa etmək etibarsızdır.
Müştərinin qoşulma anında nə qeyd etdiyini yoxlayın
Müştəri proses valideynlərini və ya terminal sahibliyini yoxlamır. O, qoşulma anında mövcud olan giriş sessiyaları çoxluğunun anlıq görüntüsünü götürür və həmin çoxluğu sonra müqayisə edir; bir üzv yox olduqda müqayisə uğursuz olur və tunel də onunla gedir. Buna görə qoşulduğunuz pəncərəni bağlamaq zərərsiz ola bilər, halbuki əlaqəsiz əlavə terminalın bağlanması bağlantını öldürür: vacib olan həmin sessiyanın ilkin çoxluqda olub-olmadığıdır. Yoxlama say deyil, çoxluq müqayisəsidir, buna görə də bir sessiyanı əvəz etmək onu itirmək qədər fəlakətli ola bilər.
Nəyisə dəyişməzdən əvvəl müştərinin görə bildiklərini sadalayın:
who
w
last -n 10
sudo ls -l /run/utmpwho sətrinin hər biri utmp daxilində istifadəçi prosesi qeydidir. Sessiyanız iki dəfə görünürsə, biri qrafik giriş, biri terminal üçün, hər iki qeyd qoşulma anında mövcud idi və hər ikisi namizəddir.
utmp-dən yalnız öz qeydinizi silin
Dərc olunmuş iş ətrafı müştəri başlamazdan əvvəl istifadə edəcəyiniz sessiyanı utmp daxilində görünməz edir. Kiçik bir C proqramı getutent() üzərində gəzir, ut_line sahəsi standart girişin TTY-si ilə bərabər olan qeydi tapır və sonra həmin qeydi yenidən yazır. Sıra qəsdəndir: setutent(), qeydi oxu, onun ut_id dəyərini kopyala, ut_type sahəsini DEAD_PROCESS olaraq qur, istifadəçi və sətir sahələrini təmizlə, pututline() ilə geri yaz, sonra endutent().
Onu kompilyasiya edin, sonra müştərini başladacaq shell-dən root kimi işə salın:
sudo ./utmpremove && /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.eduAlətin heç nə etmədiyi barədə reportların çoxu iki uğursuzluq rejimi ilə izah olunur. O, standart girişə bağlanmış TTY üzərində işləyir, buna görə terminalı olmayan skriptdən və ya cron tapşırığından işə salmaq ona uyğunlaşdıracaq heç nə qoymur. Və /run/utmp adi istifadəçilər üçün yazıla bilən deyil, buna görə root olmayan işə salma çıxış statusunu yoxlamasanız səssizcə uğursuz olur.
Tunelin bağlanmadan sağ çıxdığını təsdiqləyin
Mexanizmi fərz etmək əvəzinə sınaqdan keçirin. Saxlamaq niyyətində olduğunuz sessiyadan qoşulun, ikinci terminal açın, ikincini bağlayın, sonra vpn state və interfeys siyahısına baxışla tunelin hələ də işlədiyini təsdiqləyin. Tunel sağ qalırsa, tətik hər sessiya deyil, müəyyən sessiya növü idi və açıq qalmalı olan sessiyanı tapmısınız.
Hələ də düşürsə, izlənən sessiya başqa yerdə idi, ən çox terminalınızı yaradan qrafik giriş, və bir TTY qeydini çıxarmaq kömək etməyəcək. Daha çox cərrahiyyə əlavə etmək əvəzinə müşahidəni birinci addımdaki tam siyahı ilə təkrarlayın.
utmp-nin yenidən yazılması yanlış cavab olanda
utmp şəxsi cədvəl deyil, ortaq uçotdur. Hələ canlı olan sessiyanın qeydini yenidən yazmaq who, w və bəzi audit alətlərinin onu az göstərməsinə səbəb olur və həmin qeydi sonra bağlayan proqram tamamilə uğursuz ola bilər. Aləti öz sessiyanızla məhdud saxlayın, orijinal faylın surətini saxlayın və onu hər qeydi silən yükləmə xidmətinə çevirməyin.
Sizin sayt uyğunluq üçün sessiya uçotu toplayırsa, iş ətrafı bu tələblə ziddiyyət təşkil edir və dəstəklənən cavab müştəri versiyası və ya fərqli giriş üsuludur, yamaq vurulmuş utmp deyil. Əksər insanlar üçün ən az müdaxilə edən düzəliş sadəcə müştərini bütün gün açıq qalacaq sessiyadan başlatmaq və o pəncərəni tək buraxmaqdır.
Bileti bağlamazdan əvvəl tunel qalxanda müştərinin hansı sessiyanı izlədiyini qeyd edin. Məhz o bir sətir sirli kəsilməni maşındaki növbəti adam üçün təkrarlana bilən vəziyyətə çevirir.