OpenVPN-нің pull-filter-і көздеген маршруттан көбірекке сәйкес келеді
pull-filter мәтініңізді префикс ретінде жіберілген опциялармен салыстырады, сондықтан route route-gateway мен route-ipv6-ны да ұстайды. Алдымен етістіктерді, содан кейін маршруттарды тексеріңіз.
Сіз жергілікті әдепкі маршрутыңызды сақтау үшін бір жол қосасыз, содан кейін туннель ішкі DNS серверіне жетпейді. Бұл жол pull-filter ignore "route" болды, бұл "бұл маршрутты елеме" дегенді білдірмейді. Ол "мәтіні осы бес әріптен басталатын әрбір жіберілген опцияны таста" дегенді білдіреді, ал қарапайым серверде бұған маршруттардың өзімен қатар route-gateway, route-metric және route-ipv6 кіреді. Төмендегі тексеру тізімі — мен басқа біреу пайдалануы тиіс профильге қол тигізбес бұрын өткізетін тізім.
Сүзгі тек жіберілген опцияларға әсер етеді
pull-filter тек туннель орнатылғаннан кейін сервер жіберетін опция жолдарына әсер етеді, басқа ештеңеге емес. Жергілікті файлыңызда жазылған опциялар одан әсер алмайды, қолданба қозғалысы да. Егер қандай да бір процестің туннельді пайдалануына жол бермеуді күтсеңіз, бұл мүлдем дұрыс емес құрал және сүзгілердің ешбір тіркесімі мұны істемейді.
Бұл ауқым пайдалы, өйткені сервер конфигурациясын тыныш қалдырып, оның бір бөлігін жергілікті түрде қабылдамауға болады. Бұл билетке жазуға тұрарлық шектеу де: сүзгі бұл клиенттің нені қабылдайтынын өзгертеді, сервердің нені ұсынатынын емес. Ол сол профильдің басқа пайдаланушыларына әсер етпейді. Опцияны іске асырмайтын басқа клиентке ауысқанда да сақталмайды, мұны оның үстіне жұмыс ағынын құрмас бұрын білген жөн.
Үлгіні жазбас бұрын сервердің шын мәнінде не жіберетінін растаңыз. Жоғары егжей-тегжейде клиент алған жіберілген опциялар жолын басып шығарады, және бұл сіз салыстыратын нақты мәтіннің жалғыз адал көзі:
sudo openvpn --config /etc/openvpn/corp.ovpn --verb 4
sudo grep -n 'pull-filter' /etc/openvpn/corp.ovpn
Жіберілген жолды үтірмен бөлінген опциялар тізімі ретінде оқыңыз және опция атаулары мен олардың аргументтері бос орынмен бөлінетінін ескеріңіз. Сүзгі мәтініңіз сол ағынмен салыстырылады, сондықтан келесі қадамда бос орындар соншалықты маңызды.
Сәйкестік префикс, сондықтан бос орындар бәрін шешеді
Салыстыру жол префиксі, талданған опция атауы емес. Сондықтан "route" route-gateway 10.8.0.1, route-ipv6 2001:db8::/32 және route-metric 100-ге сәйкес келеді. Соңына бір бос орын қосу оны болжамды тұқымдасқа тарылтады, ал толық префикс оны нақты мақсатқа дейін тағы тарылтады.
| 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 |
Соңғы жол — бөлінген туннель жұмысында адамдарды ұстайтын жол. Өз шешушіңізді сақтау заңды таңдау, және бұл әрбір ішкі атау енді жеке аймақты көре алмайтын шешушіге тәуелді екенін білдіреді. Бұл өндірісте табылатын жанама әсер емес, әдейі қабылданатын салдар.
Префикс бойынша сәйкестендіру сонымен қатар ереженің кейін тыныш кеңеюі мүмкін екенін білдіреді. Сервер сіздің мәтініңізбен басталатын жаңа опция қосқанда, сүзгіңіз ешкім профиліңізді өңдемей-ақ оған қолданыла бастайды. Бұл — қарсы жобалау қажет сәтсіздік режимі, ал жұмсарту опцияның мүмкіндігінше көп бөлігін сәйкестендіру, мүмкіндігінше азын емес.
Үш етістік, үш түрлі нәтиже
accept, ignore және reject бір идеяның үш жазылымы емес. Олар клиенттің сәйкестікпен не істейтініне және біреу бұны біле ме, білмей ме — осыған қарай ерекшеленеді.
ignore сәйкес опцияны тыныш тастайды, бұл әдейі ауыстырған параметр үшін керек. reject оны тастайды және клиентті шағымдануға мәжбүр етеді, бұл оның жоқтығы кейін табылғанша журналда көрінуі керек кезде керек. accept оң форма, жеке опцияларды алып тастаудың орнына рұқсат тізімін құрғанда қолданылады.
Қай етістікті қолдансаңыз да, сүзгілер өз пайда болу тәртібімен қолданылады, сондықтан екі қабаттасатын ереже тәртіпке тәуелді нәтиже береді, оны қарап шығу өте қиын. Әр ниетке бір ереже ұстап, әрқайсысына ең нақты мәтінді қойыңыз. Рұқсат тізімі керек болса, сол нәтижені беретін ignore ережелер үйіндісінен гөрі аздаған accept ережені таңдаңыз. Сонда шолушылар файлды жоғарыдан төменге оқып, нәтижені болжай алады, және бұл — ауқымдалатын жалғыз тест.
Қолданылған маршрут пен шешушіні тексеріңіз, профильді емес
Файлда дұрыс көрінетін сүзгі де сізді пайдалы ештеңе маршруттамайтын туннельмен қалдыруы мүмкін. Жіберілген опциялар қазірдің өзінде қолданылған немесе тасталған жұмыс істеп тұрған жүйеде әсерін тексеріңіз:
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/
Алғашқы екі жол сізге жіберілген әдепкі маршрут келді ме және қанша статикалық жазба аман қалғанын айтады. Шешушіге сұраныс туннель интерфейсі іс жүзінде қай серверді пайдаланатынын көрсетеді, әдетте DNS тосынсыйы сонда шығады. Соңғы жол пайдаланушы үшін маңызды жалғыз сұраққа жауап береді.
Сонда жүргенде екі бағытты да тексеріңіз. Жергілікті интернетті жұмысқа қабілетті ұстап, бірақ ішкі атау шешімін тыныш бұзатын ереже үстіртін тексеруден өтеді және бірінші нақты тапсырмада сәтсіздікке ұшырайды, сондықтан сол бір тестке бір ішкі ресурс пен бір ашық сайтты қосыңыз.
Ерекшелікті және оның иесін жазып қойыңыз
Сүзгі оператордың жобалауынан ерекшелік, сондықтан оны себебімен және қарау нүктесімен жазып қойыңыз. "Жергілікті әдепкіні сақтау үшін жіберілген маршруттарды елемейді" қарауға жарамды; профильдегі жалаң жол — жарамсыз, және келесі адам оны жояды немесе болжаммен кеңейтеді.
Нұсқа мұнда да маңызды. Сәйкестендіру мінез-құлқы мен нақты қабылданатын синтаксис OpenVPN 2.4, 2.5 және 2.6 бойы жетілдірілген, сондықтан үлгіні өзіңіз жеткізетін құрылымның нұсқаулығымен растаңыз, ескі нұсқа туралы форум жазбасымен емес. OpenVPN 2.6 нұсқаулығы осы опцияны және оның сәйкестендіру ережесін құжаттайды.
Соңында, ерекшелікті серверді басқаратын адаммен келісіңіз. Әдейі сервер саясатына қайшы келетін клиент жағындағы сүзгі — келесі аудитті күтіп тұрған қолдау оқиғасы, және оны профиль жіберілмей тұрып шешу, біреу маршруттардың жоқтығын байқағаннан кейін шешуден әлдеқайда арзан.