Tunele są jednorazowe; polityka nie powinna być. W bramie Linux regułę nftables, która dopasowuje interfejs tunelu po nazwie, można załadować raz i obowiązuje ona za każdym razem, gdy ten interfejs się pojawia. Interfejs nadal ma cykl życia: jest tworzony, znika, a trasy i tłumaczenia wokół niego podążają własnym harmonogramem. Właśnie rozdzielenie tych właścicieli utrzymuje dostęp stabilnym podczas ponownego połączenia.

Dopasowanie po nazwie przeżywa interfejs

nftables oferuje numeryczne dopasowania indeksu interfejsu oraz dynamiczne dopasowania nazwy iifname i oifname. Reguły używające tych nazw ładują się czysto nawet wtedy, gdy urządzenie tunelu nie zostało jeszcze utworzone, czego dokładnie potrzebuje zestaw reguł przy starcie. Dopasowanie ustaje, jeśli interfejs zostanie przemianowany, i wraca, gdy nowy interfejs przejmie tę nazwę. Indeks numeryczny nie ma tej właściwości, dlatego forma nazwy jest zwykłym wyborem dla tunelu.

Nazwa jest kluczem dopasowania, a nie dowodem, kto jest po drugiej stronie. Uwierzytelnianie partnera pozostaje zadaniem VPN.

Przeczytaj łańcuch, zanim dodasz reguły

Zobacz, co zawiera teraz zestaw reguł i gdzie znalazłaby się nowa reguła, bo o wyniku decyduje kolejność.

nft list ruleset
nft -c -f /etc/nftables.conf

Lista pokazuje łańcuchy, reguły i uchwyty, a tryb sprawdzania weryfikuje plik kandydacki bez jego ładowania. Zezwolenie tylko dla tunelu umieszczone po wcześniejszej akceptacji tego samego przepływu niczego nie zmienia, bo wygrywa pierwsza pasująca reguła. Dlatego późna reguła może wyglądać poprawnie i nie mieć żadnego skutku. Przeczytaj łańcuch po kolei i potwierdź, że blokada ruchu od klienta do łącza nadrzędnego nadal poprzedza wszystko szersze.

Trasy, tłumaczenie i przepływy mają innych właścicieli

Obecność interfejsu nie tworzy tras i nie uwierzytelnia partnera. To należy do menedżera VPN, a tłumaczenie ma trzeci cykl życia.

conntrack -L -s 10.20.0.0/24 | head
ip route show dev vpn0

Lista conntrack pokazuje istniejące przepływy z ich pierwotnymi i przetłumaczonymi wartościami, a lista tras pokazuje, co menedżer zainstalował dla interfejsu. Reguły NAT ustanawiają stan śledzenia połączenia przy pierwszym pakiecie, więc ustanowiony przepływ zachowuje swoje tłumaczenie nawet po zmianie reguły. Dlatego aktualizowana reguła i przepływ korzystający z nowej ścieżki to dwa różne stwierdzenia. Zdecyduj, które sesje muszą połączyć się ponownie, a niepowiązane przepływy zostaw w spokoju.

Zaakceptuj zimny start, utratę i odzyskiwanie

Przetestuj bramę z tunelem nieobecnym przy starcie, potem obecnym, a potem po przerwie i powrocie. Potwierdź, że zabronione przekazywanie pozostaje zablokowane, gdy brakuje tunelu, że nowy dozwolony przepływ działa po uwierzytelnieniu partnera i że odzyskiwanie nie wymaga czyszczenia niepowiązanego stanu. Nie usuwaj całego łańcucha POSTROUTING ani każdego wpisu conntrack jako akcji zatrzymania jednego profilu, bo dzielą je inne usługi. Zapisz, który komponent zmienił interfejs, trasę i politykę, a nie tylko to, że hak startowy zakończył się zerem.

Polityka, która przeżywa ponowne połączenie, to taka, której właściciele są nazwani, a reguły przetestowane z tunelem zarówno wyłączonym, jak i włączonym. Hak zgłaszający sukces dowodzi tylko, że hak się wykonał.

Powiązane artykuły