Маршрута blackhole наспроти VPN kill switch: што прави секој
Маршрутата blackhole го отфрла соодветниот сообраќај и наложува затворен пат при дефект. Споредете го нејзиниот опфат и слепите точки со kill switch заснован на филтрирање пакети.
Пакет излегува од преносен сметач, никогаш не стигнува до VPN портата и ниеден бројач на огнениот ѕид не се поместува. Табелата за рутирање веќе ја одлучила судбината на пакетот: запис blackhole се совпаднал со него и јадрото го отфрлило пред ниту еден интерфејс да го види. Тоа однесување е корисно кога дестинацијата треба да падне затворена, но тоа е рутирачка акција со тесен опфат. Да се третира како целосен kill switch е местото каде дизајните грешат.
Што всушност поклопува акцијата за отфрлање
Пребарувањето рута избира табела, потоа најдолгиот соодветен префикс во неа. Маршрутата blackhole е обичен запис чија акција е отфрлање, па влијае само на пакети што би го избрале тој запис по целата одлука. Сменете ја табелата со правило за политика или додајте поконкретен префикс и отфрлањето повеќе не важи.
Затоа опфатот на blackhole е точен и лесно се искажува: го покрива префиксот, во табелата, за тоа семејство адреси. Не покрива дестинација што би ја добила друга табела и не покрива IPv6 само затоа што префиксот IPv4 се отфрла.
ip route get ја покажува одлуката пред да распоредите нешто, вклучувајќи ја табелата и типот на рута. Читањето на тој излез е побрзо од заклучување од неуспешно барање кое правило или префикс дејствувало.
Blackhole не е исто како unreachable или prohibit
Linux нуди три типа рути слични на отфрлање и тие се разликуваат по тоа што го забележува испраќачот. Blackhole го испушта пакетот без одговор, па клиентот гледа истекување на времето. Рутата unreachable враќа порака ICMP unreachable, па врската брзо паѓа со грешка на домаќин или мрежа. Рутата prohibit враќа грешка за административна забрана, што е поблиску до намерно одбивање на политика.
Изберете го однесувањето што сакате апликацијата да го види. Тихото отфрлање е соодветно кога не сакате да ја откриете политиката, а непосредната грешка е подобра кога корисниците треба да разберат зошто дестинацијата е недостапна. Мешањето на типовите низ мрежа создава билети за поддршка што истата политика ја опишуваат како три различни дефекти.
Не претпоставувајте дека секој запис за отфрлање е заменлив кога дијагностицирате врска. Текстот на грешката, времето и снимањето пакети се разликуваат, а типот на рута во табелата ви кажува на кој гледате. прирачникот за ip-route ги наведува типовите и нивното однесување при грешка.
Како се споредува со kill switch
Kill switch е филтрирање пакети: правило на огнен ѕид што го отфрла излезниот сообраќај што би излегол надвор од тунелот. Маршрутата 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 |
Опфатот е местото каде споредбата е важна. Огнениот ѕид може да совпадне сопственик, порта или интерфејс и да блокира апликација додека крајната точка останува достапна; рутата не може. Обратно, рутата може да испрати цел префикс во отфрлање без ниеден филтер за пакети вчитан, што е корисно на минимален систем.
AllowedIPs на WireGuard е рутирање со криптоклуч, не огнен ѕид. Одлучува кои префикси на дестинации се прифаќаат во интерфејсот, а профилот што наведува само подмрежата на тунелот едноставно ги остава другите дестинации на обичната стандардна рута. Затоа профилите со целосен тунел користат 0.0.0.0/0 и затоа wg-quick исто така инсталира правила на огнен ѕид кога може.
Држете ја крајната точка на тунелот надвор од отфрлањето
Надворешната адреса на крајната точка мора да остане достапна преку физичкиот интерфејс. Отфрлање што ја фаќа и таа адреса го спречува ракувањето да излезе и тунелот никогаш не се крева, што изгледа како дефект на 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 и табелата од која доаѓа. Третата закажува отстранување за една минута, што е доволно време да се потврди политиката и доволно кратко за да се опоравите од грешка на оддалечен домаќин. Откако однесувањето ќе се потврди, направете записот постојан преку истото управување со конфигурација што ги поседува другите рути.
Затворете ја промената со запишување на префиксот, табелата, семејството адреси и методот на враќање. Отфрлањето е намерен исклучок во дизајнот на рутирање и следниот инженер треба да знае кој сообраќај требаше да го запре пред да одлучи дали сè уште припаѓа таму.