OpenVPN pull-filter gözlədiyiniz marşrutdan daha çoxunu tutur
pull-filter mətninizi itələnmiş seçimlərə prefiks kimi müqayisə edir, ona görə route route-gateway və route-ipv6-nı da tutur. Əvvəlcə fellərə, sonra marşrutlara baxın.
Lokal defolt marşrutunuzu saxlamaq üçün bir sətir əlavə edirsiniz və bundan sonra tunel daxili DNS serverinə çatmır. Sətir pull-filter ignore "route" idi, bu isə "bu marşruta məhəl qoyma" demək deyil. O, "mətni həmin beş hərflə başlayan hər bir itələnmiş seçimi at" deməkdir və adi serverdə buna marşrutların özü ilə yanaşı route-gateway, route-metric və route-ipv6 də daxildir. Aşağıdakı yoxlama siyahısı başqasının istifadə etməli olduğu profilə toxunmazdan əvvəl yoxladığım siyahıdır.
Filtr yalnız itələnmiş seçimlərə tətbiq olunur
pull-filter yalnız tunel qurulduqdan sonra serverin göndərdiyi seçim sətirlərinə təsir edir, başqa heç nəyə yox. Lokal faylınızda yazılmış seçimlər bundan təsirlənmir, tətbiq trafiki də. Əgər hansısa prosesin tuneldən istifadəsini dayandırmağı gözləyirdinizsə, bu tamamilə yanlış alətdir və heç bir filtr kombinasiyası bunu etməyəcək.
Bu əhatə dairəsi faydalıdır, çünki serverin konfiqurasiyasına toxunmadan onun bir hissəsini lokal olaraq rədd edə bilərsiniz. Bu həm də biletdə qeyd etməyə dəyər bir məhdudiyyətdir: filtr bu müştərinin nəyi qəbul etdiyini dəyişir, serverin nə təklif etdiyini yox. Eyni profilin digər istifadəçilərinə heç bir təsiri yoxdur. O, bu seçimi tətbiq etməyən başqa müştəriyə keçəndə də qalmır, bunu onun üzərində iş axını qurmazdan əvvəl bilməyə dəyər.
Nümunəni yazmazdan əvvəl serverin həqiqətən nə göndərdiyini təsdiqləyin. Yüksək ətraflılıq səviyyəsində müştəri aldığı itələnmiş seçim sətrini çap edir və bu, uyğunlaşdırdığınız dəqiq mətn üçün yeganə dürüst mənbədir:
sudo openvpn --config /etc/openvpn/corp.ovpn --verb 4
sudo grep -n 'pull-filter' /etc/openvpn/corp.ovpn
İtələnmiş sətri vergüllə ayrılmış seçimlər siyahısı kimi oxuyun və seçim adları ilə arqumentlərinin boşluqla ayrıldığına diqqət yetirin. Filtr mətniniz həmin axınla müqayisə olunur, buna görə də növbəti addımda boşluqlar bu qədər vacibdir.
Uyğunlaşma prefiksdir, ona görə boşluqlar bütün oyundur
Müqayisə sətri prefiksdir, təhlil edilmiş seçim adı deyil. Buna görə "route" route-gateway 10.8.0.1, route-ipv6 2001:db8::/32 və route-metric 100 ilə uyğunlaşır. Sonda bir boşluq əlavə etmək onu çox güman nəzərdə tutduğunuz ailəyə daraldır, tam prefiksi əlavə etmək isə konkret təyinatadək daraldır.
| Filter text | What it actually matches | Typical outcome |
|---|---|---|
"route" | Every option beginning with those letters | Routes, gateway, metric and IPv6 routes all dropped |
"route " | Route entries only, not the hyphenated siblings | The routes go, the rest survives |
"route 10.60." | A single destination range | The narrowest rule, and the easiest to audit |
"dhcp-option DNS" | Pushed DNS settings | Resolver stays local, internal names stop resolving |
Sonuncu sətir split-tunel işi zamanı insanları tutan sətirdir. Öz resolverinizi saxlamaq qanuni seçimdir və bu, hər daxili adın artıq şəxsi zonanı görməyən bir resolverdən asılı olması deməkdir. Bu, istehsalda kəşf ediləcək yan təsir deyil, qəsdən qəbul ediləcək nəticədir.
Prefiks uyğunlaşması həm də o deməkdir ki, qayda sonradan səssizcə genişlənə bilər. Server mətninizlə başlayan yeni seçim əlavə etdikdə, filtriniz heç kim profilinizi redaktə etmədən ona tətbiq olunmağa başlayır. Bu, dizayn etməli olduğunuz nasazlıq rejimidir və yumşaltma yolu seçimin mümkün qədər çoxunu uyğunlaşdırmaqdır, mümkün qədər azını yox.
Üç fərqli nəticə verən üç fel
accept, ignore və reject eyni fikrin üç yazılışı deyil. Onlar müştərinin uyğunluqla nə etdiyinə və bunu kiminsə öyrənib-öyrənməyəcəyinə görə fərqlənir.
ignore uyğun seçimi səssizcə atır, qəsdən əvəz etdiyiniz parametr üçün istədiyiniz budur. reject onu atır və müştərini şikayət etdirir, bunun olmaması sonradan kəşf edilmək əvəzinə logda görünməli olduqda istədiyiniz budur. accept müsbət formadır, ayrı-ayrı seçimləri silmək əvəzinə icazə siyahısı qurduqda istifadə olunur.
Hansı feli istifadə etsəniz də, filtrlər göründükləri sıra ilə tətbiq olunur, buna görə iki üst-üstə düşən qayda sıradan asılı və yoxlanması çox çətin nəticə verir. Hər niyyət üçün bir qayda saxlayın və hər birinə ən konkret mətni qoyun. İcazə siyahısı lazımdırsa, eyni nəticəni verən bir yığın ignore qaydası əvəzinə az sayda accept qaydasına üstünlük verin. Onda rəyçilər faylı yuxarıdan aşağı oxuyub nəticəni proqnozlaşdıra bilər və miqyaslanan yeganə test budur.
Tətbiq olunan marşrutu və resolveri yoxlayın, profili yox
Faylda düzgün görünən filtr sizi yenə də faydalı heç nə yönləndirməyən tunellə qoya bilər. İtələnmiş seçimlərin artıq tətbiq və ya rədd edildiyi işləyən sistemdə təsiri yoxlayın:
ip route show default
ip route show | grep -c 'proto static'
resolvectl status | grep -A4 'Link.*tun0'
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://intranet.example.internal/
İlk iki sətir sizə itələnmiş defolt marşrutun gəlib çatdığını və neçə statik qeydin qaldığını deyir. Resolver sorğusu tunel interfeysinin həqiqətən hansı serverdən istifadə etdiyini göstərir, DNS sürprizi adətən burada ortaya çıxır. Son sətir isə istifadəçi üçün vacib olan yeganə suala cavab verir.
Orada olarkən hər iki istiqaməti sınayın. Lokal internetinizi işlək saxlayan, lakin daxili ad həllini səssizcə pozan qayda səthi yoxlamadan keçir və ilk real tapşırıqda uğursuz olur, ona görə eyni testə bir daxili resurs və bir açıq sayt daxil edin.
İstisnanı və onun sahibini qeyd edin
Filtr operatorun dizaynına istisnadır, ona görə onu səbəb və yoxlama nöqtəsi ilə birlikdə yazın. "Lokal defoltu saxlamaq üçün itələnmiş marşrutlara məhəl qoymur" yoxlanıla biləndir; profildəki çılpaq sətir isə deyil və növbəti şəxs onu siləcək və ya təxminlə genişləndirəcək.
Versiya burada da vacibdir. Uyğunlaşma davranışı və dəqiq qəbul edilən sintaksis OpenVPN 2.4, 2.5 və 2.6 boyunca təkmilləşdirilib, ona görə nümunəni köhnə versiya haqqında forum yazısına deyil, göndərdiyiniz buraxılışın təlimatına uyğun təsdiqləyin. OpenVPN 2.6 təlimatı seçimi və onun uyğunlaşma qaydasını sənədləşdirir.
Nəhayət, istisnanı serveri idarə edən şəxslə razılaşdırın. Qəsdən qoyulmuş server siyasətinə zidd olan müştəri tərəfli filtr növbəti auditə qədər gözləyən dəstək hadisəsidir və onu profil göndərilməzdən əvvəl həll etmək, kimsə marşrutların itdiyini fərq etdikdən sonra həll etməkdən qat-qat ucuzdur.