Целта е разумна: само корисниците на тунелот треба да стигнат до услугите на оваа машина. Решението по кое посегнуваат луѓето е влезен синџир IPv6 што отфрла сè освен WireGuard, и со тоа го отфрла и сообраќајот што го држи домаќинот поврзан со сопствената врска. Откривањето соседи и пораките за одржување на патеката не се пристап до услуги, а нивното отстранување дава машина недостапна од причини што немаат врска со вашата политика. Тунелот се крева, услугите се правилно ограничени, и ништо друго на врската не работи.

Три одговорности, едно множество правила

Првата одговорност е работа на надворешната мрежа: домаќинот мора да остане на својата врска, да решава соседи и да ги знае границите на патеката на таа врска. Втората е шифрираниот слушател, што прифаќа UDP на адресата и портата што ги избравте. Третата е множеството дешифрирани услуги до кои сакате да стигнат корисниците на тунелот.

Тоа се три различни политики, и само втората и третата се однесуваат на VPN. Множество правила што ги третира како едно наследува режим на отказ во кој затегнувањето на границата на апликацијата тивко ја крши поврзаноста на домаќинот.

Држете ги во одделни синџири или барем одделни коментари, за да види следниот човек која линија постои и зошто.

Што прави ICMPv6 за домаќинот

IPv6 се потпира на ICMPv6 за многу повеќе од ехо. Барањето и објавувањето сосед ги заменуваат ARP и се потребни за локална достава. Packet Too Big носи информација за MTU на патеката, а нејзиното игнорирање дава преноси што запираат на големи пакети. Објавувањата на рутерот ја носат стандардната рута и информацијата за префиксот кога врската користи автоматска конфигурација.

RFC 4890 ги одделува пораките што филтерот на домаќинот мора да ги дозволи од оние што се административен избор, и тоа го прави во дел за домаќин различен од правилата за рутер што препраќа меѓу мрежи. Читањето само на делот за препраќање дава влезна политика што е престрога за домаќинот што го штити.

Практичното правило е да ги дозволите основните пораки за грешки и конфигурација на интерфејсот на кој му требаат, ограничени по тип и извор каде што платформата дозволува, и јасно да одлучите за остатокот.

Замената на сето тоа со општа дозвола за ICMPv6 го решава проблемот со достапноста и се откажува од филтрирањето. Замената со општо отфрлање го решава проблемот со филтрирањето и се откажува од домаќинот.

Прво пуштете го тунелот, потоа услугата

Прифатете го транспортот WireGuard на предвидената надворешна адреса и UDP порта, а повратниот сообраќај прифатете го преку следење на врски. Потоа дозволете им на апликациските услуги да минуваат низ интерфејсот на тунелот, од изворите што навистина ги овластувате.

Дозволата за надворешната UDP порта не ги овластува дешифрираните барања внатре во неа. Токму таа разлика е целата причина зошто интерфејсот на тунелот се појавува во правилата за услуги.

Читајте го множеството правила такво какво што е, а не како што го опишува датотеката:

sudo nft list ruleset
ip -6 addr show
ip -6 route show default

Слушател на физичка адреса е одделно изложување од истата услуга на адресата на тунелот. Ако машината препраќа сообраќај и до друга машина, тоа е одлука на синџирот за препраќање, а не оваа влезна политика, и бара сопствено образложение.

Тестирајте ја врската, не само тунелот

Тунел што работи по промената докажува помалку отколку што изгледа, зашто постоечки запис за сосед и воспоставена врска можат да ја сокријат контролната порака што политиката сега ја отфрла.

Проверете ја поврзаноста директно, потоа проверете дали исклучената патека сè уште не успева:

ip -6 neigh show
ping -6 -c 3 2001:db8:1::1
sudo nft -c -f /etc/nftables.conf

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

Вратете домаќин од кој се заклучивте надвор

Пред да менувате правила на огнениот ѕид што ја носат вашата сопствена административна сесија, држете втор канал: конзола, сериска врска или закажано враќање што ги отстранува новите правила ако не го откажете.

Ако промената навистина ве заклучи, враќањето е преку тој канал, а не преку мрежата што штотуку ја отстранивте. Вратете го претходното множество правила од зачувана копија, потврдете дека домаќинот повторно е достапен, и дури потоа применете ја предвидената политика во помали делови.

Крајната политика не е универзална. Адресирањето, рутирањето и имплементацијата на огнениот ѕид се влезови за распоредување, но границата е иста насекаде: одбијте несакан пристап до апликации додека го задржувате контролниот сообраќај што го носи овластениот тунел.

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