ZeroTier do sieci LAN: reguły trasy UFW, a nie zezwolenie na port
Zezwolenie na port w bramie to nie to samo co przekazywanie do hosta za nią. Ustaw trasę zarządzaną, włącz tranzyt i wybierz drogę powrotną.
Dotarcie do drukarki w sieci LAN biura przez członka ZeroTier brzmi jak jedna reguła, ale w rzeczywistości to trzy decyzje w trzech różnych miejscach. Overlay musi wiedzieć, gdzie jest sieć LAN, host Linux musi być gotowy przekazywać pakiety, a sieć LAN musi wiedzieć, jak odesłać odpowiedź. Reguła wejściowa, która otwiera port w bramie, nie dotyka żadnej z tych rzeczy. To niewłaściwe narzędzie na właściwym hoście.
Trzy zadania, trzej właściciele
Trasa zarządzana należy do konfiguracji sieci ZeroTier. Informuje członków, że prefiks jest osiągalny przez określony adres członka.
Przekazywanie należy do jądra Linux i do tego, kto posiada politykę jego zapory. Decyduje ono, czy pakiet przychodzący przez overlay ponownie opuści interfejs fizyczny. Host, który nie przekazuje, po przyjęciu po cichu odrzuci pakiet. Nadawca widzi przekroczenie limitu czasu, a w dzienniku usługi nic się nie pojawia.
Droga powrotna należy do sieci LAN. Jej hosty i jej router muszą wiedzieć, że prefiks overlaya jest osiągalny przez adres LAN twojej bramy, albo coś musi tłumaczyć ruch, aby to pytanie w ogóle nie powstawało.
Każdy z tych elementów może być poprawny, podczas gdy pozostałe zawodzą, i dlatego test, który tylko pinguje bramę, nie dowodzi niczego o usłudze za nią.
Skieruj trasę zarządzaną na członka
Dodaj trasę dla zamierzonego prefiksu LAN przez adres overlaya bramy, a nie przez jej adres LAN. Adres overlaya to ten, do którego docierają inni członkowie; adres LAN ma sens tylko na kablu.
Aby to rozwiązanie działało, członkowie muszą akceptować trasy zarządzane, a ich własne sieci lokalne nie mogą już używać ogłaszanego prefiksu. Zdalny laptop, który w domu jest w 192.168.60.0/24, też nie może kierować 192.168.60.0/24 przez overlay.
Utrzymuj ogłaszany prefiks tak wąski, jak pozwala zadanie. Ogłaszanie większego agregatu, aby wpłynąć na preferencję, może też rościć sobie przestrzeń adresową, która nie jest twoja, a powstały konflikt pojawia się na urządzeniach podłączonych do obu sieci. Może też sprawić, że członek zacznie preferować drogę donikąd. Utrzymuj trasę uczciwą, a resztę zostaw polityce.
Zapisz prefiks i adres członka w tej samej notatce co reguły zapory, ponieważ najczęstszym błędem jest trasa wskazująca na złego członka.
Włącz tranzyt w jądrze
Przeczytaj bieżącą wartość przekazywania, zanim cokolwiek zmienisz, a następnie utrwal ustawienie mechanizmem, którego twój system już używa, a nie jednorazowym poleceniem, które znika po restarcie.
Jeśli polityka należy do UFW, jego reguły trasy wyrażają przekazywanie dla pary źródła, celu i interfejsu. Są one oddzielne od reguł wejściowych, które otwierają usługę na samej bramie:
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
Nazwa interfejsu to rzeczywiste urządzenie overlaya na tym hoście, które możesz odczytać za pomocą ip link; nie jest to stały ciąg we wszystkich instalacjach. Jeśli host przekazuje domyślnie, a UFW nie jest na drodze, reguła trasy zostanie zignorowana i liczą się ustawienia jądra.
Wybierz, jak wracają odpowiedzi
Przy zachowaniu źródła usługa w sieci LAN widzi prawdziwy adres overlaya i odpowiada na niego. Wymaga to trasy na hoście LAN lub jego routerze wskazującej prefiks overlaya na twoją bramę, a to zmiana poza skrzynką Linux.
Gdy tej trasy nie można dodać, ograniczone tłumaczenie źródła sprawia, że żądanie wygląda, jakby przyszło z bramy w sieci LAN. Odpowiedzi wracają wtedy lokalnie i nie trzeba zmieniać routingu LAN, kosztem utraty oryginalnego źródła w dziennikach usługi.
Ogranicz tłumaczenie do źródła overlaya i konkretnego celu w sieci LAN. Tłumaczenie wszystkiego, co opuszcza interfejs LAN, to szeroka wersja, która później zaskakuje każdego czytającego reguły, a także ukrywa ruch, który powinien być zablokowany.
Żadna z opcji nie daje niechcianego dostępu z sieci LAN z powrotem do dowolnych członków overlaya. Jeśli jest to pożądane, to osobna reguła z własnym przeglądem.
Testuj z prawdziwego członka
Połącz się z innego członka, a nie z bramy, i poproś o jedną dozwoloną usługę. Następnie spróbuj usługi, która powinna pozostać zamknięta, i powtórz oba testy po ponownym połączeniu oraz po restarcie bramy.
Członek, który zgłasza ONLINE, albo udany ping na adres overlaya bramy, nie potwierdza trasy, reguły przekazywania ani drogi powrotnej:
zerotier-cli listnetworks
ip -4 route get 192.168.60.20
sudo ufw status numbered
Drugie polecenie pokazuje, którego interfejsu użyłby pakiet do hosta LAN, a trzecie — czy reguła trasy istnieje w zamierzonej formie. Jeśli oba wyglądają poprawnie, a usługa nadal kończy się przekroczeniem czasu, pozostałym podejrzanym jest droga powrotna.