Publiceringen av paketfiltren nftables 1.0.0

Det har publicerats en version av paketfilter nftables 1.0.0, som standardiserar grÀnssnitten för paketfiltering för IPv4, IPv6, ARP och nÀtverksbroar (mÄl för att ersÀtta iptables, ip6tables, arptables och ebtables). NödvÀndiga Àndringar för att fÄ nftables 1.0.0 att fungera har inkluderats i Linux-kÀrnan 5.13. Den betydande versionsförÀndringen Àr inte kopplad till nÄgra radikala förÀndringar, utan Àr endast en följd av den kontinuerliga decimalnumreringen (den föregÄende versionen var 0.9.9).

Paketet nftables innehÄller komponenter för paketfilter som arbetar i anvÀndarrummet, medan nf_tables-systemet pÄ kÀrnnivÄ tillhandahÄller funktionen, vilket har varit en del av Linux-kÀrnan sedan version 3.13. PÄ kÀrnnivÄ tillhandahÄlls endast ett allmÀnt grÀnssnitt, oberoende av protokoll, som ger grundlÀggande funktioner för att extrahera data frÄn paket, utföra operationer med data och styra flödet.

SjÀlva filtreringsreglerna och protokollspecifika hanterare kompileras till bytekod i anvÀndarrummet, som sedan laddas in i kÀrnan via Netlink-grÀnssnittet och utförs i kÀrnan i en speciell en virtuell maskin, liknande BPF (Berkeley Packet Filters). Denna metod gör det möjligt att avsevÀrt minska storleken pÄ den filterkod som körs pÄ kÀrnnivÄ och flytta alla funktioner för tolkning av regler och logik som rör protokoll till anvÀndarrummet.

Huvudsakliga nyheter:

  • Support för maskelementet "*" har lagts till i set-listor, vilket aktiveras för alla paket som inte omfattas av andra element som definieras i uppsĂ€ttningen. 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 } }
  • Det har blivit möjligt att definiera variabler frĂ„n kommandoraden med hjĂ€lp av alternativet "—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
  • Permanent (stateful) uttryck tillĂ„ts i map-listor: 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 } } }
  • Kommandot «list hooks» har lagts till för att visa en lista över hanterare för det angivna paketfamiljen: # 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 blocken "queue" Ă€r det tillĂ„tet att kombinera uttrycken jhash, symhash och numgen för att fördela paket till köer i anvĂ€ndarrummet. 
 queue to symhash mod 65536 
 queue flags bypass to numgen inc mod 65536 
 queue to jhash oif . meta mark mod 32 "queue" kan ocksĂ„ kombineras med map-listor för att vĂ€lja kö i anvĂ€ndarrummet baserat pĂ„ godtyckliga nycklar. 
 queue flags bypass to oifname map { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • Det har lagts till möjlighet att avslöja variabler som inkluderar en set-lista i flera mappar. 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 } } }
  • Kombinering av vmap (verdict map) med intervall Ă€r tillĂ„ten: # nft add rule x y tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : accept }
  • Syntaxen för mappningar för NAT har förenklats. Det Ă€r tillĂ„tet att ange adressintervall: 
 snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } eller explicita IP-adresser och portar: 
 dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 . 80 } eller en kombination av IP-intervall och portar: 
 dnat to ip saddr . tcp dport map { 192.168.1.2 . 80 : 10.141.10.2-10.141.10.5 . 8888-8999 }

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster