Tři návrhy řeší stejný laboratorní problém: malá LAN musí vycházet přes WireGuard protějšek, zatímco brána si sama ponechává obvyklé upstream spojení. Lákavá zkratka je přesunout výchozí trasu routeru do tunelu, ale tím se rozbije vlastní cesta správy krabice i vše ostatní, co přeposílá. Zajímavou možností je směrování podle politiky omezené na jedno rozhraní a jeden prefix. Vyberte mezi nimi tak, že odpovíte na tři otázky o stroji, který skutečně máte.

Rozhodněte, kde výstup žije

První otázka: přeposílá tento host i pro něco jiného? Vyhrazená laboratorní brána snese politiku přeposílání, která standardně vše zahazuje. Router s produkčními povinnostmi ne, a vrstvení konkurenční sady pravidel přes spravovaný firewall je přesně způsob, jakým se výpadky plánují. Druhá: můžete vlastnit dva objekty politiky a jejich pořadí napříč restarty? Třetí: autorizuje protějšek, který máte, adresu zdroje vašeho tunelu a nabízí výstup do internetu? Protějšek, který zpřístupňuje jen privátní síť, je jiný produkt a žádná místní změna směrování to nespraví. Pokud je některá odpověď ne, umístěte výstup raději do jmenného prostoru nebo do jednorázového virtuálního stroje.

Jmenný prostor nebo VM stojí paměť a dává vám čistý poloměr výbuchu. Směrování podle politiky stojí dvě pravidla a nechává vám jednu krabici k ladění.

Vyberte výstup, který autorizuje váš zdroj

Většina selhání v této laboratoři nastane dřív, než existuje jediné pravidlo firewallu. Operátor výstupu musí přijmout zdrojovou adresu, kterou vaše pakety nesou po překladu, což je v tomto návrhu adresa tunelu, ne prefix LAN. Proto maskování patří do návrhu od začátku, ne jako pozdní dodatek.

Potvrďte s operátorem tři věci: protějšek autorizuje adresu vašeho tunelu, přeposílá IPv4 místo aby na sobě končil, a uplatňuje výstupní NAT. Bez prvního vaše pakety dorazí a zmizí. Bez třetího odcházejí s privátním zdrojem a umírají na dalším skoku. Pak zkontrolujte, že wg-quick neinstaluje vlastní výchozí trasu, čemuž brání Table = off; toto nastavení potlačuje vytváření tras, ne kontroly AllowedIPs na straně protějšku ani jeho práci s DNS.

Směrování obstarávají dva objekty politiky

Směrování potřebuje tabulku a pravidlo. Tabulka drží dvě trasy: prefix LAN ven z rozhraní LAN a výchozí trasu ven z tunelu. Pravidlo posílá provoz, který přichází na rozhraní LAN a nese tento prefix, do tabulky. Použijte selektor iif vedle shody zdroje, protože vlastní pakety WireGuard brány vznikají lokálně a nikdy se neshodují s příchozím rozhraním.

Strážce přichází před vyhledáním, ne po něm. Právě toto pořadí je celá bezpečnostní vlastnost návrhu.

Strážce je druhé pravidlo na stejném selektoru, jehož verdikt je unreachable. Dejte mu vyšší číselnou prioritu, aby vyhledání stále vyhrávalo, dokud je tunel nahoru. Když trasa tunelu zmizí, vyhledání nic nevrátí a strážce hledání zastaví, místo aby ho nechal propadnout na výchozí trasu WAN v hlavní tabulce.

ip rule add from 192.168.50.0/24 iif lan0 lookup 51861 pref 1000
ip rule add from 192.168.50.0/24 iif lan0 unreachable pref 1001
ip route add table 51861 default dev wg0

Zavřete mezeru pro návrat dřív, než ji otevřete

Nainstalujte nejprve strážce a potom vyhledání. Opačné pořadí nechává okno dlouhé sekundy, ve kterém se provoz testovacího klienta může dostat na upstream spojení.

Filtr obrázek dokončuje. V háku forward přijměte směr z LAN do tunelu pro testovací prefix a zavedený zpětný směr, potom zahoďte vše ostatní; NAT pro tento prefix na rozhraní tunelu patří do postrouting. Právě ponechání policy drop na řetězu přeposílání mění chybějící trasu v ticho místo úniku. Filtrování zpětné cesty potřebuje volný režim na rozhraní tunelu, protože veřejný zdroj přicházející po dekapsulaci má nejlepší zpětnou trasu na straně WAN. Linux bere vyšší z hodnot all a pro rozhraní, takže nastavení rozhraní tunelu není totéž jako oslabení validace všude.

Dokažte to případem selhání

Položte jádru přesnou otázku: jmenujte zdrojovou adresu klienta a rozhraní, na kterém přichází. Vyhledání bez obou odpovídá na jinou otázku a bude vypadat správně v obou případech. Potom se podívejte na počítadla firewallu, stav přenosu u protějšku a vlastní službu klienta.

Odebrání otestujte pořádně. Zastavte tunel a ponechte pravidlo i filtr na místě: klient by měl ustrnout a vlastní provoz brány by měl dál fungovat. Potom zastavte protějšek bez zásahu do místního rozhraní, což je případ, který odhalí návrhy spoléhající jen na existenci trasy. Nakonec restartujte a znovu zkontrolujte pořadí pravidel, protože háček pro rozebrání, který odstraní strážce, vrací celý návrh hlavní tabulce. Zapište číslo tabulky, priority a názvy rozhraní do tiketu změny, protože další člověk, který přidá pravidlo, bude ten, kdo to rozbije.

Související články