Машинаны ұйқыға қояңыз, оятыңыз, содан кейін кез келген конфигурацияға тиіспес бұрын осы тәртіппен үш нәрсені тексеріңіз: tun0 әлі бар ма, ішкі мекенжайға баратын маршрут оны әлі таңдай ма және сервер бұл көршіні әлі тізімдей ме. Ұйқыдан аман қалған, бірақ маршруты басқа жақты нұсқаған құрылғы — қалдық, туннель емес. Маршрут дұрыс болып, трафик бәрібір өлсе, ақау туннельден жоғарыда жатыр және клиентті қайта іске қосу оны өзгертпейді. Қайта қосуды автоматтандыру тек осы үш жағдайдың қайсысы екенін қолмен тексеру көрсеткеннен кейін ғана мәнге ие.

ip -br address show tun0
ip route get 10.20.0.10
journalctl -u openvpn-client@office -b --no-pager | tail -30

Автоматтандырмас бұрын оянуды қайталаңыз

Ұйқы шифрланған сессияны құрылғыны алып тастағаннан гөрі жиі аяқтайды. Туннельді тірі ұстаған UDP ағыны тоқтайды, сервер көршіні тастауы мүмкін, ал клиент не байқап қайта қосылады, не артында ештеңе жоқ интерфейсті ұстап қалады. Тек интерфейсті тексеру азды дәлелдейді, өйткені ескірген құрылғы жұмыс істеп тұрған құрылғыға дәл ұқсайды пакеттер оның ішінен өтуге мәжбүр болғанша. Маршрут іздеуін және туннель арқылы бір нақты сұрауды орындап, содан кейін ояну сәтінің айналасындағы журналды оқыңыз.

Егер клиент өздігінен қайта келсе, ілгек сенімділіктің орнына артық әбігер қосады. Егер ол ешқашан қалпына келмесе, автоматтандыру — адал шешім.

systemd ұйқы ілгегі шын мәнінде қайда тұрады

Көптеген ескі нұсқаулықтар /etc/pm/sleep.d көрсетеді, бұл pm-utils-ке тиесілі қалта және оны systemd негізіндегі ұйқы ешқашан сұрамайды. systemd ілгектерді /usr/lib/systemd/system-sleep/ және /etc/systemd/system-sleep/ ішінен оқып, алдымен фазаны, содан кейін операцияны береді, сондықтан pre және post ілгек тармақталатын жалғыз мәндер. Жергілікті көшірмені /etc астында ұстаңыз, пакеттелген файлды өңдеудің орнына, және скрипт ауысудың ортасында root ретінде жұмыс істейтінін есте сақтаңыз, сондықтан ол тез қайтуы керек.

#!/bin/sh
case "$1" in
  post)
    systemctl --no-block try-restart [email protected]
    ;;
esac
exit 0

try-restart бірлікке тек ол әлдеқашан белсенді болғанда ғана тиеді, сондықтан әдейі өшірген туннеліңіз ояну бойы өшірулі күйінде қалады. --no-block ілгектің клиент келіссөз жүргізіп жатқанда күтуіне жол бермейді, бұл желі әлі көтерілмеген кезде маңызды. Екі жалауша бірге ояну тізбегін ұстап тұрудың орнына үнсіз сәтсіздікке ұшырайтын ілгекті білдіреді. Бірлік әлдеқашан тоқтатылған болса, мүлдем ештеңе болмайды, бұл дәл сол жерде қалаған нәтиже.

Қызметті қалпына келтіріңіз, tun0-ды жалғыз қалдырыңыз

tun0 қолмен түсіру демонды ол енді иеленбейтін интерфейсті қадағалап қалдырады, ал келесі күй өзгерісі шатастыратын қателер тудырады. Интерфейстің орнына қызметті немесе оның қосылым профилін нысаналаңыз; алдымен бірліктің нақты атауын тексеріңіз, өйткені дистрибутив пакеттері, OpenVPN 3 және NetworkManager әртүрлі таңдайды. NetworkManager профилі сол қосылым айналдырылғанда қайтады, сондықтан systemd бірлігі онда нысана емес. Механизм қандай болса да, ол қолмен тексерген сол әрекет болуы керек.

Қайта қосу клиент қосылғанда итерген маршруттарды қайта орнатады. Оянулардың көбісі осыны қалайды. Өз жолдарыңызды қосқан машина қаламайды, сондықтан қалпына келтіру оларды қайтарды деп болжаудың орнына оларды қайта тексеріңіз және келесі ояну таба алатын жерге жазып қойыңыз.

Өзіңіз басқара алмайтын уақытпен айналысыңыз

Сымсыз бірігу мен DHCP көбіне ілгек жұмыс істегеннен кейін аяқталады, сондықтан серверге жол әлі жоқ кезде қайта қосу сәтсіз болуы мүмкін. Сол мекенжайды сәл күтіңіз, тағы бір рет байқап көріңіз және нәтижені журналға жазыңыз.

Атауларды шешу — бөлек жарыс, өйткені жұмыс үстелінің желілік стекі DNS-ті туннель әлдеқашан көтерілгеннен кейін қалпына келтіруі мүмкін. Іздеулерді жұмыс істеп тұрған маршруттан шығарудың орнына resolvectl query internal.example көмегімен бөлек тексеріңіз. Дұрыс маршруттайтын және ештеңені шешпейтін туннель — DNS мәселесі, ілгек мәселесі емес.

Ілгектің шешімін журналға фазаны, бірліктің атауын және нәтижені жазу арқылы көрнекі ұстаңыз. Машина жазбаларында қандай ояну тестін іске қосқаныңызды жазып қойыңыз, осылайша жұмыс істейтін қалпына келтіруді сәтті болғаннан ажыратуға болады. Қызметті қайтаратын ең аз кедергі келтіретін әрекетті таңдаңыз және өздігінен қалпына келетін клиентке соны жасауға мүмкіндік беріңіз. Толық қайта қосу жүріп жатқан сессияларды тастайды, бұл күніне бірнеше рет оянатын ноутбукте нақты шығын.

Қатысты мақалалар