Server, yoxsa müştəri: ikili rollu Pi-də hansı OpenVPN vahidi
İki OpenVPN nüsxəsi bir Pi-ni paylaşır: biri gəzən istifadəçiləri qəbul edir, digəri yuxarı axına qoşulur. Hər hansı birini yenidən başlatmadan əvvəl vahidin adını və qovluğunu oxuyun.
Bir Pi-də həm gəzən istifadəçiləri qəbul edən, həm də yuxarı axın provayderinə çatan iki OpenVPN prosesi işləyir və onlar avadanlıqdan başqa demək olar ki, heç nə paylaşmır. Biri daxil olan tunelləri dinləyir, digəri isə xaricə qoşulur. Hər biri öz qovluğunu oxuyur və hər birinin öz uğursuzluq rejimi var. Səhv olanı yenidən başlatmaq «müştəri düzəlişi»nin dinləyicini yerindən etməsi ilə bitməsinin ən geniş yayılmış yoludur.
Vahidin adını yüklədiyi qovluqla uyğunlaşdırın
Upstream 2.6 iki şablon vahidi təqdim edir: [email protected] və [email protected]. Server şablonu /etc/openvpn/server qovluğunda başlayır və %i.conf faylını oradan yükləyir. Müştəri şablonu /etc/openvpn/client qovluğunda başlayır. roaming adlı nüsxə hər iki yerdə eyni vaxtda mövcud ola bilər — həm server, həm müştəri kimi, bir-biri ilə əlaqəsi olmayan iki konfiqurasiya ilə və aralarında yalnız sətirdən başqa heç bir əlaqə olmadan.
Fayl sistemindən deyil, systemd-dən soruşun, çünki paketçilər iş qovluğunu və ya ikili faylın aldığı arqumentləri dəyişə bilən əlavə fayllar qoyur.
systemctl list-units --type=service 'openvpn-*@*' systemctl cat [email protected] systemctl show -p WorkingDirectory -p ExecStart [email protected]
Birinci əmr hər işə salınmış vahidi, o cümlədən uğursuz olub yüklənmiş qalanları sadalayır. İkinci əmr vahid faylını hər hansı ləğvetmə ilə birlikdə çap edir. Üçüncü əmr isə sualı həll edən iki faktı görməyin ən sürətli yoludur: prosesin başladığı qovluq və ona verilən konfiqurasiya yolu.
Paket istiqamətinə görə qərar verin, interfeys adına görə deyil
Server nüsxəsinin dinləmə soketi var və bağlantıları qəbul edir. Onun şifrələnmiş nəqli Pi-də yerli giriş və yerli çıxışdır, istifadəçilər üçün yönləndirdiyi trafik isə yönləndirmə yolunu izləyir və fərqli qaydalar toplusuna tabedir. Müştəri nüsxəsinin bu mənada dinləyicisi yoxdur: o, bir həmyaşıdına qoşulur, ona görə şifrələnmiş nəqli alt qata doğru yerli çıxışdır.
Bu fərq qaydanın hara aid olduğunu sizə deyir. Yönləndirmə zəncirindəki interfeysə uyğun gələn qayda yalnız marşrutlaşdırmanın artıq seçdiyi trafikə icazə verir; heç vaxt marşrutu özü seçmir. Gəzən istifadəçinin paketləri səhv yolla çıxdıqda, yoxlanmalı zəncir output deyil, forward zənciridir.
Nəzəriyyə qurmazdan əvvəl soketlərə baxın. udp/1194 ünvanına bağlanmış server dinləmə soketi göstərir. Müştəri isə provayderin ünvanına assosiasiya göstərir və heç bir dinləyən yoxdur.
ss -lunp | grep openvpn ss -unp state established '( dport = :1194 or sport = :1194 )'
Bir nüsxənin standart marşrutu digərinin cavablarını ələ keçirə bilər
Yuxarı axın müştərisinin göndərdiyi redirect-gateway, qutudakı hər şeylə, o cümlədən serverin gəzən istifadəçilərə göndərdiyi cavablarla rəqabət edən standart marşrut quraşdırır. OpenVPN tunelin əlçatan qalması üçün öz həmyaşıd ünvanı üçün istisna yaradır, lakin bu istisna otel şəbəkəsində oturan telefon haqqında heç nə demir.
Simptom adətən asimmetrik olur. Handshake tamamlanır, müştəri qoşulduğunu bildirir və trafik ilk cavab paketindən sonra ölür. Mənbə əsaslı siyasət marşrutlaşdırması və ya server nüsxəsində --mark ilə qoyulan paket işarəsi iki axını ayrı saxlayır; heç biri tək başına tam qaydalar toplusu deyil və hər ikisi seçdikləri cədvəldə etibarlı marşrutlara ehtiyac duyur.
Tunelin vəziyyətini deyil, yerli qərarı yoxlayın, çünki nüvə mənbəni və interfeysi OpenVPN paketi görməzdən əvvəl seçir.
ip route get 203.0.113.44 ip rule show
Bir rolu yenidən başladın və digərinin sağ qaldığını sübut edin
Hər iki rol eyni alt qatdan asılı olduqda sıra vacibdir. İstifadəçi trafiki yönləndirilə bilməzdən əvvəl yuxarı axın marşrutu mövcud olmalıdırsa, əvvəlcə müştərini yenidən başladın; yalnız dinləyicisini və ya hovuzunu dəyişirsinizsə, əvvəlcə serveri yenidən başladın. Hər halda sonra hər iki vahidi təsdiqləyin, çünki uğursuz yenidən başlatma digər rolu köhnəlmiş vəziyyətlə işlək saxlaya bilər.
Dəyişiklikdən əvvəl dayanma şərtini yazın: yuxarı axın tunelinin itirilməsi gəzən istifadəçiləri bloklayır, yoxsa Pi-nin öz yuxarı kanalına qayıdır? DNS və IPv6 da aydın cavab tələb edir, çünki göndərilən resolver çox vaxt onu faydalı edən marşrutdan daha uzun yaşayır.
systemctl restart [email protected] systemctl is-active [email protected] journalctl -u [email protected] -n 20 --no-pager
Dəyişikliyi yalnız üç şey eyni vaxtda doğru olduqda qəbul edin: yeni daxil olan bağlantı tamamlanır, yönləndirilmiş tətbiq nəzərdə tutulan çıxışdan öz təyinatına çatır və hər iki proses hələ də gözlənilən həmyaşıdını bildirir. Üçündən biri uğursuz olarsa, səhv nüsxəni və ya səhv marşrutu dəyişmisiniz və növbəti addım başqa bir şeyi yenidən başlatmaq deyil, vahidi yenidən oxumaqdır.