Shtoni një rresht për të mbajtur rrugën tuaj të paracaktuar lokale, dhe pas kësaj tuneli nuk arrin më serverin DNS të brendshëm. Rreshti ishte pull-filter ignore "route", që nuk do të thotë "injoro këtë rrugë". Do të thotë "hidh çdo opsion të shtyrë teksti i të cilit fillon me ato pesë shkronja", dhe në një server normal kjo përfshin route-gateway, route-metric dhe route-ipv6 së bashku me vetë rrugët. Lista e kontrollit më poshtë është ajo që kaloj përpara se të prek një profil që duhet të përdorë dikush tjetër.

Filtri zbatohet vetëm për opsionet e shtyra

pull-filter vepron vetëm mbi rreshtat e opsioneve që serveri dërgon pasi tuneli është vendosur, dhe mbi asgjë tjetër. Opsionet e shkruara në skedarin tuaj lokal nuk ndikohen prej tij, as trafiku i aplikacioneve. Nëse shpresonit të pengonit një proces të përdorte tunelin, ky është mjeti krejt i gabuar dhe asnjë kombinim filtrash nuk do ta bëjë atë.

Ky shtrirje është i dobishëm, sepse do të thotë që mund ta lini konfigurimin e serverit të qetë dhe gjithsesi të refuzoni një pjesë të tij lokalisht. Është gjithashtu një kufizim që ia vlen të shënohet në tiketë: një filtër ndryshon atë që pranon ky klient, jo atë që ofron serveri. Nuk ka asnjë efekt mbi përdoruesit e tjerë të të njëjtit profil. As nuk mbijeton kur kalon në një klient tjetër që nuk e zbaton opsionin, gjë që ia vlen të dihet përpara se të ndërtoni një rrjedhë pune mbi të.

Konfirmoni çfarë dërgon në të vërtetë serveri përpara se të shkruani modelin. Në nivele të larta të detajeve klienti shtyp vargun e opsioneve të shtyra që ka marrë, dhe ky është burimi i vetëm i ndershëm për tekstin e saktë me të cilin po krahasoni:

sudo openvpn --config /etc/openvpn/corp.ovpn --verb 4
sudo grep -n 'pull-filter' /etc/openvpn/corp.ovpn

Lexojeni rreshtin e shtyrë si një listë opsionesh të ndara me presje, dhe vini re se emrat e opsioneve dhe argumentet e tyre ndahen me hapësira. Teksti i filtrit tuaj krahasohet me atë rrjedhë, prandaj hapësirat kanë kaq rëndësi në hapin tjetër.

Përputhja është një parashtesë, prandaj hapësirat vendosin gjithçka

Krahasimi është një parashtesë vargu, jo emër opsioni i analizuar. Prandaj "route" përputhet me route-gateway 10.8.0.1, route-ipv6 2001:db8::/32 dhe route-metric 100. Një hapësirë në fund e ngushton në familjen që ndoshta kishit ndërmend, dhe parashtesa e plotë e ngushton edhe më shumë në një destinacion specifik.

Filter textWhat it actually matchesTypical outcome
"route"Every option beginning with those lettersRoutes, gateway, metric and IPv6 routes all dropped
"route "Route entries only, not the hyphenated siblingsThe routes go, the rest survives
"route 10.60."A single destination rangeThe narrowest rule, and the easiest to audit
"dhcp-option DNS"Pushed DNS settingsResolver stays local, internal names stop resolving

Rreshti i fundit është ai që i kap njerëzit gjatë punës me tunel të ndarë. Mbajtja e resolverit tuaj është një zgjedhje legjitime, dhe do të thotë që çdo emër i brendshëm tani varet nga një resolver që nuk e sheh zonën private. Kjo është një pasojë që pranohet me qëllim, jo një efekt anësor që zbulohet në prodhim.

Përputhja me parashtesë do të thotë gjithashtu që një rregull mund të zgjerohet më vonë në heshtje. Kur serveri shton një opsion të ri që fillon me tekstin tuaj, filtri juaj fillon të zbatohet për të pa redaktuar askush profilin tuaj. Ky është mënyra e dështimit kundër së cilës duhet projektuar, dhe zbutja është të përputhni sa më shumë të opsionit, jo sa më pak.

Tre folje me tre rezultate të ndryshme

accept, ignore dhe reject nuk janë tre shkrime të së njëjtës ide. Ato ndryshojnë në atë që klienti bën me një përputhje dhe nëse dikush e merr vesh.

ignore e hedh opsionin që përputhet në heshtje, që është ajo që doni për një cilësim që e keni zëvendësuar qëllimisht. reject e hedh dhe e bën klientin të ankohet, që është ajo që doni kur mungesa e tij duhet të duket në një regjistër në vend që të zbulohet më vonë. accept është forma pozitive, e përdorur kur ndërtoni një listë lejimesh sesa kur hiqni opsione individuale.

Çfarëdo folje që përdorni, filtrat zbatohen sipas rendit në të cilin shfaqen, kështu që dy rregulla që mbivendosen japin një rezultat që varet nga rendi dhe shumë i vështirë për t'u rishikuar. Mbani një rregull për një qëllim dhe vendosni tekstin më të veçantë në secilin. Nëse ju duhet një listë lejimesh, parapëlqeni disa rregulla accept mbi një grumbull rregullash ignore që mblidhen në të njëjtën gjë. Atëherë rishikuesit mund ta lexojnë skedarin nga lart poshtë dhe të parashikojnë rezultatin, dhe ky është testi i vetëm që shkallëzohet.

Verifikoni rrugën dhe resolverin e aplikuar, jo profilin

Një filtër që duket i saktë në skedar mund t'ju lërë gjithsesi me një tunel që nuk drejton asgjë të dobishme. Verifikoni efektin në sistemin në punë, ku opsionet e shtyra janë aplikuar ose hedhur tashmë:

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/

Dy rreshtat e parë ju thonë nëse rruga e paracaktuar e shtyrë ka mbërritur dhe sa zëra statikë mbijetuan. Pyetja te resolveri tregon cilin server përdor në të vërtetë ndërfaqja e tunelit, dhe zakonisht aty shfaqet një surprizë DNS. Rreshti i fundit i përgjigjet pyetjes së vetme që ka rëndësi për një përdorues.

Provoni të dy drejtimet ndërsa jeni atje. Një rregull që e mban internetin tuaj lokal në punë por prish në heshtje zgjidhjen e emrave të brendshëm kalon një kontroll sipërfaqësor dhe dështon në detyrën e parë reale, prandaj përfshini një burim të brendshëm dhe një sajt publik në të njëjtin test.

Regjistroni përjashtimin dhe kush e zotëron

Një filtër është një përjashtim nga dizajni i operatorit, prandaj shkruajeni me një arsye dhe një pikë rishikimi. "Injoron rrugët e shtyra për të mbajtur parazgjedhjen lokale" është i rishikueshëm; një rresht i zhveshur në një profil nuk është, dhe personi tjetër do ta fshijë ose do ta zgjerojë me hamendje.

Edhe versioni ka rëndësi këtu. Sjellja e përputhjes dhe sintaksa e saktë e pranuar janë rafinuar gjatë OpenVPN 2.4, 2.5 dhe 2.6, prandaj konfirmoni modelin me manualin e ndërtimit që shpërndani dhe jo me një postim forumi për një version më të vjetër. Manuali i OpenVPN 2.6 dokumenton opsionin dhe rregullin e tij të përputhjes.

Së fundmi, dakordoni përjashtimin me atë që drejton serverin. Një filtër nga ana e klientit që kundërshton një politikë të qëllimshme të serverit është një incident mbështetjeje që pret auditimin e radhës, dhe është shumë më lirë ta zgjidhësh para se profili të dërgohet sesa pasi dikush vëren se mungojnë rrugët.

Artikuj të ngjashëm