Бөлек шығу: usb0-дегі VPN пулы, eth0-дегі шлюз трафигі
Қайта бағытталған VPN клиенттері usb0 арқылы шыға алады, ал шлюз өзінің eth0 әдепкі маршрутын сақтайды. Толық таңдалған кестені құрыңыз, содан кейін ақаулықты ағызу емес, жабу етіп жасаңыз.
Клиенттер қосылып, аутентификациядан өтеді, содан кейін олардың трафигі қате жоғарғы арна арқылы шығады, өйткені құрылғыдағы жалғыз әдепкі маршрут шлюздің өзіне тиесілі. Сол әдепкі маршрутты ауыстыру құрылғының өз жаңартулары мен әкімшілік қатынасын бұзар еді, сондықтан таңдау «бүкіл трафиктен» тар болуы керек. Жұмыс істейтін пішін — клиент пулының ішкі бастау мекенжайына негізделген және балама WAN-ға ие екінші маршруттау кестесін көрсететін саясат ережесі. Одан әрі тексеру тізімі ереженің өзі туралы емес, толықтық пен ақаулық кезіндегі мінез-құлық туралы.
Бастау мекенжайы маршруттау шешіміне дейін сақталатынына көз жеткізіңіз
Бастау ауқымына сәйкес келетін саясат ережесі пакет іздеу сәтінде әлі сол бастауды алып жүргенде ғана іске қосылады. Қайта бағытталған клиент трафигі мұны жасайды, егер жоғарыда бірдеңе оны маршруттауға дейін қайта жазбаса. Шлюздің өзі жасайтын трафик мұны жасамайды, сондықтан шлюздің өз әдепкі маршруты өз орнында қала алады.
Міне, жергілікті тестілер осында шатастырады. Шлюзде іске қосылған curl — шлюздің мекенжайымен жергілікті жасалған ағын, сондықтан ол негізгі кестені алады және клиент жолы туралы ештеңе дәлелдемейді. Қосылған клиенттен тексеріңіз немесе пулға шынымен тиесілі бастаумен трафик жасаңыз.
Нақты мәндерді жазудан бастаңыз: пул префиксі, оны тасымалдайтын туннель интерфейсі, екінші WAN-ның мекенжайы мен келесі секірісі, және қолданғыңыз келетін кесте нөмірі. Жаңа ережелерді қоспас бұрын кез келген алдыңғы әрекеттің ескі ережелерін тазалаңыз, өйткені әртүрлі басымдықтардағы қайталанған ережелер кездейсоқ көрінетін ақаулықтар туғызады.
Толық таңдалған кестені құрыңыз
Кесте — досы бар әдепкі маршрут емес. Оған әр іздеу оның ішінде шешілетіндей жеткілікті маршрут керек, соның ішінде WAN ішкі желісінің қосылған маршруты, келесі секіріс қолжетімді болуы үшін. tun1-дегі 10.77.0.0/24 пулы, келесі секірісі 203.0.113.1 болатын 203.0.113.20/24 WAN мекенжайы және 600 кестесі үшін:
ip -4 route replace 203.0.113.0/24 dev usb0 src 203.0.113.20 table 600
ip -4 route replace 10.77.0.0/24 dev tun1 table 600
ip -4 route replace default via 203.0.113.1 dev usb0 table 600
ip -4 rule add priority 1500 from 10.77.0.0/24 lookup 600
Ереже кез келген қолданыстағы барлығын ұстайтын ережеден төмен басымдықта тұрады, сондықтан сәйкес келетін клиенттер алдымен 600 кестесіне тиеді, ал қалғаны негізгі кестеге түседі. ip-rule анықтамасы реттелген іздеу моделі мен селектор синтаксисін толық сипаттайды.
Содан кейін кестеде жоқ нәрсені ойлаңыз. Тек негізгі кестеде маршруты бар баратын жер, мысалы eth0 арқылы қолжетімді әкімшілік ішкі желі, 600 кестесінен табылмайды және онда әдепкі маршрут болған соң негізгіге қайтпайды. Егер бұл жолдар маңызды болса, оларды таңдалған кестеге анық қосыңыз, бұл VPN шығу кестесі үшін әдетте дұрыс жауап.
Тыңдаушының өз трафигін саясаттан тыс ұстаңыз
OpenVPN тыңдаушысының өз сыртқы байланысы бар, ол клиент оған жеткен жоғарғы арна арқылы тасымалданады. Бұл трафик келген қайту жолын сақтауы керек, ал сервердің жария мекенжайын немесе бүкіл туннель интерфейсін қамтитын кең ереже оны балама кестеге тартып кетуі мүмкін. Ережені ішкі пулмен шектеңіз, басқа ештеңемен емес.
Кері жол сүзгісі де сол себепті назар аударуға тұрарлық. Клиенттерге жауаптар usb0 арқылы шыққанда, сұраныс басқа байланыспен келсе, қатаң rp_filter параметрі маршруттау саясаты жарамды деп санайтын пакеттерді тастауы мүмкін. Ереже сәтсіз болды деп қорытынды жасамас бұрын екі интерфейстегі әрекеттегі sysctl мәндерін тексеріңіз.
Тәртіп құрылғыдағы қалғанның бәріне қатысты да маңызды. Docker көпірлері, екінші VPN және провайдер бейнесінен бұрыннан бар кез келген ережелер басымдықтарды қосады, сондықтан 100 басымдығы жалғыз деп болжамай, ережелердің толық тізімін оқыңыз.
Қайта жіберу мен аударманы маршрутпен үйлестіріңіз
Маршруттау жоғарғы арнаны таңдайды; ол қайта жіберуге рұқсат бермейді. Ядрода IPv4 қайта жіберу қосулы болуы керек, ал файрвол клиенттен WAN-ға бағытты және қайту трафигін қабылдауы керек. Ағынды тастайтын FORWARD тізбегі бар дұрыс кесте жоқ маршрут сияқты белгі береді, сондықтан екеуі бір өтуде тексеріледі.
Егер екінші WAN жеке пулды сізге қайта маршруттамаса, сол шығуда бастауды аударыңыз. Динамикалық мекенжайлы интерфейс үшін пулмен және интерфейспен шектелген тар masquerade ережесі әдеттегі таңдау:
iptables -t nat -A POSTROUTING -s 10.77.0.0/24 -o usb0 -j MASQUERADE
Мұнда қамту мақсаттан маңыздырақ. Кез келген шығыс интерфейсіне сәйкес келетін masquerade ережесі eth0 арқылы дұрыс шығатын трафикті де қайта жазады, ал бұл маршруттау қателерін түзетудің орнына жасырады. Аударма маршруттау шешімінен кейін орындалады, сондықтан қате жоғарғы арнаға жіберілген пакетті ешқашан түзете алмайды.
Жолдар әртүрлі болғанда туннель шығыны да назар аударуды талап етеді. Клиенттер үлкен TCP MSS-ке келіссе және балама WAN-ның MTU-ы төмен болса немесе ішінде туннель болса, үлкен сегменттер тоқтайды, кішілері жұмыс істейді. Қайта жіберу жолында MSS-ті қысу мұны мезгіл-мезгіл қатып қалудың орнына болжамды мінез-құлыққа айналдырады.
usb0 жоғалғанда не болатынын шешіңіз
Бос кесте — ақаулық кезінде жабылатын күй емес. Сәйкес маршрут жоғалса, іздеу келесі ережеге жалғасады, негізгі кестеге жетеді және eth0 әдепкісін алады. Екінші WAN арқылы шығуы керек болған трафик біріншісі арқылы үнсіз шығады, ал саясатпен маршрутталған орналастыруда бұл әдетте ең аз қалайтын нәтиже.
Бұл кері шегіну қабылдауға болмайтын жерде 600 кестесіне айқын терминалдық маршрут қосыңыз, мысалы blackhole әдепкісі, немесе интерфейс өшірулі тұрғанда пулды файрволда тастаңыз. Екеуінің кез келгені — жазып қоюға болатын шешім; үнсіздік олай емес.
Тұрақтылық — соңғы тармақ. Екі байланысқа да ие кім болса да, ол желі менеджері ме, жіберуші скрипт пе, әлде қосылымның өмірлік циклі ме, әр қайта қосылуда маршруттар мен ережені көшірмелерді қоспай қайта жасауы керек. Нақты клиенттен сұраныспен және шлюзден бөлек сұраныспен тексеріңіз, екеуінде де байқалған шығуды растаңыз, содан кейін екінші WAN-ды суырып алыңыз да, жобалаған екі нәтиженің қайсысы шын мәнінде болатынын қараңыз. IPv6-ға өз кестесі, ережесі және аудармасы керек; жоғарыдағы IPv4 ережесі ол туралы ештеңе айтпайды.