nftables Paketfilter 1.0.0 Verëffentlechung

D'Verëffentlechung vu Paketfilter nftables 1.0.0 gouf publizéiert, vereenegt Paketfilterschnëttplazen fir IPv4, IPv6, ARP an Netzwierkbrécke (zich fir iptables, ip6table, arptables an ebtables ze ersetzen). D'Ännerungen erfuerderlech fir d'nftables 1.0.0 Verëffentlechung ze schaffen sinn am Linux 5.13 Kernel abegraff. Eng bedeitend Ännerung vun der Versiounsnummer ass net mat all fundamental Ännerungen assoziéiert, awer ass nëmmen eng Konsequenz vun der konsequenter Fortsetzung vun der Nummeréierung an der Dezimalnotatioun (déi viregt Verëffentlechung war 0.9.9).

Den nftables Package enthält User-Raum Paketfilterkomponenten, während d'Kernelniveau Aarbecht vum nf_tables Subsystem geliwwert gëtt, deen Deel vum Linux Kernel zënter der Verëffentlechung 3.13. De Kernelniveau bitt nëmmen eng generesch protokollonofhängeg Interface déi Basisfunktiounen ubitt fir Daten aus Päckchen ze extrahieren, Datenoperatiounen auszeféieren a Flowkontrolle.

D'Filterregele selwer a Protokollspezifesch Handler ginn a Benotzerraumbytecode kompiléiert, duerno gëtt dëse Bytecode an de Kernel mat der Netlink Interface gelueden an am Kernel an enger spezieller virtueller Maschinn ausgeführt wéi BPF (Berkeley Packet Filters). Dës Approche mécht et méiglech d'Gréisst vum Filtercode deen um Kernelniveau leeft wesentlech ze reduzéieren an all d'Funktioune vun de Parsingregelen an d'Logik fir mat Protokoller an de Benotzerraum ze réckelen.

Haaptinnovatiounen:

  • Ënnerstëtzung fir den "*" Mask Element gouf op Setlëschte bäigefüügt, déi ausgeléist gëtt fir all Packagen déi net ënner aner Elementer falen, déi am Set definéiert sinn. Dësch x {Kaart Blocklëscht {Typ ipv4_addr: Uerteel Fändelen Intervall Elementer = {192.168.0.0/16: akzeptéieren, 10.0.0.0/8: akzeptéieren, *: drop}} Kette y {Typ Filterhaken Prerouting Prioritéit 0; Politik akzeptéieren; ip saddr vmap @blocklist } }
  • Et ass méiglech Variablen aus der Kommandozeil ze definéieren mat der "--define" Optioun. # cat test.nft Dësch netdev x {Kette y {Typ Filter Hook ingress Apparater = $ Dev Prioritéit 0; Politik drop; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • A Kaartlëschten ass d'Benotzung vu konstante (stateful) Ausdréck erlaabt: Dësch inet Filter { map portmap { type inet_service : verdict counter elements = { 22 counter packets 0 bytes 0 : jump ssh_input, * counter packets 0 bytes 0 : drop } } Kette ssh_input {} Kette wan_input {tcp dport vmap @portmap} Kette Prerouting {Typ Filterhaken Prerouting Prioritéit Raw; Politik akzeptéieren; iif vmap {"lo": jump wan_input }}}
  • "Lëscht Haken" Kommando bäigefüügt fir eng Lëscht vun Handler fir eng gegebene Paketfamill ze weisen: # nft Lëscht Haken ip Apparat eth0 Famill ip { Hook ingress { +0000000010 Kette netdev xy [nf_tables] +0000000300 Kette inet mw [nf_hooken Input] } {-0000000100 CHIN0000000300P0000000225 CHIN_T_CE IP [NF_T_T_TATS]} Hoot Output {--4 Slisuruut {+0000000000TUPPLUTIUTIGEPPLAC0000000225_4M0000000225S] +4 CHATS ONPAT OUTPT OUTPEPTS]} Haken op{ +XNUMXSPOPTOPPUTIUTOPUTEPPXNUMX_XNUMXMXNUMXS] +XNUMX CHAK OFFT OUTPT OUTPTS OFFDS]} Haken op{ +XNUMX.IPUPPOPUTOGEPUTIPPLUDEPPXNUMX_XNUMXMXNUMXS] +XNUMX CHATS OFFT OUTPT OUTPTS OFFDS]} Hoffen op{ XNUMX SELLINUX_IPVXNUMX_Postroute}}
  • Queue Blocks erlaben jhash, symhash, an numgen Ausdrock ze kombinéieren fir Päckchen a Schlaangen am Benotzerraum ze verdeelen. ... Schlaang op Symhash Mod 65536 ... Schlaang Fändelen ëmgoen op numgen inc Mod 65536 ... Schlaang op jhash oif . meta mark mod 32 "Schlaang" kann och mat Kaart Lëschte kombinéiert ginn eng Schlaang am Benotzer Raum ze wielen baséiert op arbiträr Schlësselen. ... Schlaang Fändelen ëmgoen op d'Oifname Kaart { "eth0": 0, "ppp0": 2, "eth1": 2}
  • Et ass méiglech Variabelen auszebauen déi eng Setlëscht op verschidde Kaarten enthalen. definéieren Interfaces = {eth0, eth1} Dësch ip x {Kette y {Typ Filter Hook Input Prioritéit 0; Politik akzeptéieren; iifname vmap {lo: akzeptéieren, $ Interfaces: drop }}} # nft -f x.nft # nft Lëscht Regelset Dësch ip x {Kette y {Typ Filterhaken Input Prioritéit 0; Politik akzeptéieren; iifname vmap { "lo": acceptéieren, "eth0": drop, "eth1": drop } } }
  • Kombinéiere vu vmaps (Uerteelkaart) mat Intervalle ass erlaabt: # nft add rule xy tcp dport . IP saddr vmap {1025-65535. 192.168.10.2: akzeptéieren }
  • Vereinfacht Syntax fir NAT Mappings. Erlaabt Adressbereich ze spezifizéieren: ... snat op IP saddr Kaart { 10.141.11.4 : 192.168.2.2-192.168.2.4 } oder explizit IP Adressen a Ports: ... dnat op IP saddr Kaart { 10.141.11.4 : 192.168.2.3. . 80 } oder Kombinatioune vun IP Beräicher a Ports: ... dnat zu ip saddr . tcp dport Kaart {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }

Source: opennet.ru

Setzt e Commentaire