Umieść regułę zezwolenia w złym miejscu, a zachowa się jak brak reguły. W nftables wybór między insert a add decyduje, po której stronie wskazanej reguły znajdzie się nowa instrukcja, a uchwyt nazywa regułę w aktywnym zbiorze reguł, a nie jej numer wiersza. Jeśli miejsce jest błędne, pakiet najpierw trafi do drop.

Poniższe porównanie używa jednego stałego peera i jednej wymiany zewnętrznego nasłuchu. Jest celowo wąskie; zastąpienie całego łańcucha to inna zmiana o innym profilu ryzyka.

Dwa miejsca, dwa różne wyniki

insert umieszcza regułę przed wskazaną regułą. add umieszcza ją po niej. Jeśli wskazana reguła jest końcowym dropem dla przepływu, te dwa polecenia dają przeciwne wyniki, nawet gdy treść reguły jest identyczna.

Pominięcie miejsca ma własne zachowanie domyślne, co jest kolejnym powodem, by nie kopiować polecenia z forum bez przeczytania, do czego jest zakotwiczone. Zakotwiczenie to cała decyzja. Zapisz zamierzoną stronę, zanim wpiszesz polecenie. insert i add różnią się w pliku jednym słowem.

Umiejscowienie jest względne wobec reguły w konkretnym łańcuchu. Przeniesienie tej samej instrukcji do innego łańcucha lub innego priorytetu hook zmienia to, które pakiety widzi, nawet gdy składnia reguły wygląda poprawnie.

Uchwyt identyfikuje regułę, a nie numer wiersza

Uchwyt taki jak 42 jest identyfikatorem w bieżącym stanie zbioru reguł. To nie czterdziesta druga reguła i nie jest stabilny między hostami, przebudowami ani menedżerem, który przeładowuje swoją konfigurację.

Przed wyborem zakotwiczenia znajdź łańcuch i rzeczywisty końcowy drop. Następnie potwierdź uchwyt na tej regule w tym samym wykazie, który pokazuje drop, aby numer i reguła były czytane razem. Uchwyt odczytany ze starego wykazu może już należeć do innej reguły. Odczytaj go ponownie w sesji, która zastosuje zmianę.

iptables --version
nft -a list ruleset

Wersja iptables informuje, który backend jest używany. Zbiór reguł iptables-nft i niezależnie zarządzana tabela natywna mogą współistnieć, więc wykaz z jednego frontendu nie jest automatycznie pełnym obrazem filtrowania. Sprawdź oba widoki przed wyborem łańcucha.

Znajdź łańcuch i regułę, która naprawdę robi drop

Przeczytaj hook wejścia, priorytet łańcucha i regułę, która odrzuca ten przepływ nasłuchu. Tabela inet może przenosić obie rodziny adresów, ale pojedyncza reguła nadal może pasować tylko do IPv4.

Weź jednego zatwierdzonego peera, używając jako przykładu 198.51.100.25 z zakresu dokumentacyjnego. Sprawdzony plik natywny mógłby umieścić zewnętrzne zezwolenie przed uchwytem 42:

insert rule inet filter input handle 42 iifname "eth0" ip saddr 198.51.100.25 udp dport { 500, 4500 } counter accept

Po przeglądzie zastąp rodzinę, tabelę, łańcuch, uchwyt, interfejs wejściowy i peera. Przykład używa formy umiejscowienia po uchwycie udokumentowanej dla nft 1.0.9 i należy do pliku wejściowego; cytowanie nawiasów klamrowych to osobna kwestia, gdy polecenie jest wpisywane interaktywnie.

Utrzymuj jasnego właściciela konfiguracji. Menedżer, który przebudowuje swoje reguły, może nadpisać zmianę w czasie działania, a skrypt startowy z zakodowanym na stałe nieaktualnym uchwytem albo zawiedzie, albo przypnie się do niewłaściwej reguły.

Zezwolenie jest ograniczone, drop jest końcowy

Werdykt zezwolenia kończy ocenę na swojej bieżącej ścieżce, ale później stosowany łańcuch bazowy nadal może odrzucić pakiet. Werdykt drop jest końcowy. Dlatego rosnący licznik zezwoleń nie jest dowodem, że przepływ się powiódł.

Sprawdź wszystkie istotne priorytety hook zamiast jednego łańcucha w izolacji. Pakiet może przejść filtr wejściowy i mimo to zostać odrzucony przez hook innej tabeli o innym priorytecie. Wymień każdy łańcuch bazowy, który może widzieć przepływ.

Ta reguła obejmuje tylko wymianę zewnętrznego nasłuchu. ESP enkapsulowane w transporcie, natywne ESP, peery IPv6 i odszyfrowany ruch wewnątrz tunelu potrzebują własnych polityk. To nie jest kompletna zapora VPN witryny.

Sprawdź plik, a następnie zweryfikuj wynik na żywo

Przed zastosowaniem uruchom kontrolę składni i transakcji na sprawdzonym pliku. Tryb kontroli informuje, czy nft potrafi przeanalizować i przygotować zmianę; nie stosuje jej i nie dowodzi, że inny hook przepuści pakiet. Plik pozostaje propozycją, dopóki właściciel go nie zastosuje:

nft -c -f reviewed-vpn-rule.nft

Zastosuj go przez kontrolowany proces właściciela i zachowaj dostęp do odzyskiwania. Jeśli reguła jest błędna, drop, który próbowałeś wyprzedzić, może też odciąć ścieżkę, której używasz do jej naprawy.

Po zmianie obserwuj nową próbę dozwolonego peera i sprawdź, że źródła spoza zatwierdzonego peera nadal są odrzucane. Przenieś trwałą regułę do menedżera, który posiada zbiór reguł, ponieważ uchwyty w czasie działania lokalizują bieżące obiekty, a nie identyfikują ich między rozruchami.

Powiązane artykuły