Пакет излегува од преносен сметач, никогаш не стигнува до 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 е одлука за проследување донесена порано во стекот. Двете можат да го запрат сообраќајот, но гледаат различни работи и пропуштаат различни случаи.

MechanismWhat it blocksWhat it missesHow failure looks
Blackhole routeDestinations matching the prefix and tableOther tables, other address families, traffic with a different routeSilent timeout
Firewall kill switchEgress not bound to the tunnel interfaceRules that are too broad can break the endpoint or DHCPDropped packets with counters
WireGuard AllowedIPsDestinations not routed into the interfaceTraffic that never enters the interface at allNo 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 и табелата од која доаѓа. Третата закажува отстранување за една минута, што е доволно време да се потврди политиката и доволно кратко за да се опоравите од грешка на оддалечен домаќин. Откако однесувањето ќе се потврди, направете записот постојан преку истото управување со конфигурација што ги поседува другите рути.

Затворете ја промената со запишување на префиксот, табелата, семејството адреси и методот на враќање. Отфрлањето е намерен исклучок во дизајнот на рутирање и следниот инженер треба да знае кој сообраќај требаше да го запре пред да одлучи дали сè уште припаѓа таму.

Поврзани статии