Ang pull-filter ng OpenVPN ay tumutugma sa higit pa sa rutang sinadya mo
Inihahambing ng pull-filter ang teksto mo bilang prefix sa mga itinutulak na opsyon, kaya nahuhuli rin ng route ang route-gateway at route-ipv6. Suriin ang mga pandiwa, pagkatapos ang mga ruta.
Naglalagay ka ng isang linya upang mapanatili ang iyong lokal na default na ruta, at pagkatapos ay hindi na naaabot ng tunnel ang panloob na DNS server. Ang linya ay pull-filter ignore "route", na hindi nangangahulugang "balewalain ang rutang ito". Nangangahulugan itong "itapon ang bawat itinulak na opsyon na ang teksto ay nagsisimula sa limang titik na iyon", at sa isang normal na server kasama rito ang route-gateway, route-metric at route-ipv6 kasama ang mga ruta mismo. Ang checklist sa ibaba ay ang tinatakbo ko bago hawakan ang isang profile na kailangang gamitin ng ibang tao.
Naaangkop lamang ang filter sa mga itinulak na opsyon
pull-filter ay gumagana lamang sa mga linyang opsyon na ipinapadala ng server pagkatapos maitatag ang tunnel, at wala nang iba pa. Ang mga opsyon na nakasulat sa iyong lokal na file ay hindi apektado nito, gayundin ang trapiko ng mga aplikasyon. Kung inaasahan mong pigilan ang isang proseso sa paggamit ng tunnel, ito ang ganap na maling tool at walang kumbinasyon ng mga filter ang gagawa nito.
Kapaki-pakinabang ang saklaw na iyon, dahil nangangahulugan itong maaari mong iwanan ang konfigurasyon ng server at tanggihan pa rin ang isang bahagi nito nang lokal. Ito rin ay isang limitasyon na dapat itala sa ticket: binabago ng filter ang tinatanggap ng kliyenteng ito, hindi ang iniaalok ng server. Wala itong epekto sa ibang gumagamit ng parehong profile. Hindi rin ito nananatili kapag lumipat sa ibang kliyente na hindi nagpapatupad ng opsyon, na dapat malaman bago ka magtayo ng daloy ng trabaho dito.
Kumpirmahin kung ano talaga ang ipinapadala ng server bago isulat ang pattern. Sa mataas na detalye ipinapalimbag ng kliyente ang natanggap na string ng itinulak na mga opsyon, at iyon ang tanging tapat na pinagmulan ng eksaktong teksto na inihahambing mo:
sudo openvpn --config /etc/openvpn/corp.ovpn --verb 4
sudo grep -n 'pull-filter' /etc/openvpn/corp.ovpn
Basahin ang itinulak na linya bilang listahan ng mga opsyon na pinaghihiwalay ng kuwit, at pansinin na ang mga pangalan ng opsyon at ang mga argumento nito ay pinaghihiwalay ng puwang. Inihahambing ang teksto ng iyong filter sa daloy na iyon, kaya napakahalaga ng mga puwang sa susunod na hakbang.
Ang pagtutugma ay isang prefix, kaya ang mga puwang ang nagpapasya sa lahat
Ang paghahambing ay isang prefix ng string, hindi isang sinuri na pangalan ng opsyon. Kaya tumutugma ang "route" sa route-gateway 10.8.0.1, route-ipv6 2001:db8::/32 at route-metric 100. Ang isang puwang sa dulo ay nagpapaliit nito sa pamilyang malamang na ibig mong sabihin, at ang buong prefix ay lalo pang nagpapaliit nito sa isang partikular na destinasyon.
| 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 |
Ang huling hilera ang humuhuli sa mga tao habang nagtatrabaho sa hatian na tunnel. Ang panatilihin ang sarili mong resolver ay isang lehitimong pagpili, at nangangahulugan itong ang bawat panloob na pangalan ay umaasa na ngayon sa isang resolver na hindi nakikita ang pribadong sona. Iyon ay isang kahihinatnan na sinasadya mong tinatanggap, hindi isang side effect na natuklasan sa produksyon.
Ang pagtutugma sa prefix ay nangangahulugan ding ang isang tuntunin ay maaaring tahimik na lumawak mamaya. Kapag nagdagdag ang server ng bagong opsyon na nagsisimula sa iyong teksto, nagsisimulang magamit ang iyong filter doon nang walang nag-e-edit ng iyong profile. Iyon ang failure mode na dapat idisenyo laban, at ang pagpapagaan ay itugma ang pinakamaraming bahagi ng opsyon, hindi ang pinakakaunti.
Tatlong pandiwa, tatlong magkaibang resulta
accept, ignore at reject ay hindi tatlong baybay ng isang ideya. Nagkakaiba sila sa ginagawa ng kliyente sa isang pagtutugma at sa kung may makakaalam.
ignore ay tahimik na itinatapon ang tumutugmang opsyon, na siyang gusto mo para sa isang setting na sadyang pinalitan mo. reject ay itinatapon ito at pinapangusap ang kliyente, na siyang gusto mo kapag ang kawalan nito ay dapat makita sa log kaysa matuklasan mamaya. accept ay ang positibong anyo, ginagamit kapag bumubuo ka ng listahan ng pinapayagan kaysa nag-aalis ng indibidwal na mga opsyon.
Anuman ang pandiwang gamitin mo, ang mga filter ay inilalapat sa pagkakasunod-sunod ng paglitaw, kaya ang dalawang magkapatong na tuntunin ay nagbibigay ng resulta na nakadepende sa pagkakasunod-sunod at napakahirap suriin. Panatilihin ang isang tuntunin bawat layunin at ilagay ang pinakatiyak na teksto sa bawat isa. Kung kailangan mo ng listahan ng pinapayagan, piliin ang kaunting tuntunin na accept kaysa sa isang bunton ng tuntunin na ignore na umaabot sa pareho. Pagkatapos ay mababasa ng mga tagasuri ang file mula sa itaas hanggang sa ibaba at mahuhulaan ang resulta, at iyon ang tanging pagsubok na nagsa-scale.
Suriin ang inilapat na ruta at resolver, hindi ang profile
Ang filter na mukhang tama sa file ay maaari ka pa ring iwanan sa isang tunnel na walang kapaki-pakinabang na ruta. I-verify ang epekto sa tumatakbong sistema, kung saan naipatupad o naitapon na ang mga itinulak na opsyon:
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/
Sinasabi ng unang dalawang linya kung dumating ba ang itinulak na default na ruta at ilang static na entry ang natira. Ipinapakita ng query sa resolver kung aling server ang aktwal na ginagamit ng interface ng tunnel, at doon karaniwang lumilitaw ang sorpresa sa DNS. Ang huling linya ay sumasagot sa tanging tanong na mahalaga sa isang gumagamit.
Subukan ang dalawang direksyon habang nariyan ka. Ang tuntuning nagpapanatili sa iyong lokal na internet na gumagana ngunit tahimik na sumisira sa panloob na paglutas ng pangalan ay pumasa sa mababaw na pagsusuri at nabigo sa unang tunay na gawain, kaya isama ang isang panloob na mapagkukunan at isang pampublikong site sa parehong pagsubok.
Itala ang eksepsyon at kung sino ang may-ari nito
Ang filter ay isang eksepsyon sa disenyo ng operator, kaya isulat ito nang may dahilan at punto ng pagsusuri. "Binabalewala ang itinulak na ruta upang mapanatili ang lokal na default" ay nasusuri; ang hubad na linya sa isang profile ay hindi, at ito ay buburahin o palalawakin ng susunod na tao sa pamamagitan ng hula.
Mahalaga rin dito ang bersyon. Ang pag-uugali ng pagtutugma at ang eksaktong tinatanggap na sintaks ay pinino sa OpenVPN 2.4, 2.5 at 2.6, kaya kumpirmahin ang pattern sa manwal ng build na ipinapadala mo at hindi sa post sa forum tungkol sa lumang release. Ang manwal ng OpenVPN 2.6 ay nagdodokumento ng opsyon at ng tuntunin nito sa pagtutugma.
Sa huli, pagkasunduan ang eksepsyon sa kung sino ang nagpapatakbo ng server. Ang filter sa panig ng kliyente na sumasalungat sa sadyang patakaran ng server ay isang insidente sa suporta na naghihintay sa susunod na audit, at mas mura itong ayusin bago ipadala ang profile kaysa pagkatapos mapansin ng isang tao na kulang ang mga ruta.