Як перавесці 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 указвае на правераны працэс, пытанне наглядальніка вырашана ў той ці іншы бок, і кука мае план захавання, які не з'яўляецца звычайным тэкставым файлам. Калі ўсе чатыры выконваюцца, адыход ад тэрмінала бяспечны, і тунель працягвае працаваць.
Калі адзін з іх збоіць, выпраўце гэты пункт, перш чым кранаць іншыя, бо астатнія праверкі не могуць яго кампенсаваць. Захавайце таксама запіс пярэдняга плана з першага запуску: наступны раз, калі тунель зваліцца без папярэджання, менавіта гэтая базавая лінія аддзяляе змену на баку шлюза ад змены на баку кліента.