ZeroTier do lokální sítě: pravidla směrování UFW, ne povolení portu
Povolit port na bráně není totéž jako předávat provoz hostiteli za ní. Nastavte spravovanou trasu, zapněte průchod a zvolte cestu zpět.
Dostat se k tiskárně v kancelářské lokální síti přes člena ZeroTier zní jako jedno pravidlo, ale ve skutečnosti jde o tři rozhodnutí na třech různých místech. Overlay musí vědět, kde je lokální síť, hostitel Linux musí být ochoten předávat pakety a lokální síť musí vědět, jak poslat odpověď zpět. Vstupní pravidlo, které otevře port na bráně, se žádného z nich netýká. Je to špatný nástroj na správném hostiteli.
Tři úlohy, tři vlastníci
Spravovaná trasa patří ke konfiguraci sítě ZeroTier. Říká členům, že daný prefix je dostupný přes konkrétní adresu člena.
Předávání patří jádru Linuxu a tomu, kdo vlastní politiku jeho firewallu. Rozhoduje, zda paket, který dorazí na overlay, znovu odejde fyzickým rozhraním. Hostitel, který nepředává, paket po přijetí tiše zahodí. Odesílatel vidí vypršení časového limitu a v logu služby se nic neobjeví.
Cesta zpět patří lokální síti. Její hostitelé a její router musí vědět, že prefix overlaye je dostupný přes adresu vaší brány v lokální síti, nebo musí něco provoz překládat, aby tato otázka vůbec nevznikla.
Každé z toho může být správně, zatímco ostatní selhávají, a proto test, který jen pingne bránu, nic nedokazuje o službě za ní.
Namiřte spravovanou trasu na člena
Přidejte trasu pro zamýšlený prefix lokální sítě přes overlay adresu brány, ne přes její adresu v lokální síti. Overlay adresa je ta, na kterou se dostanou ostatní členové; adresa v lokální síti má význam jen na drátě.
Aby návrh fungoval, členové musí přijímat spravované trasy a jejich vlastní lokální sítě už nesmějí používat prefix, který inzerujete. Vzdálený notebook, který je doma na 192.168.60.0/24, také nemůže směrovat 192.168.60.0/24 přes overlay.
Držte inzerovaný prefix tak úzký, jak úloha dovolí. Inzerování většího agregátu pro ovlivnění preference může také nárokovat adresní prostor, který nevlastníte, a vzniklý konflikt se objeví na zařízeních připojených k oběma sítím. Může také způsobit, že člen upřednostní cestu, která nikam nevede. Držte trasu poctivou a zbytek nechte na politice.
Zapište prefix a adresu člena do stejné poznámky jako pravidla firewallu, protože nejčastější závadou je trasa ukazující na špatného člena.
Zapněte průchod v jádru
Přečtěte si běžící hodnotu předávání, než cokoli změníte, a pak nastavení ztrvalte mechanismem, který váš systém už používá, ne jednorázovým příkazem, který při restartu zmizí.
Pokud politiku vlastní UFW, jeho pravidla tras vyjadřují předávání pro dvojici zdroje, cíle a rozhraní. Ta jsou oddělená od vstupních pravidel, která otevírají službu na samotné bráně:
sysctl net.ipv4.ip_forward
sudo ufw route allow in on zt3f2a1c9d out on eth0 proto tcp to 192.168.60.20 port 443
sudo ufw status verbose
Název rozhraní je skutečné overlay zařízení na daném hostiteli, které přečtete z ip link; není to pevný řetězec napříč instalacemi. Pokud hostitel předává ve výchozím nastavení a UFW není v cestě, pravidlo trasy bude ignorováno a rozhodující je nastavení jádra.
Zvolte, jak se odpovědi vracejí
Při zachování zdroje vidí služba v lokální síti skutečnou overlay adresu a odpovídá na ni. To vyžaduje trasu na hostiteli lokální sítě nebo na jeho routeru, která směruje overlay prefix na vaši bránu, a to je změna mimo linuxový stroj.
Když tuto trasu nelze přidat, omezený překlad zdroje způsobí, že požadavek vypadá, jako by přišel z brány v lokální síti. Odpovědi se pak vracejí lokálně a není potřeba měnit směrování lokální sítě, za cenu ztráty původního zdroje v logech služby.
Omezte překlad na overlay zdroj a konkrétní cíl v lokální síti. Překládat vše, co opouští rozhraní lokální sítě, je široká verze, která později překvapí každého, kdo pravidla čte, a také skrývá provoz, který měl být blokován.
Ani jedna volba neuděluje nevyžádaný přístup z lokální sítě zpět k libovolným overlay členům. Pokud je to žádoucí, je to samostatné pravidlo s vlastní revizí.
Testujte ze skutečného člena
Připojte se z jiného člena, ne z brány, a vyžádejte jednu povolenou službu. Pak zkuste službu, která má zůstat zavřená, a oba testy zopakujte po opětovném připojení a po restartu brány.
Člen, který hlásí ONLINE, ani úspěšný ping na overlay adresu brány neověřuje trasu, pravidlo předávání ani cestu zpět:
zerotier-cli listnetworks
ip -4 route get 192.168.60.20
sudo ufw status numbered
Druhý příkaz ukazuje, které rozhraní by paket použil pro hostitele v lokální síti, a třetí, zda pravidlo trasy existuje ve formě, kterou jste zamýšleli. Pokud obojí vypadá správně a služba stále vyprší, zbývajícím podezřelým je cesta zpět.