Bir Pi, iki OpenVPN nümunəsi: hər vahid nəyi oxuyur
Bir Pi-də iki OpenVPN demonu fərqli konfiqurasiya fayllarını oxuyur və fərqli qarmaqlardan çıxır. Hər nümunəni xəritələyin, sonra yük yolunu ayrıca yoxlayın.
Bir profilə toxunmazdan əvvəl OpenVPN proseslərini sayın. Dolaşan istifadəçiləri qəbul edən və eyni zamanda yuxarı axın xidmətinə qoşulan Pi iki demon işlədir və onların hər biri yazdığınız nümunə adı ilə seçilən konfiqurasiya faylını oxuyur. Sonra paketlənmiş şablonlar hər demona öz iş qovluğunu, öz işləmə vəziyyəti faylını və öz tunel cihazını verir. Bu bölgünü səhv etsəniz, axan prosesin heç vaxt açmadığı faylda düzgün parametri dəyişməklə bütün bir axşam keçirəcəksiniz.
Hər nümunə adı öz faylını seçir
OpenVPN 2.6 ilə gələn vahid fayllarında başlatma arqumentləri @ işarəsindən sonrakı mətndən doldurulan nümunə yer tutucusu daşıyır. Server şablonu server konfiqurasiya qovluğundan işləyir və arqumentini orada %i.conf ilə uyğunlaşdırır, müştəri şablonu isə eyni şeyi müştəri qovluğundan edir. Beləliklə, [email protected] oxuyur admits.conf faylını server qovluğunda və [email protected] oxuyur uplink.conf faylını müştəri qovluğunda, və adların heç biri digər qovluqda məna daşımır.
Xəritələməni paketin yuxarı axın standartlarını saxladığını fərz etmək əvəzinə maşının özündə təsdiqləyin. Distributiv əlavəsi iş qovluğunu və ya konfiqurasiya arqumentini tamamilə əvəz edə bilər.
systemctl cat [email protected]
systemctl cat [email protected]Çıxışda WorkingDirectory sətrini və konfiqurasiya arqumentini oxuyun, çünki hansı faylın yükləndiyini yalnız aktiv vahid müəyyən edir. --config arqumentini ExecStart-ə əlavə edən əlavə şablon yolunun düzgün göründüyü halda belə şablonu üstələyir. Yerli ləğvetmənin işə düşüb-düşmədiyini bilmək istədikdə fraqment və əlavə yollarını soruşun. Əgər hər iki rol bir fayla çevrilirsə, onda həm server, həm də müştəri olmağa çalışan bir prosesiniz var və həmin fayldakı sonuncu seçim səssizcə qalib gəlir.
Yerli nəqliyyat və ötürülən yük fərqli qarmaqlara düşür
Serverin hər dolaşan istifadəçiyə şifrələnmiş bağlantısı Pi-nin özündə yaradılır, ona görə də onun xarici cavabları yerli çıxış qarmağından çıxır. Müştərinin yuxarı axın həmyaşıdına bağlantısı da yerli yaradılmış çıxışdır, baxmayaraq ki, uzaq şəbəkəyə çatır. Ötürülən yük üçüncü kateqoriyadır və nüvə onu yalnız paket üçün artıq çıxış cihazı seçdikdən sonra uyğunlaşdırır.
| Flow | Hook that sees it | What to inspect |
|---|---|---|
| Roaming user handshakes to the server | Local input and local output | Listener socket, bind address, rule admitting the UDP port |
| User payload leaving through the upstream tunnel | Forward | IPv4 forwarding switch, selected route, permission rule, any translation |
| Pi's own connection to the upstream peer | Local output | Underlay route to the provider endpoint, not the tunnel route |
Ötürmə zəncirinin içində çıxış interfeysini uyğunlaşdıran qayda, marşrutlaşdırmanın artıq həmin interfeysə təyin etdiyi paketə icazə verə və ya onu ata bilər, lakin heç vaxt interfeysi seçmir. Bir host bir tuneli bitirib digərini başladanda, istifadəçi yükünü yuxarı axın tunelinə göndərən siyasət və Pi-nin öz şifrələnmiş cavablarını qoruyan siyasət ayrı qərarlardır. Onlar təsadüfən eyni fiziki şəbəkə kartına düşür, buna görə də qarışdırılır.
Bu fərq adi bir yarım uğursuzluğu izah edir. İstifadəçilər qoşulur, əl sıxma tamamlanır, lakin onların trafiki yenə də səhv yolla çıxır, çünki əl sıxma yerli, yük isə ötürülən idi və ikisindən yalnız biri sınaqdan keçirilmişdi.
İdxal edilmiş marşrut istifadəçilərinizə cavabları uda bilər
Müştəri profilinin təhlükəsizlik parametri yuxarı axının Pi-nin marşrut cədvəlinə nəyi itələyə biləcəyini müəyyən edir və geniş yönləndirmə işləyən iki rollu hostu pozulmuş hosta çevirən seçimdir. Əgər itələnmiş marşrut dolaşan istifadəçilərin ictimai ünvanlarını əhatə edirsə, serverin onlara yaratdığı cavablar alt qatdan çıxmaq əvəzinə yeni marşrutla yuxarı axın tunelinə gedə bilər. İnsanlar çox vaxt provayderə tunelin hələ işlədiyini təsdiqləyib orada dayanırlar, çünki bu trafik tunelin öz nəqliyyatıdır və hər şey səhv işləyərkən axmağa davam edir.
Mənbə və ya işarə əsaslı siyasət iki axını ayrı saxlayır. OpenVPN-in Linux işarə seçimi demonun öz şifrələnmiş paketlərini firewall işarəsi ilə nişanlayır, sonra marşrut qaydası onları ayrı cədvələ göndərə bilər. Mənbə ünvanları da serverin xarici cavabları həmişə bir alt qat ünvanından çıxanda eyni dərəcədə yaxşı işləyir. Hər iki yanaşma seçdiyi cədvəldə etibarlı marşrutlara və provayderin son nöqtəsi üçün istisnaya ehtiyac duyur, əks halda tunelin özü qalxmağı dayandırır.
Hər hansı qayda yazmazdan əvvəl nüvədən cavabın həqiqətən gedəcəyi yolu soruşun. Aşağıdakı ünvanlar Pi-nin alt qat ünvanı və bir dolaşan istifadəçinin ictimai ünvanı üçün yer tutuculardır.
ip rule show
ip route get 198.51.100.7 from 192.0.2.10Bölgünü yoxlayın, sonra rolları bir-bir dayandırın
Üç axını ayrıca sınayın, çünki işləyən əl sıxma digər ikisi haqqında heç nə sübut etmir. Yeni daxil olan bağlantını qəbul edin, icazə verilmiş bir tətbiqi yuxarı axın çıxışından göndərin və hər iki prosesin hələ də öz həmyaşıdlarına çatdığını təsdiqləyin.
Sonra müştəri rolunu dayandırın və server rolunun nə saxladığına baxın. Bu, bir nümunə üçün nəzərdə tutulub hər ikisinə tətbiq edilmiş marşrut və ya işarə qaydasını tapmağın ən ucuz yoludur.
systemctl stop [email protected]
systemctl status [email protected] --no-pager
ss -lunp | grep openvpn
journalctl -u [email protected] -n 20 --no-pagerGörmək istədiyiniz şey dinləyicinin hələ də bağlı olması, tunel cihazının hələ də mövcud olması və müştəri rolu söndürülmüş halda jurnalın yeni xətalardan azad olmasıdır. Əgər müştərini dayandırmaq serverin mövcud istifadəçilərə cavablarını da kəsirsə, iki rol biri ilə məhdudlaşdırılmalı olan bir şeyi paylaşır. Hər dəyişikliyin hansı nümunəyə, hansı konfiqurasiya faylına və hansı axın sahibinə toxunduğunu qeyd edin, çünki bu hostu sazlayacaq növbəti şəxs əks halda eyni kəşfi sıfırdan təkrarlayacaq.