Бир эле образдан чыккан эки Ubuntu машинасы, бир VPN профили, кирүү учурунда карама-каршы натыйжа: биринде туннель иш тактасы көрүнө электе эле көтөрүлгөн, экинчисинде ал эч качан көтөрүлбөйт. Бул жерде профиль өзгөрмө эмес. Айырма — үч компоненттин кайсынысына аны баштоо буйругу берилгенинде, жана бул үчөө бир которгучту бөлүшпөйт.

Аларды катар салыштыруу божомолдогондон тезирээк. Ар бири тааныла турган түрдө ишке жарабайт, ошондуктан салыштыруунун мааниси бар.

Үч башка триггердүү үч баштоочу

Таңгакталган openvpn кызматы эң эски жол. Анын init скрипти /etc/default/openvpn файлынан автозапуск тизмесин окуйт. Эгер ал тизме комментарийленген же бош калтырылса, скрипт сиз кошкон жалгыз конфигурациянын ордуна ошол папкадагы бардык конфигурацияны баштайт. Бир туннель үчүн кошулган бир файл үнсүз түрдө бир нечени көтөрүшү мүмкүн.

StarterWhat triggers itTypical failure
Init script and templated unitsBoot, plus anything in the autostart listStarts every config, not the one you meant
NetworkManager secondaryActivation of the base Wi-Fi or Ethernet profileNothing happens until that base link comes up
Hand-written unit or wrapperWhatever its WantedBy and ExecStart sayRuns a different binary or environment than your shell

Адамдар туура эмес конфигурациялаган нерсе — экинчи сап. NetworkManager импорттолгон профилди кармайт жана аны баштайт, бирок башка туташуунун экинчи даражалуусу катары гана, башкача айтканда триггер VPNге эмес, тармактык байланышка таандык.

Орнотуу наркын жана камтууну салыштырыңыз

Init скриптинин жолу бир сапка турат жана машинадагы бардык конфигурацияны камтыйт. Бул маршрутизатор үчүн туура, ал эми ар кандай тармактарга туташкан ноутбук үчүн туура эмес. NetworkManager жолу UUID издөөгө турат жана туннелди бир негизги туташууга байлайт. Ал жумуштун SSIDинде көтөрүлөт, мейманкана тармагында төмөн бойдон калат.

Кол менен жазылган unit эң кымбат жана башка кызматтарга карата ирети менен кошо эң көп көзөмөл берет. Чечүүчү фактор — камтуу. Эгер машинада бир тармак жана бир туннель болсо, таңгакталган кызмат акыйкат жана болжолдуу. Эгер туннель белгилүү бир Wi-Fi тармагын ээрчишибиз керек болсо, экинчи даражалуу — үчөөнүн ичинен бул шартты кошумча скриптсиз билдирген жалгыз жол.

Бир ээсин тандап, калгандарын алып салыңыз

Эки ээси баштаган профиль жүктөөлөрдүн ортосунда өзгөрүүчү убакытты пайда кылат, бул кайсы бир механизмдин жалгыз абалынан начар. Ээсин тандаңыз, андан кийин атаандаш жолду кокустан эмес, атайын өчүрүңүз.

# who is configured to start something?
grep -v '^#' /etc/default/openvpn
systemctl list-units 'openvpn*'
nmcli -g connection.secondaries connection show 'Work Wi-Fi'

# NetworkManager: attach the tunnel to the base link by UUID
TUNNEL=$(nmcli -g UUID connection show 'Corp Tunnel')
nmcli connection modify 'Work Wi-Fi' +connection.secondaries "$TUNNEL"

Эгер токтотулуп жаткан жол таңгакталган жол болсо, туура иретте жасаңыз: AUTOSTART маанисин none кылып коюңуз, генерацияланган unit-тер жаңы тизмени алышы үчүн systemctl daemon-reload иштетиңиз, андан кийин мындан ары керек эмес шаблондук нусканы өчүрүңүз. Кайра жүктөөнү өткөрүп жиберүү эски unit-терди активдүү калтырат, ошондо өзгөртүү таасир этпегендей көрүнөт.

Илинип калган токтоо — чечими чектелүү өзүнчө маселе. TimeoutStopSec systemd SIGKILL жиберүүдөн мурун канча күтөрүн чектейт. Аны коюуга туура жер — drop-in файлы, анткени таңгакталган unit-ти оңдоо өзгөртүүнү кийинки жаңыртууда жоготот.

Чындыгында эмне башталганын текшериңиз

Кайра жүктөп, конфигурация файлына ишенүүнүн ордуна далилдерди окуңуз. Туннелге ээ болгон unit активдүү абалды жана жүктөөгө туура келген башталуу убактысынын белгисин көрсөтөт, VPN интерфейси сиз киргенге чейин эле болот.

systemctl is-enabled openvpn-client@office
systemctl status openvpn-client@office --no-pager
nmcli -f GENERAL.STATE,connection.secondaries connection show 'Work Wi-Fi'
ip -brief link show tun0

Бул жерде дагы бир текшерүү орундуу: unit-тин ExecStart сиз ойлогон бинарга шилтеме кыларына ынаныңыз. Жергиликтүү куралган клиент же snap таңгагы көбүнчө так жолду же snap run каптоосун талап кылат, анткени systemd сиздин кабыгыңыздын издөө тартибин мурастабайт. command -v openvpn менен unit файлын салыштыруу муну секунддарда чечет.

Тандалган ээсин машинанын жазууларына, профиль атынын жанына жазыңыз. Жоголгон туннелди оңдоого киришкен кийинки адам салыштырууну кайталабай, ошол саптан баштайт.

Тектеш макалалар