Noutbuk artıq həmin şəbəkədə oturduqda ev şəbəkəsi VPN-nin görəcək işi qalmır. Cəlbedici qısa yol sıfırdan fərqli çıxış edən hazırlıq əmridir; bu, unit-i uğursuz edir və hər idarə panelini pozulmuş göstərir. systemd məhz bu tipli qərar üçün direktivə malikdir və o, qəsdən keçməni real nasazlıqdan ayırır. Bunu düzgün etmək əsasən hər çıxış kodunun nə məna verdiyini yazmaqdan ibarətdir.

Uğursuz ön şərt niyə yanlış formadır

ExecStartPre sıfırdan fərqli çıxışı başlatma nasazlığı kimi qəbul edir və bu, xidməti hazırlayan əmr üçün doğrudur. Onu şərt kimi istifadə etmək siyasət qərarını pozulmuş asılılıqdan ayırd olunmaz edir. ExecCondition ona görə mövcuddur ki, unit uğursuz işarələnmədən başlamaqdan imtina edə bilsin.

Bu fərq gecə saat üçdə vacib olur, o vaxt heç kim dizaynına uyğun işləyən qırmızı unit-i araşdırmaq istəmir. Uğursuz unit həm də qəsdən olanların arasında real nasazlıqları gizlədir.

Əvvəlcə çıxış kodu müqaviləsini yazın

Müqaviləni skriptdən əvvəl yazın. Sıfır çıxışı davam deməkdir, bir çıxışı qalan başlatma əmrlərini keçmək deməkdir, 255 çıxışı isə şərtin özünün işləyə bilməməsi deməkdir. İki ilə 254 arasındakı kodlar da adətən keçmək deməkdir və köməkçi təsadüfi xəta kodu qaytardıqda bunu unutmaq asandır. Aşağıdakı drop-in köməkçini real unit adına bağlayır.

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

Susmaya görə semantikanı fərz etməzdən əvvəl effektiv unit-də miras qalan SuccessExitStatus və ya stop-post parametrlərini yoxlayın. Sonra üç nəticənin hər birini qəsdən sınayın.

Şəbəkə işarəsi yerin sübutu deyil

Əlçatan marşrutlaşdırıcı ünvanı və ya tanınan MAC düzgün şəbəkəni işarə edə bilər və heç biri bunu sübut etmir. Başqa şəbəkə eyni ünvanı təkrar istifadə edə bilər, ARP məlumatı köhnəlmiş ola bilər və identifikatorlar təqlid oluna bilər. Zondlamanı siyasətlə uyğun optimallaşdırma kimi qəbul edin, autentifikasiya nəticəsi kimi deyil.

Qeyri-müəyyənliyin nə demək olduğunu əvvəlcədən qərarlaşdırın. Şübhə olduqda VPN-i başlatmaq sadəcə qoşula bilməyəcək müştəri üçün təhlükəsizdir; şübhə olduqda onu keçmək isə təhlükəsiz deyil. Zondlamanı məhdudlaşdırın və siyahıda birinci göstərilən interfeysi fərz etmək yerinə aktiv interfeysi oxuyun. Asılıb qalan zondlama “yox” cavabı verəndən pisdir, çünki unit onu gözləyir.

Bu fərziyyələri unit faylının yanında qeyd edin ki, növbəti şəxs köməkçinin nəyə inandığını bilsin. Skriptin başındakı şərh onları saxlamaq üçün ən ucuz yerdir.

Şəbəkələr arasında keçidi idarə edin

Şərt xidmət başladıqda işləyir və sonradan yenidən qiymətləndirmir. Keçilmiş unit noutbuk kafeyə köçdükdən sonra da keçilmiş qalır, işləyən tunel isə noutbuk evə qayıtdıqdan sonra da açıq qalır. Şəbəkə dəyişikliyi dövrünü ayrı mexanizmlə başlama və dayandırma qərarına bağlayın.

systemctl cat home-vpn.service

Dörd halı sınayın: evdə başlatma, evdən kənarda başlatma, işləyə bilməyən zondlama və unit aktiv ikən şəbəkələr arasında keçid. Keçmə səbəbini jurnalda görünən saxlayın ki, qəsdən verilən qərar heç vaxt autentifikasiya uğursuzluğu kimi görünməsin. Xidmət sənədi çıxış semantikasını və minimum versiyanı sənədləşdirir.

Əlaqəli məqalələr