Klient WireGuard se připojí a pinguje adresu na zcela jiném rozhraní a odpověď dorazí. Zachycení ukazují požadavek jen na tunelu. Nic není rozbité a pečlivě vypnuté nastavení přeposílání s tím nemá nic společného. Jde o srovnání dvou cest, které na diagramu vypadají podobně a v jádru jsou zcela odlišné.

Jedna cesta přeposílá pakety za někoho jiného, druhá je doručuje samotnému hostiteli.

Paket adresovaný hostiteli zůstává v hostiteli

Vzdálený klient odešle IP paket na adresu, kterou hostitel vlastní. Směrování se u tohoto paketu ptá na jedinou věc: je toto cílová adresa lokální? Každá adresa, kterou hostitel drží, se objevuje v lokální směrovací tabulce a tato tabulka se prohlíží před hlavní, takže paket jde do vlastního zásobníku hostitele, místo aby vyšel jiným rozhraním. Odpověď se generuje lokálně a vrací se tunelem, protože odtud dotaz přišel.

To je celý mechanismus. K žádnému přeposílání nedochází, neúčastní se žádná změna stavu rozhraní a dotyčná adresa nemusí být dosažitelná odnikud jinud.

Proč se ip_forward neuplatní

Přeposílání řídí pakety, které musí odejít jiným rozhraním, než na kterém dorazily. Ping na samotného hostitele touto cestou nikdy nejde: paket se spotřebuje lokálně a odpověď se vygeneruje lokálně. Nastavení net.ipv4.ip_forward=0 tu proto nic nemění a pravidlo v řetězci přeposílání ten provoz nikdy nevidí. Správná kontrola je na vstupní cestě, omezená vstupním rozhraním nebo zdrojem.

Proto vypnutí přeposílání a předpoklad, že hostitel je izolovaný, vytváří falešný pocit bezpečí.

Přečtěte si lokální tabulku, která rozhodla

ip rule show obvykle hlásí pravidlo s prioritou nula, které posílá všechna vyhledávání nejprve do lokální tabulky, a ip route show table local vypisuje vlastní adresy hostitele s lokálním rozsahem. Tato tabulka zahrnuje adresy na rozhraních, která jsou administrativně vypnutá, ale stále nakonfigurovaná. Adresy IPv4 přiřazené staticky obvykle přežijí výpadek spoje, a právě proto ping na vypnutý most může stále uspět a překvapit operátora.

IPv6 se v tomto bodě rozchází. Jeho adresy se obvykle stahují, když spoj vypadne, pokud není nastaveno keep_addr_on_down. Porovnávejte rodiny, místo abyste předpokládali, že jedno pravidlo pokrývá obě.

Co protějšek skutečně dosáhne

Odpověď z vlastní adresy routeru v segmentu neříká nic o strojích za tímto segmentem. Protějšek se touto cestou nedostane k hostiteli za druhým rozhraním; dosáhne jen adres, které router sám vlastní. Testování služby na samostatném hostiteli v LAN, namísto pingování adresy routeru, je to, co určí, zda je přeposílání vůbec povoleno.

Omezit protějšek na služby vázané na adresu tunelu je otázka vstupní politiky. Povolte požadovanou službu na rozhraní tunelu a omezte zdroje, které ji smějí používat, protože paket tam skutečně dorazí.

Zkontrolujte také adresy, které jste chtěli vyřadit. Odebrání adresy z rozhraní je spolehlivější než vrstvení pravidel firewallu na zastaralou adresu.

Související články