OpenVPN pull-filter atbilst vairāk nekā paredzētajam maršrutam
pull-filter salīdzina jūsu tekstu kā prefiksu ar piespiestajām opcijām, tāpēc route pārtver arī route-gateway un route-ipv6. Vispirms pārbaudiet darbības vārdus, pēc tam maršrutus.
Jūs pievienojat vienu rindu, lai saglabātu vietējo noklusējuma maršrutu, un pēc tam tunelis vairs nesasniedz iekšējo DNS serveri. Šī rinda bija pull-filter ignore "route", kas nenozīmē "ignorē šo maršrutu". Tas nozīmē "izmet katru piespiesto opciju, kuras teksts sākas ar šiem pieciem burtiem", un parastā serverī tas ietver route-gateway, route-metric un route-ipv6 kopā ar pašiem maršrutiem. Zemāk esošais kontrolsaraksts ir tas, ko es izskatu pirms pieskaros profilam, kas jāizmanto kādam citam.
Filtrs attiecas tikai uz piespiestajām opcijām
pull-filter iedarbojas tikai uz tām opciju rindām, ko serveris sūta pēc tuneļa izveides, un ne uz ko citu. Jūsu vietējā failā rakstītās opcijas no tā neietekmējas, tāpat arī lietotņu trafiks. Ja cerējāt liegt procesam izmantot tuneli, šis ir pilnīgi nepareizais rīks, un neviena filtru kombinācija to nedarīs.
Šis tvērums ir noderīgs, jo nozīmē, ka varat atstāt servera konfigurāciju mierā un tomēr lokāli atteikt tās daļu. Tas ir arī ierobežojums, ko vērts ierakstīt biļetē: filtrs maina to, ko šis klients pieņem, nevis to, ko serveris piedāvā. Tam nav nekādas ietekmes uz citiem tā paša profila lietotājiem. Tas arī neiztur pāreju uz citu klientu, kas šo opciju neievieš, ko vērts zināt pirms darbplūsmas veidošanas uz tā.
Pirms rakstāt modeli, pārliecinieties, ko serveris patiešām sūta. Augstā detalizācijas līmenī klients izdrukā saņemto piespiesto opciju virkni, un tas ir vienīgais godīgais avots precīzajam tekstam, ar ko salīdzināt:
sudo openvpn --config /etc/openvpn/corp.ovpn --verb 4
sudo grep -n 'pull-filter' /etc/openvpn/corp.ovpn
Lasiet piespiesto rindu kā ar komatiem atdalītu opciju sarakstu un ņemiet vērā, ka opciju nosaukumi un to argumenti tiek atdalīti ar atstarpēm. Jūsu filtra teksts tiek salīdzināts ar šo plūsmu, tāpēc nākamajā solī atstarpēm ir tik liela nozīme.
Salīdzinājums ir prefikss, tāpēc atstarpes izšķir visu
Salīdzinājums ir virknes prefikss, nevis parsēts opcijas nosaukums. Tāpēc "route" atbilst route-gateway 10.8.0.1, route-ipv6 2001:db8::/32 un route-metric 100. Viena atstarpe beigās sašaurina to līdz saimei, ko, iespējams, domājāt, un pilns prefikss sašaurina vēl vairāk līdz konkrētam galamērķim.
| 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 |
Pēdējā rinda ir tā, kas ķer cilvēkus sadalītā tuneļa darbā. Savu resolveri paturēt ir likumīga izvēle, un tas nozīmē, ka katrs iekšējais nosaukums tagad ir atkarīgs no resolvera, kas neredz privāto zonu. Tās ir sekas, ko apzināti pieņem, nevis blakusefekts, ko atklāj ražošanā.
Prefiksa atbilstība nozīmē arī to, ka noteikums vēlāk var klusi paplašināties. Kad serveris pievieno jaunu opciju, kas sākas ar jūsu tekstu, jūsu filtrs sāk uz to attiekties bez tam, ka kāds rediģē jūsu profilu. Tas ir atteices režīms, pret kuru jāprojektē, un mīkstinājums ir saskaņot pēc iespējas lielāku opcijas daļu, nevis pēc iespējas mazāku.
Trīs darbības vārdi, trīs dažādi iznākumi
accept, ignore un reject nav trīs vienas idejas rakstības. Tie atšķiras ar to, ko klients dara ar atbilstību, un ar to, vai kāds to uzzina.
ignore klusi izmet atbilstošo opciju, ko vēlaties iestatījumam, kuru apzināti esat aizstājis. reject to izmet un liek klientam sūdzēties, ko vēlaties, kad tā neesamībai jābūt redzamai žurnālā, nevis jāatklāj vēlāk. accept ir pozitīvā forma, ko izmanto, veidojot atļauto sarakstu, nevis noņemot atsevišķas opcijas.
Lai kādu darbības vārdu izmantotu, filtri tiek lietoti tādā secībā, kādā tie parādās, tāpēc divi pārklājoši noteikumi dod no secības atkarīgu rezultātu, ko ir ļoti grūti pārskatīt. Turiet vienu noteikumu vienam nolūkam un katrā ievietojiet konkrētāko tekstu. Ja nepieciešams atļauto saraksts, labāk izvēlieties dažus accept noteikumus nekā kaudzi ignore noteikumu, kas summējas uz to pašu. Tad pārskatītāji var lasīt failu no augšas uz leju un paredzēt rezultātu, un tas ir vienīgais tests, kas mērogojas.
Pārbaudiet pielietoto maršrutu un resolveri, nevis profilu
Filtrs, kas failā izskatās pareizi, tomēr var atstāt jūs ar tuneli, kas neko lietderīgu nemaršrutē. Pārbaudiet ietekmi uz darbojošos sistēmu, kur piespiestās opcijas jau ir lietotas vai izmestas:
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/
Pirmās divas rindas parāda vai pienāca piespiestais noklusējuma maršruts un cik statisku ierakstu izdzīvoja. Resolvera vaicājums parāda, kuru serveri tuneļa saskarne faktiski izmanto, un parasti tieši tur parādās DNS pārsteigums. Pēdējā rinda atbild uz vienīgo jautājumu, kas svarīgs lietotājam.
Kamēr esat tur, pārbaudiet abus virzienus. Noteikums, kas uztur jūsu vietējo internetu darbīgu, bet klusi salauž iekšējo nosaukumu atrisināšanu, iztur virspusēju pārbaudi un neizdodas pirmajā īstajā uzdevumā, tāpēc iekļaujiet tajā pašā testā vienu iekšēju resursu un vienu publisku vietni.
Pierakstiet izņēmumu un tā īpašnieku
Filtrs ir operatora dizaina izņēmums, tāpēc pierakstiet to ar iemeslu un pārskatīšanas punktu. "Ignorē piespiestos maršrutus, lai saglabātu vietējo noklusējumu" ir pārskatāms; tukša rinda profilā nav, un nākamais cilvēks to izdzēsīs vai paplašinās minot.
Arī versijai šeit ir nozīme. Atbilstības uzvedība un precīzā pieņemtā sintakse tika pilnveidota OpenVPN 2.4, 2.5 un 2.6 laikā, tāpēc apstipriniet modeli pēc tās būves rokasgrāmatas, ko piegādājat, nevis pēc foruma ieraksta par vecāku versiju. OpenVPN 2.6 rokasgrāmata dokumentē šo opciju un tās atbilstības noteikumu.
Visbeidzot, vienojieties par izņēmumu ar to, kas pārvalda serveri. Klienta puses filtrs, kas ir pretrunā apzinātai servera politikai, ir atbalsta incidents, kas gaida nākamo auditu, un to ir daudz lētāk nokārtot pirms profila izsūtīšanas nekā pēc tam, kad kāds pamana, ka maršruti trūkst.