Utrzymaj stabilną politykę nftables, gdy pojawia się interfejs VPN
Reguły nftables oparte na nazwie przeżywają tunel, który pojawia się i znika, ale trasy i istniejące przepływy nie podążają automatycznie. Rozdziel właścicieli.
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.confLista 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 vpn0Lista 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ł.