Strefa VPN w OpenWrt, przekazywanie i maskowanie: czego potrzebujesz?
Wejście strefy, przekazywanie i maskowanie odpowiadają na różne pytania. Zdecyduj, czego potrzebuje twój ruch VPN, zanim otworzysz strefę WAN.
Trzy zmiany mieszają się za każdym razem, gdy VPN spotyka OpenWrt: otwarcie portu, zezwolenie na przekazywanie i włączenie maskowania. Odpowiadają na różne pytania, a zwykle tylko jedna z nich jest rzeczywistym wymaganiem. Czytanie każdej reguły według roli ruchu, którym zarządza, zamienia domysł w decyzję i mówi też, jakiego objawu oczekiwać, gdy zmiana jest błędna. Zacznij od nazwania roli, która zawiodła, a nie pola wyboru, które pamiętasz.
Nazwij rolę ruchu, zanim dotkniesz reguły
Wejście strefy decyduje, co może dotrzeć do samego routera. Wyjście strefy obejmuje ruch, który router sam tworzy, przekazywanie strefy jest wartością domyślną dla ruchu przechodzącego przez strefę, a maskowanie decyduje, czy adres źródłowy jest przepisywany na wyjściu. To cztery różne pytania, a polityka strefy odpowiada na wszystkie naraz tą samą wartością, dlatego zmiana w całej strefie jest grubym narzędziem. Nazwana reguła może odpowiedzieć na jedno z nich, nie ruszając pozostałych.
Użyteczna mapa jest według roli ruchu, bo właśnie to można zaobserwować, gdy coś zawodzi. Każda rola poniżej ma jedną regułę, która ją rozstrzyga, i jeden objaw, który na nią wskazuje:
| Traffic role | Control that decides it | Where it lives in the config | Symptom when it is wrong |
|---|---|---|---|
| A client reaching a listener on the router | Input policy of the zone that carries the connection, or a rule for the port | option input in the zone stanza, or a named rule | The handshake never completes and the tunnel log says nothing |
| A tunnel client reaching the router itself | Input policy of the tunnel zone | option input in the VPN zone | A ping to the gateway fails |
| A tunnel client reaching another LAN host | Forwarding from the tunnel zone to the LAN zone | config forwarding plus the zone assignment | The gateway answers and the file share times out |
| The router's own traffic leaving the WAN | Output policy, and translation if the far side needs it | option output and option masq | The tunnel never establishes, or replies vanish |
Nasłuchujący na routerze potrzebuje jednej wąskiej reguły wejścia
Serwer OpenVPN na routerze odbiera ruch zaadresowany do routera, więc jego połączenie zewnętrzne zależy od polityki wejścia strefy, która go niesie. Zezwól na skonfigurowany transport i port, a wszystko inne w tej strefie zostaw odrzucone. Jedna reguła portu to znacznie mniejsza zmiana niż zezwolenie w całej strefie, i to ją będziesz jeszcze potrafił wyjaśnić po roku.
Dwie rzeczy czynią tę regułę bezpieczną w utrzymaniu: nazywa port, którego usługa naprawdę używa, i stoi obok definicji strefy, żeby następna osoba widziała, dlaczego istnieje. Wiersze poniżej to tylko forma, a port zastępuje to, co skonfigurowano na serwerze. Zmień ten port w obu miejscach, gdy usługa się przeniesie, bo reguła pozostawiona na starym jest niewidoczna do audytu.
config zone
option name 'wan'
option input 'REJECT'
option forward 'REJECT'
option output 'ACCEPT'
option masq '1'
config rule
option name 'allow-openvpn'
option src 'wan'
option proto 'udp'
option dest_port '1194'
option target 'ACCEPT'Sprawdź przed ponownym wczytaniem, bo błąd składni w pliku zapory może zostawić router bez działającego zestawu reguł. W wydaniu z fw4 sprawdzenie jest osobnym poleceniem i zawodzi głośno, zamiast po cichu przyjąć uszkodzony blok. Wczytaj ponownie dopiero po udanym sprawdzeniu i zachowaj poprzedni plik tam, gdzie możesz go przywrócić.
fw4 check
service firewall reloadŻądanie klienta przechodzi przez przekazywanie, nie przez wejście
Po uwierzytelnieniu żądanie klienta tunelu o usługę LAN tworzy przekazany strumień, więc regułą, która to rozstrzyga, jest relacja przekazywania między strefą tunelu a strefą LAN. Przypisz interfejs tunelu do wybranej strefy, a następnie zadeklaruj kierunek, źródła i usługę. Przypisanie strefy jest tym, co nadaje sens regule przekazywania, i oba elementy mają sens tylko czytane razem. Relacja przekazywania, która wskazuje strefę tunelu jako źródło, a strefę LAN jako cel, czyta się jako jedna świadoma decyzja, podczas gdy dwa zezwolenia w całej strefie czytają się jak wypadek.
Dotarcie do samego routera nadal korzysta ze ścieżki wejścia, dlatego ping do bramy nic nie mówi o udostępnianiu plików za nią. Te dwa błędy żyją w różnych blokach i naprawia się je różnymi zmianami. Zapisz obie ścieżki osobno, zanim zmienisz którąkolwiek.
Maskowanie jest decyzją o trasowaniu, nie zezwoleniem
Maskowanie przepisuje adres źródłowy wybranego ruchu wychodzącego. Może uratować projekt wyjścia, w którym druga strona nie ma trasy powrotnej, a także ukrywa adresy poszczególnych klientów przed każdą usługą, która loguje lub autoryzuje po adresie. Wyłączenie go jest wyborem trasowania dotyczącym drogi powrotnej, a nie przełącznikiem bezpieczeństwa, który zamyka dziurę wejściową. Tunel, który działa z włączonym tłumaczeniem i zawodzi w chwili jego wyłączenia, zwykle nie ma trasy powrotnej, a nie reguły zapory.
Alternatywa trasowana wymaga trasy powrotnej po drugiej stronie zamiast tłumaczenia. Żadna z opcji nie daje uprawnienia zapory ani konta aplikacji, dlatego wyłączenie maskowania prawie nigdy nie naprawia klienta tunelu, który nigdzie nie dociera. Politykę IPv4 i IPv6 też traktuj osobno, bo jedno ustawienie tłumaczenia nie opisuje obu rodzin.
Udowodnij decyzję żądaniem dozwolonym i odrzuconym
Wyślij jedno żądanie, które powinno zostać dozwolone, i jedno, które powinno zostać odrzucone, a potem wskaż regułę, która podjęła każdą decyzję. Strona, która przypadkiem się wczyta, nie jest dowodem; dowodem jest reguła, która pasowała, w łańcuchu, w którym pasowała. Odrzucenie liczy się tak samo jak sukces, bo pokazuje, że polityka coś robi, a nie że wszystko jest dozwolone.
Dwa polecenia dają ten dowód w bieżącym wydaniu. Licznik na pasującej regule przesuwa się, gdy żądanie zostanie przyjęte, a dziennik pokazuje odrzucenie, jeśli włączyłeś logowanie dla tej reguły:
nft list chain inet fw4 forward_wan
logread -f | grep -i -E 'DROP|REJECT'Zachowaj ścieżkę administracyjną, której nadal możesz używać, zanim zmienisz jakąkolwiek politykę zapory, i postępuj zgodnie z procesem weryfikacji i wycofania właściciela konfiguracji. Zmiana, która zamyka cię poza routerem, nie jest wynikiem testu, to drugi incydent. Zapisuj strefę i rolę ruchu obok każdej obserwacji, aby para wyników wyjaśniała politykę, a nie opisywała szczęśliwe wczytanie strony.