OpenVPN route-nopull сервердің нені жіберуіне шын мәнінде кедергі келтіреді
route-nopull жіберілген маршруттар мен DHCP опцияларын тастайды, қол алысуды емес. Оның, pull-filter немесе ештеңенің арасынан таңдап, маршруттарды өзіңіз қосыңыз.
Сіз туннель әдепкі маршрутыңызды жұтып қоймас үшін клиент профиліне route-nopull қойдыңыз, енді кеңсе ішкі желісіне қол жеткізу мүмкін емес, ал клиент әлі де қосылғанын айтады. Екі байқау да рас, ештеңе істен шыққан жоқ. Жалауша клиентке сервер жіберетін маршруттар мен DHCP жазбаларын өткізіп жіберуді айтады, бұл көпшілік күтетіннен тар нұсқау. Қалғаны — қай бағыттар оны пайдалануы керек деген пікірсіз жұмыс істейтін туннель.
Осы олқылық — бұл мақала сөз ететін бүкіл шешім. Не сервер желіні сипаттайды, не клиент, ал жалауша бұл жұмысты сіз үшін ештеңе жасамай клиентке тапсырады.
Қосылу кезінде жалауша нені өшіреді
Тартатын OpenVPN клиенті әдетте аутентификациядан кейін серверден бума алады: маршруттар, әдепкі шлюзді қайта бағыттау, DNS серверлері және бірнеше реттеу директивалары. route-nopull күшінде болғанда клиент сессияны әлі қабылдайды, сертификаттарды әлі тексереді, шифрлар мен keepalive туралы әлі келіседі және интерфейсті әлі көтереді. Ол тастайтыны — жіберілген route жолдарының және жіберілген dhcp-option жолдарының қолданылуы, DNS қоса.
Шатасуды өлі қолданбаның жанындағы жасыл индикатор тудырады. Туннель бар; бағыттарды сол туннельге сәйкестендіру жоқ. Клиенттің күй панелінде «қосылған және маршруттайтын» күйді «қосылған және әрекетсіз» күйден ажырататын ештеңе жоқ, өйткені туннель тұрғысынан екеуі бір күй.
Неге тірі туннель ештеңені маршруттай алмайды
Интерфейс өз адресімен пайда болады, ал нүкте-нүкте байланысында көбіне серіктеске дейінгі хост маршрутынан нақтырақ ештеңе болмайды. Жеке ішкі желі тек қандай да бір маршрут дұрыс префикспен сол интерфейске сілтегенде ғана қолжетімді болады, ал жіберу өшірулі болса ол маршрут ешқашан келмейді. Жүктелген профиль де әдетте көмектесе алмайды, өйткені ол сервер дәл осы ақпаратты береді деп жазылған. Сондықтан интерфейс сау көрінгенімен ішкі желі қараңғы күйінде қалады.
Сондықтан профильді оқу азды дәлелдейді. Оның орнына қосылған машинадағы жұмыс күйін оқыңыз:
ip addr show tun0
ip route show dev tun0
ip route get 10.20.5.10
Екінші командада ішкі желі маршруты жоқ адрес осы мәселенің қолтаңбасы. Үшінші команда пайдаланушыларды шын мәнде қызықтыратын сұраққа жауап береді, өйткені ол қолданылады деп күткен тізімді емес, нақты бағыт үшін ядро таңдайтын интерфейсті хабарлайды. Егер ол физикалық байланысыңыз арқылы жауап берсе, туннель жолда мүлде жоқ.
Атауды шешу байланысты себеппен сәтсіз болады, жеке себеппен емес. Жіберілген dhcp-option DNS жазбалары сол жалаушамен өткізіліп жіберіледі, сондықтан ішкі хосттар туралы сұраулар жергілікті желі берген шешушіге барады. Ол шешушіде кеңсе үшін аймақ жоқ, сондықтан сұрау сәтсіз болады немесе жария жауап қайтарады, ал ақау сервер мәселесіндей көрінеді, шын мәнінде клиент конфигурациясының мәселесі. Атаудан бұрын адресті тексеру — екеуін ажырататын нәрсе.
Жалауша мен префикс сүзгісінің арасында таңдау
Екі опция бір шағымның әртүрлі нысандарын шешеді, ал нашар таңдау «қосылған, бірақ пайдасыз» күйді тудырады. Біреуі жіберілген саясатты толық алмастырады, екіншісі оны префикс бойынша өңдейді. Кесте қысқа нұсқаны береді, ал одан кейінгі абзац адамдарды таңқалдыратын бөлігін қамтиды.
| Setting | What the client keeps | Reasonable when |
|---|---|---|
| no option | every pushed route and DHCP entry | the server's view of the network is correct |
route-nopull | the session, none of the pushed routing or DNS | you will write the full local policy yourself |
pull-filter | everything except lines matching your prefixes | the push is nearly right and one or two lines are wrong |
pull-filter үш етістігі бар префикс сәйкестендіргіші, сондықтан ол жолдар тобын қабылдай алады, оларды үнсіз елемейді немесе префикс пайда болғанда қосылымды мүлде қабылдамайды. Дәл соңғы әрекетті білу керек: бас тарту ережесі саяси келіспеушілікті үнсіз қалдырудың орнына сәтсіз қол алысуға айналдырады. OpenVPN 2.6 нұсқаулығы қабылданатын префикстерді және әр етістіктің нақты мағынасын тізімдейді.
Кең тараған орта жол — тек redirect-gateway-ны қабылдамау және кеңсе маршруттары мен DNS-тің ниет бойынша келуіне жол беру. Бұл жіберуді сервер сізден жақсы түсінетін бөліктер үшін жұмыс істейтін күйде ұстайды және бір уақытта әдепкі маршрутыңызды иемденетін сол бір жолды болдырмайды.
Маршруттар мен шешушіні қолмен қосу
Жалаушаны қалдырсаңыз, профиль сервер айтатын нәрсені айтуы керек. Клиент жағындағы route директивалары қосылым орнатылғаннан кейін қолданылады, сондықтан олар жалаушамен бірге жұмыс істейді, ол оларды блоктамайды. Оларды профильге қойыңыз, интерактивті пәрмен жолына емес, әйтпесе келесі қайта қосылу жұмыс күйін қайта шығармайды.
route-nopull
route 10.20.0.0 255.255.0.0
dhcp-option DNS 10.20.0.53
DNS жолы ыңғайсыз орында: бұл клиент жағындағы директива, бірақ кейбір клиенттер оны тек платформаның DNS интеграциясы арқылы қолданады, ол байланыс өзгергенде оның үстінен жазуы мүмкін. systemd хостында шешушіні туннель интерфейсіне тікелей қою клиенттің басымдық жарысында жеңетінін күтуден гөрі болжамдырақ:
resolvectl dns tun0 10.20.0.53
resolvectl domain tun0 ~corp.example.com
Маршруттау домені адрес сияқты маңызды. Онсыз жария атаулар туралы сұраулар ішкі шешушіге де жіберілуі мүмкін, ал рекурсиядан бас тартатын кез келген ішкі шешуші жеке аймақты жұмыс істеп тұрған күйде шолуды бұзады. Онымен тек сол жұрнақ астындағы атаулар туннель шешушісіне бағытталады, қалғаны физикалық байланысты ұстанады.
Нәтижені тексеру: адрес, атау және сыртқы жол
Үш тест мүмкін ақауларды ажыратады. Алдымен IP бойынша жеке адресті алыңыз, содан кейін сол хостты атауы бойынша, содан кейін қарапайым жария сайтты алыңыз. Жұмыс істейтін IP сәтсіз атаумен шешушіге нұсқайды; сәтсіз IP жұмыс істейтін атаумен маршруттауға нұсқайды; екеуі де сәтсіз болса, әдетте туннель жолда емес.
Содан кейін ішке емес, сыртқа қараңыз. Туннельдің соңғы нүктесінің өз маршруты өзгеріске төтеп беруі керек, ал кез келген бөгеу ақауы соңғы нүктені ұстамай туннельмен шектелуі керек. Туннель құлағаннан кейін де шолуды жалғастыратын клиент — маршруттау емес, саясат мәселесі, және ол жоғарыдағы үш тесттің ешқайсысында көрінбейді.
Соңғы тізімді профиль құжаттамасына жазыңыз: маршруттар, шешуші, домендер және әрқайсысының болу себебі. Сол кестені қайта шығаратын қайта қосылу — жергілікті саясаттың толықтығының жалғыз дәлелі. Егер туннель көтеріліп, үш тест түгел өткенде де қолданбалар сәтсіз болса, келесі қарайтын жер — бұрын тексерілген сертификаттар емес, «қосылған, бірақ офлайн» мәселелерінің класы.