Tri návrhy riešia rovnaký laboratórny problém: malá LAN musí vychádzať cez WireGuard protistranu, kým brána si sama ponecháva obvyklé pripojenie nahor. Lákavá skratka je presunúť predvolenú trasu routera do tunela, ale tým sa rozbije vlastná cesta správy zariadenia aj všetko ostatné, čo preposiela. Zaujímavou možnosťou je smerovanie podľa politiky obmedzené na jedno rozhranie a jeden prefix. Vyberte medzi nimi tak, že odpoviete na tri otázky o stroji, ktorý skutočne máte.

Rozhodnite, kde výstup žije

Prvá otázka: preposiela tento host aj pre niečo iné? Vyhradená laboratórna brána znesie politiku preposielania, ktorá predvolene všetko zahadzuje. Router s produkčnými povinnosťami nie, a vrstvenie konkurenčnej sady pravidiel cez spravovaný firewall je presne spôsob, akým sa výpadky plánujú. Druhá: môžete vlastniť dva objekty politiky a ich poradie naprieč reštartmi? Tretia: autorizuje protistrana, ktorú máte, adresu zdroja vášho tunela a ponúka výstup do internetu? Protistrana, ktorá sprístupňuje len privátnu sieť, je iný produkt a žiadna miestna zmena smerovania to nespraví. Ak je niektorá odpoveď nie, umiestnite výstup radšej do menného priestoru alebo do jednorazového virtuálneho stroja.

Menný priestor alebo VM stojí pamäť a dáva vám čistý polomer výbuchu. Smerovanie podľa politiky stojí dve pravidlá a necháva vám jednu krabicu na ladenie.

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

Väčšina zlyhaní v tomto laboratóriu nastane skôr, než existuje jediné pravidlo firewallu. Operátor výstupu musí prijať zdrojovú adresu, ktorú vaše pakety nesú po preklade, a v tomto návrhu je to adresa tunela, nie prefix LAN. Preto maskovanie patrí do návrhu od začiatku, nie ako neskorší doplnok.

Potvrďte s operátorom tri veci: protistrana autorizuje adresu vášho tunela, preposiela IPv4 namiesto toho, aby na sebe končila, a uplatňuje výstupný NAT. Bez prvého vaše pakety dorazia a zmiznú. Bez tretieho odchádzajú s privátnym zdrojom a umierajú na ďalšom skoku. Potom skontrolujte, že wg-quick neinštaluje vlastnú predvolenú trasu, čomu bráni Table = off; toto nastavenie potláča vytváranie trás, nie kontroly AllowedIPs na strane protistrany ani jej prácu s DNS.

Smerovanie vykonávajú dva objekty politiky

Smerovanie potrebuje tabuľku a pravidlo. Tabuľka drží dve trasy: prefix LAN von z rozhrania LAN a predvolenú trasu von z tunela. Pravidlo posiela do tabuľky prevádzku, ktorá prichádza na rozhranie LAN a nesie tento prefix. Použite selektor iif spolu so zhodou zdroja, pretože vlastné pakety WireGuard brány vznikajú lokálne a nikdy sa nezhodujú s prichádzajúcim rozhraním.

Strážca prichádza pred vyhľadaním, nie po ňom. Práve toto poradie je celá bezpečnostná vlastnosť návrhu.

Strážca je druhé pravidlo na tom istom selektore, ktorého verdikt je unreachable. Dajte mu vyššiu číselnú prioritu, aby vyhľadanie stále vyhrávalo, kým je tunel hore. Keď trasa tunela zmizne, vyhľadanie nič nevráti a strážca zastaví hľadanie namiesto toho, aby ho nechal prepadnúť na predvolenú trasu WAN v hlavnej tabuľke.

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

Zatvorte medzeru pre návrat skôr, než ju otvoríte

Nainštalujte najprv strážcu a potom vyhľadanie. Opačné poradie necháva okno dlhé sekundy, v ktorom sa prevádzka testovacieho klienta môže dostať na pripojenie nahor.

Filter obrázok dopĺňa. V háku forward prijmite smer z LAN do tunela pre testovací prefix a zavedený spätný smer, potom zahoďte všetko ostatné; NAT pre tento prefix na rozhranie tunela patrí do postrouting. Práve ponechanie policy drop na reťazi preposielania mení chýbajúcu trasu na ticho namiesto úniku. Filtrovanie spätnej cesty potrebuje voľný režim na rozhraní tunela, pretože verejný zdroj prichádzajúci po dekapsulácii má najlepšiu spätnú trasu na strane WAN. Linux berie vyššiu z hodnôt all a pre rozhranie, takže nastavenie rozhrania tunela nie je to isté ako oslabenie validácie všade.

Dokážte to prípadom zlyhania

Položte jadru presnú otázku: vymenujte zdrojovú adresu klienta a rozhranie, na ktorom prichádza. Vyhľadanie bez oboch odpovedá na inú otázku a bude vyzerať správne v oboch prípadoch. Potom sa pozrite na počítadlá firewallu, stav prenosu u protistrany a vlastnú službu klienta.

Odstránenie otestujte poriadne. Zastavte tunel a ponechajte pravidlo aj filter na mieste: klient by mal ustrnúť a vlastná prevádzka brány by mala ďalej fungovať. Potom zastavte protistranu bez toho, aby ste sa dotkli miestneho rozhrania, a to je prípad, ktorý odhalí návrhy spoliehajúce sa len na existenciu trasy. Nakoniec reštartujte a znova skontrolujte poradie pravidiel, pretože háčik na rozobratie, ktorý odstráni strážcu, vracia celý návrh hlavnej tabuľke. Zapíšte číslo tabuľky, priority a názvy rozhraní do tiketu zmeny, pretože ďalší človek, ktorý pridá pravidlo, bude ten, kto to pokazí.

Súvisiace články