nftables
Oryginalni autorzy | Projekt Netfilter |
---|---|
Deweloperzy | Projekt Netfilter |
Wersja stabilna | 1.0.5 / 9 sierpnia 2022
|
Wersja podglądu | |
Magazyn | |
Napisane w | C |
System operacyjny | Linuks |
Platforma | filtr sieciowy |
Typ | filtrowanie pakietów |
Licencja | GPLv2 |
Strona internetowa |
nftables to podsystem jądra Linuksa zapewniający filtrowanie i klasyfikację pakietów sieciowych / datagramów / ramek. Jest dostępny od wydania jądra Linuksa 3.13 19 stycznia 2014 r.
nftables zastępuje starsze części iptables Netfilter . Wśród zalet nftables w porównaniu z iptables jest mniejsze powielanie kodu i łatwiejsze rozszerzanie na nowe protokoły. nftables jest konfigurowany za pomocą narzędzia przestrzeni użytkownika nft , podczas gdy starsze narzędzia są konfigurowane za pomocą narzędzi iptables , ip6tables , arptables i ebtables frameworks.
nftables wykorzystuje elementy składowe infrastruktury Netfilter , takie jak istniejące zaczepy do stosu sieciowego, system śledzenia połączeń, komponent kolejkowania przestrzeni użytkownika i podsystem logowania.
nft
Składnia wiersza poleceń
Polecenie odrzucania pakietów z docelowym adresem IP 1.2.3.4
:
nft add rule ip filter output ip daddr 1.2.3.4 drop
Zauważ, że nowa składnia znacznie różni się od składni iptables, w której zapisano by tę samą regułę:
iptables -A WYJŚCIE -d 1.2.3.4 -j USUŃ
Nowa składnia może wydawać się bardziej szczegółowa, ale jest też znacznie bardziej elastyczna. nftables zawiera zaawansowane struktury danych , takie jak słowniki, mapy i konkatenacje, które nie istnieją w iptables. Wykorzystanie ich może znacznie zmniejszyć liczbę łańcuchów i reguł potrzebnych do wyrażenia danego projektu filtrowania pakietów.
Narzędzie iptables-translate
może być użyte do przetłumaczenia wielu istniejących reguł iptables na równoważne reguły nftables. Debian 10 (Buster) , wśród innych dystrybucji Linuksa , używa nftables wraz z iptables-translate
jako domyślnego backendu filtrowania pakietów.
Historia
Projekt został po raz pierwszy publicznie zaprezentowany na Netfilter Workshop 2008 przez Patricka McHardy'ego z Netfilter Core Team. Pierwsza wersja zapoznawcza implementacji jądra i przestrzeni użytkownika została wydana w marcu 2009 roku. Chociaż narzędzie to zostało nazwane „największą zmianą w zaporze sieciowej Linuksa od czasu wprowadzenia iptables w 2001 roku”, nie spotkało się z dużym zainteresowaniem prasy. Znany haker Fiodor Vaskovich (Gordon Lyon) powiedział, że „nie może się doczekać jego ogólnego wydania w głównym nurcie jądra Linuksa ”.
Projekt pozostawał w fazie alfa, a oficjalna strona internetowa została usunięta w 2009 roku. W marcu 2010 roku e-maile od autora na listach mailingowych projektu wskazywały, że projekt jest nadal aktywny i zbliża się do wersji beta, ale ta ostatnia nigdy nie została oficjalnie wysłana. W październiku 2012 Pablo Neira Ayuso zaproponował warstwę kompatybilności dla iptables i zapowiedział możliwe włączenie projektu do jądra głównego nurtu.
W dniu 16 października 2013 r. Pablo Neira Ayuso przesłał żądanie ściągnięcia rdzenia nftables do głównego drzewa jądra Linuksa . Został włączony do głównej linii jądra 19 stycznia 2014 r. Wraz z wydaniem jądra Linuksa w wersji 3.13.
Przegląd
do jądra Linuksa prostą maszynę wirtualną , która jest w stanie wykonać kod bajtowy w celu sprawdzenia pakietu sieciowego i podjęcia decyzji o sposobie obsługi tego pakietu. Operacje realizowane przez tę maszynę wirtualną są celowo podstawowe. Może pobierać dane z samego pakietu, przeglądać powiązane metadane (na przykład interfejs przychodzący) i zarządzać danymi śledzenia połączeń. Operatory arytmetyczne, bitowe i porównania mogą służyć do podejmowania decyzji na podstawie tych danych. Maszyna wirtualna może również manipulować zestawami danych (zwykle adresami IP), umożliwiając zastąpienie wielu operacji porównywania pojedynczym wyszukiwaniem zestawu.
Opisana powyżej organizacja jest sprzeczna z kodem zapory ogniowej iptables, który ma świadomość protokołów wbudowaną tak głęboko w logikę, że kod musiał być czterokrotnie replikowany — dla mostkowania IPv4, IPv6 , ARP i Ethernet — jako zapora ogniowa silniki są zbyt specyficzne dla protokołów, aby można je było używać w sposób ogólny.
ABI jądra Linuksa , redukcja powielania kodu , ulepszone raportowanie błędów oraz wydajniejsze wykonywanie, przechowywanie i przyrostowe zmiany reguł filtrowania. Tradycyjnie używane , , i (odpowiednio do mostkowania IPv4, IPv6, ARP i Ethernet) mają zostać zastąpione przez jako pojedyncza, ujednolicona implementacja, zapewniająca konfigurację zapory na maszynie wirtualnej w jądrze.
nftables oferuje również ulepszony interfejs API przestrzeni użytkownika, który umożliwia atomową wymianę jednej lub więcej reguł zapory sieciowej w ramach jednej transakcji Netlink . Przyspiesza to zmiany konfiguracji zapory w przypadku konfiguracji z dużymi zestawami reguł; może również pomóc w uniknięciu warunków wyścigu podczas wprowadzania zmian w przepisach. nftables zawiera również funkcje kompatybilności ułatwiające przejście z poprzednich zapór ogniowych, narzędzia wiersza poleceń do konwersji reguł w formacie iptables oraz kompatybilne ze składnią wersje poleceń iptables, które korzystają z zaplecza nftables.
Linki zewnętrzne
- Oficjalna strona internetowa
- nftables Repozytorium kodu źródłowego Git
- Dokumentacja nftables HOWTO
- Pierwsze wydanie nftables (2009-03-18)
- Pablo Neira Ayuso: [RFC] z powrotem na nf_tables (plus warstwa kompatybilności)
- nftables szybkie HOWTO
- nftables w ArchWiki i Gentoo Wiki
- Corbet, Jonathan (2009-03-24). „nftables: nowy silnik filtrowania pakietów” . LWN.net .
- McHardy, Patrick (2008-09-30). nftables – następca iptables, ip6tables, ebtables i arptables ( ODP ) . Warsztaty Netfilter 2008 .
- nft_compat rozszerzony o obsługę rozszerzeń ebtables (połączony z jądrem Linuksa 4.0)