blackhole маршруты мен VPN kill switch: қайсысы не істейді
blackhole маршруты сәйкес трафикті тастайды және ақау кезінде жабық жолды мәжбүрлейді. Оның қамту аясы мен соқыр нүктелерін пакет сүзгісіне негізделген kill switch-пен салыстырыңыз.
Пакет ноутбуктен шығады, VPN шлюзіне ешқашан жетпейді және ешбір firewall санауышы қозғалмайды. Маршруттар кестесі пакеттің тағдырын әлдеқашан шешкен: blackhole жазбасы оған сәйкес келді және ядро оны кез келген интерфейс көрмей тұрып тастады. Бұл мінез пайдалы, егер тағайындалған жер жабық күйде сәтсіз болуы керек болса, бірақ бұл тар ауқымды маршруттау әрекеті. Оны толық kill switch деп санау — дизайндардың қателесетін жері.
Тастау әрекеті нақты нені сәйкестендіреді
Маршрутты іздеу кестені таңдайды, содан кейін оның ішінде ең ұзын сәйкес префиксті таңдайды. blackhole маршруты — әрекеті тастау болып табылатын қарапайым жазба, сондықтан ол бүкіл шешімнен кейін сол жазбаны таңдайтын пакеттерге ғана әсер етеді. Кестені саясат ережесімен өзгертіңіз немесе нақтырақ префикс қосыңыз, сонда тастау енді қолданылмайды.
Сондықтан blackhole ауқымы дәл және айтуға оңай: ол префиксті, кестеде, сол мекенжай тобы үшін қамтиды. Ол басқа кесте жеңетін тағайындалған жерді қамтымайды және тек IPv4 префиксі тасталғаны үшін IPv6-ны қамтымайды.
ip route get бірдеңе орналастырмас бұрын шешімді көрсетеді, оның ішінде кесте мен маршрут түрі. Бұл шығысты оқу сәтсіз сұраудан қай ереже немесе префикс әрекет еткенін болжаудан жылдамырақ.
blackhole unreachable немесе prohibit-пен бірдей емес
Linux тастауға ұқсас үш маршрут түрін ұсынады және олар жіберушінің нені байқайтынымен ерекшеленеді. blackhole пакетті жауапсыз тастайды, сондықтан клиент уақыттың бітуін көреді. unreachable маршруты ICMP unreachable хабарламасын қайтарады, сондықтан байланыс хост немесе желі қатесімен тез үзіледі. prohibit маршруты әкімшілік тыйым қатесін қайтарады, бұл саясатты әдейі қабылдамауға жақынырақ.
Қолданба көретін мінезді таңдаңыз. Саясатты ашқыңыз келмесе, үнсіз тастау орынды, ал пайдаланушылар тағайындалған жердің неге қолжетімсіз екенін түсінуі керек болса, дереу қате жақсырақ. Түрлерді желі бойынша араластыру бір саясатты үш түрлі ақау ретінде сипаттайтын қолдау билеттерін тудырады.
Қосылымды диагностикалау кезінде әрбір тастау жазбасын ауыстырмалы деп ойламаңыз. Қате мәтіні, уақыт және пакетті ұстау өзгеше, ал кестедегі маршрут түрі қайсысына қарап отырғаныңызды айтады. ip-route нұсқаулығы түрлерді және олардың қате кезіндегі мінезін тізіп береді.
kill switch-пен қалай салыстырылады
kill switch — пакеттерді сүзу: туннельден тыс шығатын шығыс трафикті тастайтын firewall ережесі. blackhole маршруты — стекте ертерек қабылданатын жіберу шешімі. Екеуі де трафикті тоқтата алады, бірақ олар әртүрлі нәрсені көреді және әртүрлі жағдайларды өткізіп жібереді.
| Mechanism | What it blocks | What it misses | How failure looks |
|---|---|---|---|
| Blackhole route | Destinations matching the prefix and table | Other tables, other address families, traffic with a different route | Silent timeout |
| Firewall kill switch | Egress not bound to the tunnel interface | Rules that are too broad can break the endpoint or DHCP | Dropped packets with counters |
| WireGuard AllowedIPs | Destinations not routed into the interface | Traffic that never enters the interface at all | No tunnel route, direct egress |
Қамту — салыстыру маңызды болатын жер. Firewall иесін, портын немесе интерфейсін сәйкестендіріп, қолданбаны блоктай алады, ал соңғы нүкте қолжетімді болып қалады; маршрут бұлай істей алмайды. Керісінше, маршрут ешбір пакет сүзгісін жүктемей-ақ бүкіл префиксті тастауға жібере алады, бұл шағын жүйеде пайдалы.
WireGuard-тың AllowedIPs — крипткілттік маршруттау, firewall емес. Ол қандай тағайындалған жер префикстері интерфейске қабылданатынын шешеді, ал тек туннель қосалқы желісін тізіп берген профиль басқа тағайындалған жерлерді әдеттегі әдепкі маршрутқа қалдырады. Сондықтан толық туннель профильдері 0.0.0.0/0 қолданады және сондықтан wg-quick мүмкін болғанда firewall ережелерін де орнатады.
Туннельдің соңғы нүктесін тастаудан тыс ұстаңыз
Соңғы нүктенің сыртқы мекенжайы физикалық интерфейс арқылы қолжетімді болып қалуы керек. Сол мекенжайды да ұстап алатын тастау қол алысудың шығуына кедергі келтіреді және туннель ешқашан көтерілмейді, бұл маршруттау саясаты емес, VPN ақауына ұқсайды. Өзгеріске дейін және кейін соңғы нүктеге маршрутты тексеріңіз.
Басқару қолжетімділігі сол шолуға кіреді. Егер маршрутизаторға немесе клиентке жалғыз жол туннель болса, тым кең тастау оны алып тастауға мүмкіндік беретін машинадан сізді құлыптауы мүмкін. Құжатталған жолақтан тыс маршрутты, консольді немесе уақыттық қайтаруды ұстаңыз.
IPv6-ға өз жазбасы мен өз шолуы қажет. IPv4-ті blackhole-ға тастап, IPv6-ны әдепкі маршрутта қалдыратын дизайн дәл саясат тоқтатпақ болған трафикті ағызады, ал қате тек IPv4 сынағында көрінбейді.
Оны таймермен және қайтарумен кезең-кезеңімен енгізіңіз
Маршрутты қысқа автоматты жоюмен қолданыңыз, сонда қате қайта жүктеуден кейін сақталмайды. Төмендегі командалар құжаттама ауқымын пайдаланады; оны дизайныңыз шынымен тастайтын префикспен ауыстырыңыз:
sudo ip route replace blackhole 10.0.0.0/8
ip route get 10.1.2.3
sudo systemd-run --on-active=60 /sbin/ip route del blackhole 10.0.0.0/8Екінші команда blackhole маршруты мен оның қай кестеден келгенін хабарлауы керек. Үшіншісі жоюды бір минуттан кейін жоспарлайды, бұл саясатты растауға жеткілікті уақыт және қашықтағы хосттағы қатеден қалпына келуге жеткілікті қысқа. Мінез расталғаннан кейін жазбаны басқа маршруттарға ие сол конфигурацияны басқару арқылы тұрақты етіңіз.
Өзгерісті префиксті, кестені, мекенжай тобын және қайтару әдісін жазып жабу арқылы аяқтаңыз. Тастау — маршруттау дизайнындағы әдейі жасалған ерекшелік, ал келесі инженер оның әлі де керек пе екенін шешпес бұрын қандай трафикті тоқтату үшін жасалғанын білуі керек.