Keepalive — гэта не перападключэнне: выбірайце па сваёй няспраўнасці
Адзін пакет трымае адлюстраванне жывым; перападключэнне аднаўляе сувязь. Падбярыце механізм пад няспраўнасць, потым праверце рэальным запытам.
Keepalive і перападключэнне наладжваюць адным духам, але вырашаюць розныя задачы, таму настройка аднаго рэдка выпраўляе другое. Keepalive шле малы трафік, каб запіс стану заставаўся жывым або каб заўважыць, што партнёр перастаў адказваць. Перападключэнне разбірае зламанае і будуе сувязь нанова, уключаючы ключы, адрасы і маршруты. Выбірайце механізм, які адпавядае няспраўнасці, а не той, чыю ручку вы ўжо ведаеце. Два пытанні вырашаюць гэта: ці шлях мёртвы, ці нешта паміж бакамі яго забывае?
Калі праблема ў адлюстраванні
Тунэль, які памірае толькі пасля хвілін маўчання, звычайна губляе запіс пераўтварэння, а не партнёра. У WireGuard PersistentKeepalive існуе для стану NAT і фаервала, і ўласныя нататкі праекта апісваюць яго менавіта так, а не як праверку жыццяздольнасці. Інтэрвал у некалькі дзясяткаў секунд трымае запіс цёплым, а пакет кожную секунду — гэта рашэнне пра батарэю, а не пра надзейнасць. OpenVPN прыходзіць да таго ж праз ping і ping-restart , якія спачатку заўважаюць маўчанне, а потым дзейнічаюць.
Гэтыя налады таксама не ўзаемазаменныя паміж пратаколамі. Палітыка IKEv2 для мёртвага партнёра, таймер ping у OpenVPN і keepalive у WireGuard адказваюць на адно пытанне трыма рознымі сінтаксісамі і трыма рознымі значэннямі па змаўчанні, таму капіраванне ліку паміж імі — гэта здагадка, прыбраная пад наладку.
Калі сувязь знікла
Калі партнёр змяняе адрас, уліковыя даныя сканчаюцца або далёкі бок перазапускаецца, дробныя пакеты не ратуюць. Перападключэнне павінна аднавіць стан : атрымаць адрас, пераўсталяваць маршруты, перазамовіць ключы, а ў некаторых разгортваннях паўторна аўтэнтыфікаваць карыстальніка.
Кліенты, якія перападключаюцца без нагляду, трымаюць сертыфікат або захаваны сакрэт. Кліент, які спытаў бы чалавека, збаўляецца менавіта тады, калі нікога няма, — а гэта і ёсць сцэнар, дзе перападключэнне мела значэнне. Гэта рашэнне праектавання, прынятае месяцамі раней, а не налада, якую можна змяніць падчас збою.
Што не даказвае ні адно, ні другое
Тунэль можа быць перападключаны, з ключамі і маршрутамі, пакуль служба за ім не працуе, а keepalive можа трымаць адлюстраванне адкрытым для сесіі, чый сервер знік гадзіны таму. Абодва механізмы могуць паведамляць пра поспех, пакуль тое, што вам сапраўды важна, недаступнае.
Таму тэст сканчаецца рэальным запытам. Адпраўце нешта праз тунэль пасля інтэрвалу, які вас цікавіць, потым асобна выклічце няспраўнасць, пад якую вы разлічвалі: перыяд прастою для выпадку з адлюстраваннем, перазапуск або змена адраса для выпадку з перападключэннем.
Блакіроўка прамога трафіку — асобнае рашэнне
Цыкл перападключэння можа быць цалкам здаровым, пакуль праграма ціха ідзе звычайным маршрутам, а гэта ўцечка, а не збой. Калі патрабаванне ў тым, каб нішто не выходзіла па-за тунэль, скажыце гэта яўна ў канфігурацыі кліента і давядзіце, апусціўшы тунэль і паглядзеўшы, што ўсё яшчэ злучаецца. Ні адзін механізм гэтага не прадугледжвае, і ніякая дысцыпліна паўтораў гэтага не ўсталёўвае.
Запішыце, які механізм спрацаваў і ці ўдаўся новы запыт пасля. Менавіта гэтыя два факты патрэбныя наступнаму інжынеру, і ні адзін з іх не бачны ў значку стану. Радок у лозе пра перападключэнне кліента — не тое самае, што запыт, які спрацаваў.
Напішыце палітыку, а не толькі лік
Звядзіце пару ў адзін сказ: інтэрвал прастою, парог жыццяздольнасці, што запускае перабудову , і што робіць кліент, пакуль паўтарае. Без гэтага сказа кожны будучы інцыдэнт зноў адкрывае тую ж спрэчку: keepalive занадта кароткі ці перападключэнне занадта павольнае.
Нататкі WireGuard пра абмежаванні — карыснае напамінанне, што keepalive ёсць абыходным рашэннем для прамежкавых прылад, а не агульным дызайнам жыццяздольнасці. Прачытайце гэтае абмежаванне, перш чым павышаць частоту ў адказ на праблему, якую яно не можа вырашыць.