Туннель ажиллаж байна, та нэмэлт терминал хааж байтал клиент дотор нэг ч товч даралгүй VPN уначихдаг. Linux AnyConnect клиент дээр мэдээлэгддэг шалтгаан нь маршрутчлал бус сессийн бүртгэл: клиент туннель босох үед ямар нэвтрэлтийн сессүүд байсныг тэмдэглээд, тэдгээрийн аль нэг нь дуусахыг туннелийг унагах шалтгаан гэж үздэг. Доорх шалгалтууд дарааллаар явагдах бөгөөд эхний бүтэлгүйтсэн нь та энэ зан төлөвтэй тулгарч байгаа эсэхийг хэлнэ. Клиентийн ердийн гаралтад терминалын тухай юу ч байдаггүй тул концентраторыг буруутгах эхний зөн совин ихэвчлэн дэмий хөдөлмөр юм.

Системийн файлуудыг засвараас эхэлж болохгүй. Алхам бүр тасралтыг тайлбарлах эсвэл нэг боломжийг хасах бөгөөд хямд алхмууд эхэндээ ордог.

Сессийн тасралтыг үндсэн холбоосын тасралтаас ялгах

Тасарсны дараа шууд дахин холбогдоорой. Ижил сүлжээнд, шинэ нэвтрэх мэдээлэлгүйгээр хэдхэн секундын дотор буцаж ирсэн туннель нь үхсэн аплинк, Wi-Fi роуминг эсвэл концентраторын идэвхгүй таймаут биш, харин хаагдсан сесс гэх мэт локал шалтгааныг заана. Connecting дээр гацах эсвэл сүлжээ солих хүртэл бүтэлгүйтэх туннель нь өөр өгүүлэл.

Туннель босох үед юу нээлттэй байсныг бичиж аваарай: клиентийг ажиллуулсан терминал, ямар ч хоёр дахь шелл, график нэвтрэлт, өөр машинаас ирсэн ямар ч SSH сесс. Энэ жагсаалт удахгүй хэрэгтэй болох бөгөөд дараагийн тасралтын дараа үүнийг ой санамжаас сэргээх нь найдваргүй.

Холбогдох үед клиент юу тэмдэглэснийг шалгах

Клиент процессын эцэг эх эсвэл терминалын эзэмшлийг шалгадаггүй. Тэр холбогдох үед байсан нэвтрэлтийн сессүүдийн олонлогийг агшин зуур тэмдэглээд дараа нь тэр олонлогтой харьцуулдаг; гишүүн алга болвол харьцуулалт бүтэлгүйтэж, туннель хамт унана. Тиймээс холбогдсон цонхыг хаах нь хор хөнөөлгүй байж болох ч хамаагүй нэмэлт терминал хаах нь холболтыг устгадаг: тэр сесс анхны олонлогт байсан эсэх нь чухал. Энэ нь тоо биш олонлогийн харьцуулалт тул сессийг солих нь нэгийг алдахтай адил хортой байж болно.

Юу ч өөрчлөхөөс өмнө клиент юу харж байсныг жагсаа:

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

who-ын мөр бүр utmp дахь хэрэглэгчийн процессын бүртгэл. Хэрэв таны сесс хоёр удаа гарч байвал, нэг нь график нэвтрэлтэд, нэг нь терминалд, хоёр бүртгэл хоёулаа холбогдох үед байсан бөгөөд хоёулаа нэр дэвшигч.

utmp-ээс зөвхөн өөрийн бүртгэлийг устга

Нийтлэгдсэн шийдэл нь таны ашиглах гэж буй сессийг клиент эхлэхээс өмнө utmp дотор үл үзэгдэх болгодог. Жижиг C програм getutent()-ээр явж, ut_line нь стандарт оролтын TTY-тэй тэнцүү бүртгэлийг олоод тэр бүртгэлийг дахин бичдэг. Дараалал санаатай: setutent(), бүртгэлийг унших, түүний ut_id хуулах, ut_type-г DEAD_PROCESS болгох, хэрэглэгч ба мөрийн талбарыг цэвэрлэх, pututline()-ээр буцааж бичих, дараа нь endutent().

Үүнийг компайл хийгээд, клиентийг эхлүүлэх шеллээс root-оор ажиллуул:

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

Хэрэгсэл юу ч хийдэггүй гэсэн ихэнх мэдээллийг хоёр бүтэлгүйтлийн горим тайлбарлана. Энэ нь стандарт оролтод холбогдсон TTY дээр үйлчилдэг тул терминалгүй скрипт эсвэл cron ажлаас ажиллуулбал тааруулах юу ч үлдэхгүй. Мөн /run/utmp энгийн хэрэглэгчдэд бичигдэхгүй тул root биш гүйлт нь гарах төлөвийг шалгахгүй бол чимээгүйхэн бүтэлгүйтнэ.

Туннель хаалтыг даван туулах эсэхийг шалга

Механизмыг таамаглахын оронд туршаад үз. Үргэлжлүүлэхээр төлөвлөж буй сессээс холбогдож, хоёр дахь терминал нээж, хоёр дахьыг хаагаад, vpn state ба интерфейсийн жагсаалтаар туннель одоо ч байгаа эсэхийг батал. Туннель амьд үлдвэл шалтгаан нь бүх сесс биш тодорхой төрлийн сесс байсан бөгөөд нээлттэй байх ёстой сессийг олсон.

Хэрэв одоо ч унаж байвал ажиглагдсан сесс өөр газар байсан, ихэвчлэн таны терминалыг үүсгэсэн график нэвтрэлт, нэг TTY бүртгэлийг устгах нь тус болохгүй. Илүү их мэс засал хийхийн оронд эхний алхмын бүрэн жагсаалттайгаар ажиглалтыг давт.

utmp-г дахин бичих нь буруу хариулт болох үе

utmp нь хуваалцсан бүртгэл, хувийн хүснэгт биш. Амьд байгаа сессийн бүртгэлийг дахин бичих нь who, w болон зарим аудитын хэрэгсэл түүнийг дутуу мэдээлэхэд хүргэх бөгөөд дараа нь мөнөөх бүртгэлийг хаах програм огт бүтэлгүйтэж болно. Хэрэгслийг зөвхөн өөрийн сессээр хязгаарлаж, анхны файлын хуулбарыг хадгалж, бүх бүртгэлийг устгадаг ачаалах үйлчилгээ болгож болохгүй.

Хэрэв танай байгууллага нийцлийн үүднээс сессийн бүртгэл цуглуулдаг бол энэ шийдэл тэр шаардлагатай зөрчилдөх бөгөөд дэмжигдсэн хариулт нь клиентийн хувилбар эсвэл өөр хандалтын арга, зассаны utmp биш. Ихэнх хүмүүст хамгийн бага оролцоотой шийдэл бол өдөржингөө нээлттэй байх сессээс клиентийг эхлүүлж, тэр цонхыг хөндөхгүй байх явдал.

Тикетийг хаахаас өмнө туннель босох үед клиент аль сессийг ажиглаж байсныг бич. Тэр ганц мөр нь нууцлаг тасралтыг машин дээрх дараагийн хүнд давтагдах нөхцөл болгоно.

Холбоотой нийтлэлүүд