Тіркелгіге негізделген маршруттау бір Linux пайдаланушысына тиесілі әрбір IPv4 сокеті бар туннель арқылы шығуы керек болғанда қолайлы, ал бағдарлама деңгейінде оқшаулау қажет болғанда қолайлы емес. Ол UID бойынша таңдайды, сондықтан сол тіркелгімен жұмыс істейтіннің бәрі ауқымға кіреді, ұмытып кеткен топтама жұмысы да. Бір ip rule-ке қол тигізбес бұрын осы мәселені шешіңіз.

Төмендегі мысал UID 1500-дегі арнайы браузер тіркелгісін, 10.80.0.11 жергілікті мекенжайын ұстайтын tun-office туннель құрылғысын және аталған межелерге рұқсат беретін VPN-ді болжайды. Демонның өзі сол UID-ден тыс жұмыс істейді.

Механизмді таңдайтын үш шарт

UID ережесін жұмысты атқаратын сәйкестік тіркелгі болғанда, оның барлық трафигін жылжыту қолайлы болғанда және namespace тапсырмаға лайық деңгейден ауыр болса таңдаңыз. Желілік namespace-ті жұмыс жүктемесіне өз интерфейстері, шешушісі және маршруттау кестесі қажет болғанда таңдаңыз. Проксиді немесе әр процеске байлауды дәл бір қолданбаны жылжыту керек болғанда, сессияның қалғаны жергілікті жолда қалғанда таңдаңыз. Осы үшеуін жазып қою ойлағаннан көбірек жасырын қамтитын ережені болдырмайды.

Болдырмау керек қате — іске қосқыш иесін анықтайды деп ойлау. Басқа пайдаланушының сессиясы URL берген браузер UID 1500 астында сокеттер жасамаған, және ешбір ереже оның жасаған трафигін жылжытпайды.

Кесте, ереже және күзетші

Бар ережелерді тексеріп, пайдаланылмаған кесте мен басымдық нөмірлерін таңдағаннан кейін құрылым қысқа: туннельдің бастау мекенжайын таситын арнайы кестедегі әдепкі маршрут, тіркелгінің іздеулерін сол кестеге жіберетін ереже және қосалқы жолды бөгейтін аяқтаушы ереже. Жазып көрсетсек, бұл идемпотентті маршрутты ауыстыру, ip -4 route replace default dev tun-office src 10.80.0.11 table 51820, одан кейін ip -4 rule add priority 12100 uidrange 1500-1500 lookup 51820.

Күзетші — ip -4 rule add priority 12101 uidrange 1500-1500 unreachable, және ол ұзындығы тұспалдағаннан маңыздырақ. Онсыз 51820 кестесіндегі жетіспейтін маршрут әдеттегі жоғарғы арнаға түседі де, тіркелгі саясат ұстауға тиіс трафикті үнсіз ағызады. Онымен сол ақау күту уақытына айналады, яғни қосалқы жол емес, бөгеу.

Қалыпты жергілікті мекенжай ережесін осылардың алдында ұстаңыз және LAN немесе басқару ерекшеліктері таңдалған кестенің алдында ма, соны саналы түрде шешіңіз. Сол жерден табылған әдепкі кейін нақтырақ LAN маршруты үшін main-ке сұрамайды, бұл ең ұзын префикстің сәйкестігі кестелер арасында қолданылады деп күтетіндерді таңғалдырады. Көзделген ерекшеліктер тізімін өзгеріс жазбасына, дәлел әлі жаңа кезде жазыңыз.

UID маршруттауы нені қалдырады: DNS

Шешуші демон өзінің жоғарғы сокеттерін өз UID-і астында ашады, сондықтан 1500-ді таңдау бұл сұрауларды 51820 кестесіне жылжытпайды. DNS интеграциясы жеке шешім: тіркелгіні туннель арқылы қолжетімді шешушіге бағыттаңыз немесе атауларды шешу хост жолын ұстанады, ал трафик ұстанбайды деп қабылдаңыз.

Жергілікті stub-қа loopback сұрауы жоғарғы сұраудың браузер маршрутын пайдаланғанына дәлел емес, кэштен сәтті бет жүктеу де дәлел емес.

IPv6 дизайнда өз сөйлемін қажет етеді

Жоғарыдағы ережелер тек IPv4-ті қамтиды. Егер талап осы тіркелгіден тікелей IPv6-сыз IPv4 туннель болса, қаралған аяқтаушы ереже қосыңыз, мысалы ip -6 rule add priority 12101 uidrange 1500-1500 unreachable, сосын бұрынғы IPv6 ережелерін және сақтағыңыз келетін loopback ерекшеліктерін тексеріңіз.

Тікелей IPv6-ны бөгеу қос қабатты туннельдеу емес; бұл шекара. Оны туннельдеу деп атау саясатты оқитын келесі адамды шатастырады, ал шатасу бұзылған IPv6 сайты туралы қолдау билеті ретінде шығады.

Нақты тіркелгімен тексеріңіз, сосын өмірлік циклді өз қолыңызға алыңыз

Іздеулерді салыстырыңыз: ip -4 route get 198.51.100.25 uid 1500 сол межеге қарапайым UID-мен. Сосын арнайы тіркелгі астында рұқсат етілген сұраныс жасап, алыс жақ көретін бастау мекенжайын тексеріңіз. Таңдаулы бастау мекенжайы source NAT емес, және ол басқа нәрсені байлайтын қолданбаны жеңбейді. Егер екі іздеу де бірдей жолды қайтарса, ереже сіз ойлағанды істемейді.

Кестені, ережелерді және туннель маршрутының ғұмырын бір иешінің қолында ұстаңыз, қайта қосылу мен туннель жоғалтуды сынаңыз, ал саясаттан шығарғанда тек оның нақты жазбаларын жойыңыз. Бөлек интерфейстер мен бөлек күй шынымен қажет болса, namespace әлі де қолжетімді.

Қатысты мақалалар