WireGuard 5G w oddziale: niech oddział sam dzwoni do koncentratora
Gdy oddział dzwoni do koncentratora, ten nigdy nie musi odkrywać zmieniającego się adresu komórkowego. Skonfiguruj, sprawdź, a potem zobacz, czego to nie rozwiązuje.
Kierowanie oddziału na koncentrator to łatwiejsza połowa tego projektu, gdy oddział siedzi za zmieniającym się adresem komórkowym, a koncentrator ma stabilną nazwę. Wtedy koncentrator uczy się oddziału z ruchu uwierzytelnionego, a nie z rekordu, który trzeba utrzymywać aktualnym. Umowa jest prosta: oddział zawsze inicjuje.
Skonfiguruj to świadomie, a potem sprawdź część, którą ludzie uznają za działającą. Oba kroki zajmują minuty, i to na drugim te projekty zwykle zawodzą.
Która strona ma stabilny punkt końcowy
Konfiguracja oddziału wskazuje punkt końcowy i klucz publiczny koncentratora. Konfiguracja koncentratora wskazuje klucz publiczny oddziału i jego dozwolone prefiksy wewnętrzne, i może w ogóle nie mieć punktu końcowego, bo tożsamość pochodzi z klucza, a nie z adresu źródłowego ostatniego pakietu. Ta asymetria to cały mechanizm i usuwa całą klasę problemów z wykrywaniem po stronie koncentratora.
Gdy oddział wyśle uwierzytelniony pakiet, koncentrator zapisuje źródło, z którego przyszedł, i używa tego odwzorowania do odpowiedzi. Renumeracja łącza komórkowego nie kosztuje wtedy nic poza następnym uściskiem dłoni, a każdy komponent, którego już nie potrzebujesz, to taki, który nie może zawieść podczas przełączenia. Ta właściwość jest warta sprawdzenia podczas planowanej zmiany, a nie podczas incydentu. Zrób to, gdy ktoś może patrzeć na oba końce naraz.
Daj oddziałowi konfigurację, która przetrwa renumerację
Trzymaj punkt końcowy i keepalive po stronie oddziału, a wpis peera na koncentratorze trzymaj bez twardo zakodowanego adresu. Keepalive utrzymuje przetłumaczone odwzorowanie otwarte wystarczająco długo, by koncentrator mógł wysłać ruch nieżądany po okresie bezczynności.
[Peer]
PublicKey = HUB_PUBLIC_KEY_BASE64
Endpoint = hub.example.net:51820
AllowedIPs = 10.60.0.0/24, 10.60.10.0/24
PersistentKeepalive = 25
Dwadzieścia pięć sekund to często cytowany przykład utrzymywania odwzorowania NAT przy życiu, a nie wymóg dla każdego peera. Ustaw je według limitu czasu odwzorowania, który rzeczywiście obserwujesz, i pamiętaj, że generuje ruch na łączu z limitem danych, dopóki interfejs jest włączony.
Na koncentratorze dozwolone prefiksy peera oddziału muszą obejmować wszystko, co oddział wyśle. Brakujący prefiks zachowuje się jak błąd routingu na drugim końcu i nie daje żadnego ostrzeżenia po obu stronach, dlatego warto go przejrzeć przed pierwszym prawdziwym pakietem. Porównaj dozwolone prefiksy koncentratora z adresami interfejsów oddziału przed pierwszym połączeniem.
Sprawdź odwzorowanie i przełączenie
Potwierdź, że uścisk dłoni się kończy, że koncentrator wyświetla bieżący punkt końcowy oddziału i że wewnętrzne adresy oddziału są osiągalne przez tunel. To jest linia bazowa i warto ją zapisać, zanim ktokolwiek dotknie łącza komórkowego. Dwie linie wyniku wystarczą. Zachowaj je w zgłoszeniu ze znacznikiem czasu.
wg show wg0
wg show wg0 latest-handshakes
ip route show default
ping -c 3 10.60.10.1
Następnie sprawdź awarię, dla której ten projekt istnieje. Wyciągnij główny WAN i potwierdź, że bazowa trasa oddziału do koncentratora wychodzi teraz przez interfejs komórkowy. Tunel nie naprawi zerwanej ścieżki fizycznej, więc trasa zewnętrzna wciąż wskazująca martwe łącze w górę daje przekroczenie czasu uścisku dłoni, które wygląda dokładnie jak problem koncentratora.
Jeśli ścieżka zewnętrzna jest wyraźnie przypisana lub rutowana polityką, przełączenie musi ją obejmować. Ta luka między projektem, który czyta się poprawnie, a takim, który przetrwa awarię, jest zwykle jedyną brakującą rzeczą.
Czego ten projekt nie rozwiązuje
Nic tutaj nie dopuszcza połączenia przychodzącego do oddziału. Jeśli coś w centrali musi zadzwonić do lokalizacji komórkowej, kierunek tunelu jest zły dla tego wymagania, a dynamiczny DNS aktualizuje tylko nazwę. Tłumaczenie operatora, polityka wejściowa i odświeżanie punktu końcowego przez klienta wciąż stoją na drodze, a zmieniony rekord nie otworzy NAT klasy operatorskiej.
Trzymaj prefiks oddziału odrębny od każdej innej lokalizacji i ogranicz to, co przekaże jego brama. Stabilny punkt końcowy koncentratora upraszcza wykrywanie i nic nie robi dla projektu routingu, planowania adresów ani pytania, które trasy aplikacji przetrwają przełączenie.
Zapisz w runbooku cztery rzeczy: kto inicjuje, które prefiksy są dozwolone, jak długi jest keepalive i co się dzieje, gdy główne łącze padnie. To właśnie te wiersze są naprawdę potrzebne przyszłemu operatorowi o trzeciej w nocy.