Үй тармагынын VPN'ине ноутбук ошол тармакта отурганда эч нерсе кылууга болбойт. Кызыктырган кыска жол — нөлдөн башка код менен чыгуучу даярдоо буйругу; ал unit'ти ийгиликсиз кылат жана ар бир панелди бузулгандай көрсөтөт. systemd'де дал ушундай чечим түрү үчүн директива бар жана ал атайылап өткөрүп жиберүүнү чыныгы бузулуудан ажыратат. Аны туура кылуу — негизинен ар бир чыгуу коддун эмнени билдирерин жазып коюу.

Эмне үчүн ийгиликсиз шарт туура эмес форма

ExecStartPre нөлдөн башка чыгууну иштетүү катасы катары карайт, бул кызматты даярдаган буйрук үчүн туура. Аны шарт катары колдонуу саясий чечимди бузулган көз карандылыктан ажыратууга мүмкүндүк бербейт. ExecCondition unit'ке ийгиликсиз деп белгиленбей эле иштетүүдөн баш тартууга мүмкүн болушу үчүн бар.

Бул айырма түнкү саат үчтө маанилүү, анткени эч ким долбоорго ылайык иштеген кызыл unit'ти талдоону каалабайт. Ийгиликсиз unit атайылап жасалган ийгиликсиздиктердин арасында чыныгы бузулууларды да жашырат.

Алгач чыгуу коддорунун келишими жазыңыз

Келишимди скрипттен мурун жазыңыз. Нөл чыгуу — улантуу, бир чыгуу — калган иштетүү буйруктарын өткөрүп жиберүү, ал эми 255 чыгуу — шарттын өзү иштей албаганы. Эки менен 254 ортосундагы коддор да адатта өткөрүп жиберүүнү билдирет, муну жардамчы кокустан ката коду кайтарганда унутуу оңой. Төмөнкү drop-in жардамчыны unit'тин чыныгы атына байланыштырат.

[Service]
ExecCondition=/usr/local/libexec/should-start-home-vpn

Демейки семантиканы болжолдоодон мурун эффективдүү unit'ти мурасталган SuccessExitStatus же stop-post жөндөөлөрү боюнча текшериңиз. Андан кийин үч натыйжанын ар бирин атайылап текшериңиз.

Тармак белгиси жайгашуунун далили эмес

Жеткиликтүү маршрутизатор дареги же белгилүү MAC туура тармакты көрсөтүшү мүмкүн жана алардын экөө тең аны далилдебейт. Башка тармак ошол эле даректи кайра колдонушу мүмкүн, ARP маалыматтары эскирген болушу мүмкүн жана идентификаторлорду окшоштурууга болот. Текшерүүнү саясатка ылайыктуу оптималдаштыруу катары караңыз, аутентификация натыйжасы катары эмес.

Белгисиздиктин эмнени билдирерин алдын ала чечиңиз. Күмөн болгондо VPN'ди иштетүү жөн гана туташа албаган кардар үчүн коопсуз; күмөн болгондо аны өткөрүп жиберүү коопсуз эмес. Текшерүүнү чектелүү кылыңыз жана тизмедеги биринчини болжолдоонун ордуна активдүү интерфейсти окуңуз. Илинип калган текшерүү «жок» деп жооп бергенден жаман, анткени unit аны күтөт.

Бул божомолдорду unit файлынын жанына жазып коюңуз, кийинки адам жардамчы эмнеге ишенерин билсин. Скрипттин башындагы комментарий аларды сактоонун эң арзан жери.

Тармактар арасындагы өтүүнү башкарыңыз

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

systemctl cat home-vpn.service

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

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