VPN трафигінде саясат негізіндегі маршруттау нені өзгертеді, нені өзгертпейді
Ережелер қай кестеге жүгінетінін таңдайды, сондықтан негізгі кестедегі әдепкі маршрут көбіне ештеңені түсіндірмейді. Ереже қоспас бұрын басымдықтарды, белгілерді және көздерді бірге оқыңыз.
Саясат негізіндегі маршруттау ақаулықтарды жою жазбаларының көбісі қоятын сұрақтан өзге сұраққа жауап береді. Негізгі кесте межелі жердің қайда кететінін айтады; саясат ережелері қай кестеге мүлдем жүгінетінін айтады және оны көз мекенжайы, пакет белгісі, немесе пакет келген интерфейс бойынша шеше алады. Туннель өзін дәйексіз ұстаса, ережелер жиынтығы жиі себеп болады, ал маршруттау кестесі жиі емес.
Ережелер кестені таңдайды, содан кейін кесте маршрутты таңдайды
Әр ереженің басымдығы, сәйкестік шарты және мақсатты кестесі болады. Ядро ережелерді басымдық ретімен жүргізіп, бірінші сәйкестікте тоқтайды, содан кейін сол кестеде кәдімгі ең ұзын префиксті іздеу жасайды. Бос кестеге сілтейтін ереже келесі ереже таңдаған нәрсеге түсіп кетеді, және ұқыпты жазылған ереженің ештеңе істемейтіндей көрінуі осыдан.
Сондықтан негізгі кестені шығару жұмыс істеп тұрған VPN клиентін сирек түсіндіреді. Клиенттер ережелерді әдетте төмен басымдық нөмірлеріне, негізгі кестенің әдепкі ережесінен әлдеқайда бұрын қосады, сондықтан пакет сіз қарап тұрған маршрутқа ешқашан жетпейді. Негізгі кестедегі метриканы төмендету бұрыннан бұрылған трафик үшін ештеңені өзгертпейді.
Ереже префиксті әдейі қара құрдымға немесе қолжетімсізге айналдыра алады. Кейбір клиенттер мұндай ережені қауіпсіздік ажыратқышы ретінде қосады, сонда түсіп қалу конфигурацияланған туннель емес, сынған туннель сияқты көрінеді.
Ережелер жиынтығын тізім ретінде емес, тізбек ретінде оқыңыз
Ережелерді басымдықтарымен және олар сілтейтін кестелермен бірге шығарыңыз, содан кейін әдепкі немесе туннель маршруты бар әр кестені шығарыңыз. Маңызды бөлік — рет, және экран суреті әдетте дәл сол бөлікті түсіріп қалдырады:
ip rule show ip route show table all | sed -n '1,60p' ip route get 198.51.100.20 from 10.8.0.2 ip route get 198.51.100.20 from 10.8.0.2 mark 0x1
Соңғы екі команда теорияны бақылауға айналдырады, өйткені олар мынаны сұрайды ядро сол көз мен сол белгі үшін не істер еді. Егер белгі өзгергенде жауап өзгерсе, белгіге негізделген ереже істеп тұр және белгіні елемейтін кез келген тест басқа пакетті тексереді. Сыртқы қосылым өз ережесіне лайық. Барлық трафикті өзі арқылы маршруттайтын туннель өзі қосылатын соңғы нүкте мекенжайын шығарып тастауы керек, әйтпесе шифрланған пакеттер жаңа ғана тастап кеткен туннельге қайта жіберіледі. Клиенттердің көбісі бұл ерекшелікті автоматты түрде қосады, ал қолмен өңделген ережелер жиынтығы — ол жоғалатын жер.
Белгілер мен сокеттер: клиенттер трафикті бөлудің екі жолы
Кейбір клиенттер пакеттерді firewall ішінде белгілеп, белгіге сәйкес келетін ереже қосады. Басқалары сокет деңгейіндегі маршруттауды пайдаланып, қосылмас бұрын сокетке маршрут қояды. Біріншісі ip rule шығысында көрінеді; екіншісі көрінбейді және жалпы іздеуде пайда болмайды.
Егер тестілік бағдарлама өзі ұсынуы тиіс қолданбадан өзгеше әрекет етсе, қолданба белгі қоя ма, әлде құрылғыға байлана ма, соны тексеріңіз. Механизм аталған соң бұл айырма жұмбақ емес, және ол бір машинада shell-ден қосқан curl мен браузердің қойындысы неге басқа жолдарға түсуі мүмкін екенін түсіндіреді. Екі әдіс те кең мағынада саясат негізіндегі маршруттау: олар жолды межелі жерден өзге нәрсемен таңдайды. Олардың ешқайсысы трафикке рұқсат бермейді және ешқайсысы серіктес күтетін firewall ережелері мен тіркелгі деректерін алмастырмайды.
Тағы бір ереже қоспас бұрын иелікті қадағалаңыз
Ережелерді бір нәрсе орнатады. VPN клиенті, желі менеджері және қолмен жазылған скрипт әрқайсысы іске қосылу кезінде ереже қоса алады, ал қайта қосылу логикасы алдыңғы жиынтықты артта қалдыруы мүмкін. Бұрынғы профильден қалған екі ескірген ереже профиль жойылғаннан көп кейін де трафикті бағыттауды жалғастырады.
Қай процесс ережеге ие екенін оның басымдығы мен пішіні арқылы тауып, сол ие жиынтықты әр қосылымда қайта жаза ма, соны тексеріңіз. Егер жазса, бүгін қосылған қол ережесі ертең жоғалады, ал түзету shell тарихы файлында емес, клиент конфигурациясында болуы керек. Тест үшін бүкіл ережелер жиынтығын тазалау — болжамды құны бар азғызарлық қысқа жол: ол клиентке өз туннелін жұмыс істеп тұруы үшін қажет ережелерді де алып тастайды. Ережелерді бір-бірлеп жойыңыз немесе қайта жүктеуге болатын машинада тестілеңіз.
Аумақты бір емес, екі ағынмен дәлелдеңіз
Түзету тек әсер етуі тиіс ағынмен және әсер етпеуі тиіс ағынмен расталады. Саясат туннельге бағыттайтын межелі жерді және сыртта қалуы тиіс бір межені таңдап, содан кейін екеуі үшін іздеулер мен ұсталымдарды салыстырыңыз:
ip route get 198.51.100.20 from 192.0.2.44 ip route get 198.51.100.21 from 192.0.2.44 tcpdump -ni any host 198.51.100.21 and port 443
Екі іздеу әртүрлі интерфейстерді қайтарса, ереже бір нәрсе істеп жатыр. Олар бір интерфейсті қайтарса, ереже көзделгеннен кеңірек сәйкеседі, және бұл бір қолданбаға арналған туннель арқылы бүкіл ішкі желіні үнсіз жіберетін ақау.
Ережелердің басымдықтарын және ие қызметті екі тестілік мекенжаймен бірге билетке жазыңыз. Сонда келесі адам симптомның сипаттамасының орнына қайталанатын жұп алады және саясат негізіндегі маршруттаудың әлі де күшінде екенін бір минут ішінде айта алады.