Како да го префрлите OpenConnect во позадина по интерактивна најава
Завршете ја најавата во преден план, потоа предајте го тунелот на сопствениот позадински режим на клиентот. Проверките што го држат пронајдлив и запирлив.
Ја завршувате MFA-барањето, тунелот се крева, а затворањето на терминалот ја соборува врската. Тоа е проблем на надзор, не на автентикација, и OpenConnect веќе го има прекинувачот што го решава. Решението е клиентот да се разграни во позадина откако ќе заврши стартувањето, кога интерактивниот дел навистина е готов. Следи низа проверки: поминете ги по ред и застанете на првата што не важи за вашата порта.
Потврдете што бара портата при најава
Пред да напишете команда, запишете ја патеката на акредитивите што ја наметнува распоредувањето. Само сертификат, лозинка плус токен и браузерска прошетка преку SAML-добавувач се однесуваат различно, а позадинскиот режим не може да прескокне ниту еден. Опцијата менува што се случува по стартувањето, никогаш што се случува за време на него.
Примамливото решение е да се автоматизира барањето. Обвивка што пишува фиксен одговор кога ќе препознае барање за лозинка се крши во мигот кога портата ќе побара еднократен код и остава акредитив во датотека што други сметки можат да ја читаат. Ако човек мора да ја одобри сесијата, задржете го човекот во текот.
Стартувајте ја првата сесија во преден план и прочитајте го излезот
Поврзете се еднаш нормално и оставете целиот ракување да се испечати. Забележете го протоколот, патеката на сертификатот или токенот, адресата на тунелот што ја доделува серверот и секое предупредување пред прифаќањето. Тој запис е вашата основна линија и единствениот евтин начин подоцна да разликувате проблем на клиентот од промена на портата. Зачувајте го надвор од баферот на терминалот.
Потоа повторете го истиот повик со позадински режим и додадена PID-датотека, на пример openconnect --background --pid-file /run/openconnect.pid vpn.example.net, држејќи ги протоколот и опциите за автентикација што ги бара вашата порта во истиот ред. Прирачникот на OpenConnect ја опишува опцијата како продолжување во позадина по завршувањето на стартувањето и токму затоа интерактивната фаза мора прва да заврши.
Направете го процесот што работи пронајдлив и запирлив
PID-датотеката е доказ само додека одговара на жив процес. Ставете ја во директориум што го поседува сервисната сметка и споредете го запишаниот број со табелата на процеси пред да испратите сигнал. Рестартирањата и падовите ја оставаат датотеката, а застарената датотека е вообичаената причина скриптата за запирање да пријави успех додека тунелот е сè уште кренат. Третирајте ја проверката како дел од постапката за запирање, не како изборен чекор.
Испратете сигнал до проверениот PID, потоа потврдете дека интерфејсот на тунелот навистина исчезнал наместо да верувате на излезниот статус. Ако на клиентот му требаат зголемени привилегии за конфигурирање на интерфејсот, сигналот мора да дојде од сметка што смее да го испрати.
Не наредувајте позадински режим под надзорник
systemd и слични надзорници очекуваат да го поседуваат процесот што го стартувале, затоа клиентот што се разгранува ги збунува. Надзорникот гледа како стартувачот излегува додека вистинската врска живее, па логиката за рестарт, известувањето за состојба и роковите за запирање опишуваат нешто што повеќе не е точно. Напишете ја единицата во поддржаниот преден распоред и оставете го надзорникот да ја заврши демонската работа.
Зачувајте го --background за сесии што човек ги започнува и потоа заминува. Ако барањето е тунел што постои пред никој да се најави, делот што недостасува е одобрен неинтерактивен идентитет плус план за негово обновување, а ниедно знаменце од командната линија не дава ниту едно. Додавањето на знаменцето во стартна скрипта создава тунел што тивко паѓа при првиот истечен акредитив.
Третирајте го колачето за сесија како акредитив
OpenConnect документира посебна фаза на автентикација преку --authenticate, а добиениот материјал може да се врати со --cookie-on-stdin. Тој пар постои за интеграциска работа, а она што го создава е чувствително колку лозинката што го создала.
Држете ја вредноста надвор од историјата на лушпата, од дневниците и од секој тикет што го отворате. Скриптата за предавање мора да ги зачува и проверените податоци за крајната точка што клиентот ги добил со колачето; ако ги изгубите, подоцнежно стартување може да се поврзе со домаќин што никогаш не сте го автентицирале, што е полошо од врска што едноставно паѓа.
Поминете ја листата пред да го затворите терминалот
Четири работи треба да бидат точни: интерактивната најава заврши во преден план, PID-датотеката покажува на проверен процес, прашањето за надзорникот е решено на едната или другата страна и колачето има план за чување што не е обична текстуална датотека. Кога сите четири важат, заминувањето од терминалот е безбедно и тунелот продолжува да работи.
Ако една од нив падне, поправете ја таа ставка пред да ги допрете другите, бидејќи останатите проверки не можат да ја надоместат. Зачувајте го и записот од преден план од првото стартување: следниот пат кога тунелот ќе падне без предупредување, таа основна линија го одвојува повикот на портата од оној на клиентот.