Udgivelse af pakkefilteret nftables 1.0.0

Udgivet version 1.0.0 af pakkefilteret nftables, der standardiserer grænsefladerne til pakke filtrering for IPv4, IPv6, ARP og netværksbroer (målet er at erstatte iptables, ip6table, arptables og ebtables). Nødvendige ændringer for at understøtte nftables 1.0.0 er inkluderet i Linux-kernen 5.13. Den markante versionsændring skyldes ikke radikale ændringer, men er blot en fortsættelse af nummersystemet i decimal (den tidligere version var 0.9.9).

Nftables-pakken inkluderer komponenter af pakke filtreringssystemet, der kører i brugerområdet, mens nf_tables subsystemet i kernen håndterer operationer i Linux kernen fra version 3.13. I kernen tilbydes kun et generelt interface, der ikke er afhængigt af en specifik protokol og giver grundlæggende funktioner til at hente data fra pakker, udføre dataoperationer og styre strømmen.

Reglerne for filtrering og protokolspecifikke behandlere kompileres til bytekode i brugerområdet, hvorefter denne bytekode indlæses i kernen ved hjælp af Netlink-interfacet og udføres i kernen i en særlig virtuelle maskiner, der minder om BPF (Berkeley Packet Filters). Denne tilgang muliggør en betydelig reduktion i størrelsen af den filtrering, der kører i kernen, og flytter alle funktioner til parsing af regler og logik til håndtering af protokoller til brugerområdet.

Hovednyhederne:

  • Der er tilføjet understøttelse af elementmasken "*" i set-lister, som aktiveres for alle pakker, der ikke falder ind under andre elementer defineret i sættet. table x { map blocklist { type ipv4_addr : verdict flags interval elements = { 192.168.0.0/16 : accept, 10.0.0.0/8 : accept, * : drop } } chain y { type filter hook prerouting priority 0; policy accept; ip saddr vmap @blocklist } }
  • Muligheden for at definere variable fra kommandolinjen er blevet tilføjet ved hjælp af indstillingen "—define". # cat test.nft table netdev x { chain y { type filter hook ingress devices = $dev priority 0; policy drop; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • I map-lister er brugen af vedvarende (stateful) udtryk tilladt: table 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 } } chain ssh_input { } chain wan_input { tcp dport vmap @portmap } chain prerouting { type filter hook prerouting priority raw; policy accept; iif vmap { "lo" : jump wan_input } } }
  • Der er tilføjet kommandoen "list hooks" for at vise en liste over håndterere for det angivne protokolfamilie: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev x y [nf_tables] +0000000300 chain inet m w [nf_tables] } hook input { -0000000100 chain ip a b [nf_tables] +0000000300 chain inet m z [nf_tables] } hook forward { -0000000225 selinux_ipv4_forward 0000000000 chain ip a c [nf_tables] } hook output { -0000000225 selinux_ipv4_output } hook postrouting { +0000000225 selinux_ipv4_postroute } }
  • I blokke med «queue» er det tilladt at kombinere udtryk som jhash, symhash og numgen for at fordele pakker til køer i brugerrummet. … queue to symhash mod 65536 … queue flags bypass to numgen inc mod 65536 … queue to jhash oif . meta mark mod 32 «queue» kan også kombineres med map-lister for at vælge køen i brugerrummet baseret på vilkårlige nøgler. … queue flags bypass to oifname map { «eth0» : 0, «ppp0» : 2, «eth1» : 2 }
  • Muligheden for at ekspandere variabler, der inkluderer sæt- og map-opslag, er blevet givet mulighed for. define interfaces = { eth0, eth1 } table ip x { chain y { type filter hook input priority 0; policy accept; iifname vmap { lo : accept, $interfaces : drop } } } # nft -f x.nft # nft list ruleset table ip x { chain y { type filter hook input priority 0; policy accept; iifname vmap { «lo» : accept, «eth0» : drop, «eth1» : drop } } }
  • Det er tilladt at kombinere vmap (verdict map) med intervaller: # nft add rule x y tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : accept }
  • Syntaksen for NAT-mapping er blevet forenklet. Det er tilladt at angive IP-adresse-intervaller: … snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } eller eksplicitte IP-adresser og porte: … dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 . 80 } eller kombinationer af IP-intervaller og porte: … dnat to ip saddr . tcp dport map { 192.168.1.2 . 80 : 10.141.10.2-10.141.10.5 . 8888-8999 }

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster