vpn.persistent працягвае спрабаваць, але не трымае вас падключанымі
Уласцівасць просіць службу VPN утрымліваць тунель праз змены злучэння. Активацыя, жыццяздольнасць, намер і паводзіны kill-switch застаюцца асобнымі пытаннямі.
NetworkManager прапануе адну ўласцівасць, vpn.persistent, і людзі просяць яе адказаць адразу на чатыры розныя пытанні. Яго дакументацыя ўверх па плыні асцярожная: устойлівасць дзейнічае, калі служба VPN яе падтрымлівае, а профіль уключае, і тады злучэнне просяць перажыць змены злучэння і перапынкі да яўнага адключэння. Тая ж дакументацыя таксама паказвае, што ўласцівасць па змаўчанні роўная false, а гэта не тое, што мяркуюць большасць планаў аднаўлення. Чытайце гэта як просьбу аб спробе, а не як абяцанне выніку.
Што насамрэч абяцае налада
Значэнне, захаванае ў профілі, — гэта інструкцыя для менеджара, і менеджар павінен перадаць гэтую інструкцыю плагіну VPN, які ведае, што з ёй рабіць. Калі ўсталяваны плагін ігнаруе ўласцівасць, профіль усё роўна актывуецца, а журнал застаецца ціхім, што найгорш з абодвух светаў для ўсіх, хто потым будзе адладжваць. Нішто ўнутры профілю не можа прымусіць плагін рэалізаваць паводзіны, якіх у яго няма, таму адзіны бачны вынік — адсутнасць.
Менавіта таму ўмова ў дакументацыі важнейшая за перамыкач. Праверце, які плагін і выпуск у вас насамрэч ёсць, і запішыце версію побач з апісаннем злучэння, каб наступнаму чалавеку не давялося адкрываць яе нанова. Палітыка аднаўлення, пабудаваная на нерэалізаваным сцяжку, правальваецца роўна адзін раз у прадукцыі і заўсёды ў самы незручны момант.
Стаўленне да ўласцівасці як да спробы таксама задае правільнае чаканне ад тэставання. Вы правяраеце не тое, ці ўсталяваны сцяжок; вы правяраеце, ці нешта адбылося, калі злучэнне абарвалася. Гэта розныя эксперыменты, і толькі адзін з іх варты цэлага дня.
Чатыры пытанні, якія зліваюцца ў адно
Активацыя пытаецца, што ўздымае VPN у першую чаргу. Профіль NetworkManager можа быць прывязаны да базавага злучэння, асобна кіраваная служба OpenVPN мае ўласны запуск, а даданне трэцяга пускача да гэтай схемы дае вам двух гаспадароў з рознымі ўяўленнямі пра тое, хто галоўны. Вызначце, які кампанент валодае запускам, перш чым дадаць яшчэ адзін трыгер.
Аднаўленне пытаецца, што адбываецца, калі злучэнне змяняецца або знікае, і гэта тое вузкае пытанне, на якое адказвае vpn.persistent. Жыццяздольнасць пытаецца, ці можа кліент заўважыць, што далёкі бок перастаў адказваць, і замест гэтага на яго адказваюць паводзіны keepalive або перазапуску OpenVPN; гэтыя два механізмы часта апісваюць адным словам і рэалізуюць у розных месцах. Тэстуйце іх асобна, рознымі інструментамі, інакш вы аднясеце адны паводзіны да іншых.
Намер пытаецца, ці патрэбна перападключэнне наогул, і менавіта на гэтае пытанне не можа адказаць апытанне стану. Наўмыснае спыненне і перапынак даюць адзін і той жа неактыўны стан, таму ўсё, што перападключаецца пры адсутнасці, здагадваецца пра рашэнне чалавека. Здагадвацца можна роўна да таго моманту, пакуль гэта не пераважыць чыёсьці рашэнне.
Кантрольны спіс, які трымае іх асобна
Выконвайце падзеі па чарзе, а не чытайце канфігурацыю і разважайце пра яе, і запісвайце, што кожная паказвае, з адзнакай часу.
Па-першае, актывуйце патрэбнае базавае злучэнне і пераканайцеся, што VPN узняўся праз чаканы трыгер, а не праз механізм, які вы забыліся ўсталяваць. Па-другое, падчас ухваленага перапынку параўнайце падзеі VPN менеджара, стан аднаўлення кліента-гаспадара і новы запыт да прыватнага рэсурсу. Па-трэцяе, наўмысна адключыцеся, пачакайце і пераканайцеся, што нішто не перазапускае профіль за вашай спіной.
Трэці крок — той, які людзі прапускаюць, і менавіта ён часцей за ўсё знаходзіць сапраўдны дэфект. Вартаўнік, які апытвае актыўны профіль і перападключаецца, калі яго няма, весела адмяніць наўмыснае адключэнне карыстальніка. З пункту гледжання карыстальніка гэта не ўстойлівасць; гэта машына, якая не будзе слухацца. Спытайце іх, перш чым дадаць такі.
Запішыце вынікі ў той жа дакумент, што і апісанне злучэння. Палітыка аднаўлення настолькі добрая, наколькі апошні раз хтосьці назіраў, як яна наўмысна правальваецца. Адзнакі часу робяць розніцу бачнай для кожнага, хто прачытае нататкі наступным.
Аўтэнтыфікацыя — частка аднаўлення
Перападключэнне — не толькі сеткавае дзеянне. Калі ўхвалены паток патрабуе новага выкліку, аднаразовага кода або сакрэту, да якога кантэкст актывацыі не можа дабрацца, ніводная налада ўстойлівасці не можа стварыць яго з нічога.
Гэта тлумачыць знаёмую заканамернасць: злучэнне аднаўляецца на машыне з разблакаванай звязкай ключоў і правальваецца на той жа машыне пасля перазагрузкі. Сеткавы ўзровень зрабіў менавіта тое, што ў яго папрасілі, а ўзроўню ўліковых даных не было чаго прапанаваць.
Выпраўце працэс уліковых даных замест таго, каб скарачаць інтэрвал паўторных спроб. Больш хуткія спробы супраць запыту, на які ніхто не можа адказаць, ствараюць шум у журнале і фальшывае ўражанне, што нешта робіцца.
Устойлівасць — гэта не kill switch
Уласцівасць спрабуе захаваць або аднавіць сувязь з VPN. Яна не вырашае, што могуць рабіць праграмы, пакуль VPN не працуе, і сама нічога не блакуе.
Калі патрабаванне ў тым, каб ніякі трафік не выходзіў па-за тунель, гэта асобная палітыка з уласным механізмам, уласным тэставаннем і ўласнымі рэжымамі адмоў. Здагадка, што ўстойлівасць гэта пакрывае, ператварае рашэнне бяспекі ў няшчасны выпадак.
Запішыце абедзве паловы ў нататках пра аднаўленне: што спрабаваў VPN і які трафік праграм быў дазволены, пакуль спроба ішла.