ืžื”ื“ื•ืจืช ืžืกื ืŸ ืžื ื•ืช nftables 0.9.9

ืคื•ืจืกื ื”ืฉื—ืจื•ืจ ืฉืœ ืžืกื ืŸ ืžื ื•ืช nftables 0.9.9, ื”ืžืื—ื“ ืžืžืฉืงื™ ืกื™ื ื•ืŸ ืžื ื•ืช ืขื‘ื•ืจ IPv4, IPv6, ARP ื•ื’ืฉืจื™ ืจืฉืช (ืฉืžื˜ืจืชื ืœื”ื—ืœื™ืฃ iptables, ip6table, arptables ื•-ebtables). ื‘ืžืงื‘ื™ืœ, ืคื•ืจืกืžื” ื”ืฉื—ืจื•ืจ ืฉืœ ื”ืกืคืจื™ื™ื” ื”ื ืœื•ื•ื™ืช libnftnl 1.2.0, ื”ืžืกืคืงืช API ื‘ืจืžื” ื ืžื•ื›ื” ืœืื™ื ื˜ืจืืงืฆื™ื” ืขื ืชืช-ื”ืžืขืจื›ืช nf_tables. ื”ืฉื™ื ื•ื™ื™ื ื”ื ื“ืจืฉื™ื ื›ื“ื™ ืฉื”ื’ืจืกื” ืฉืœ nftables 0.9.9 ืชืขื‘ื•ื“ ื›ืœื•ืœื™ื ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก 5.13-rc1.

ื—ื‘ื™ืœืช nftables ื›ื•ืœืœืช ืจื›ื™ื‘ื™ ืžืกื ืŸ ืžื ื•ืช ื”ืคื•ืขืœื™ื ื‘ื—ืœืœ ื”ืžืฉืชืžืฉ, ื‘ืขื•ื“ ืฉื”ืขื‘ื•ื“ื” ื‘ืจืžืช ื”ืœื™ื‘ื” ืžืกื•ืคืงืช ืขืœ ื™ื“ื™ ืชืช-ื”ืžืขืจื›ืช nf_tables, ืฉื”ื™ื™ืชื” ื—ืœืง ืžืœื™ื‘ืช ืœื™ื ื•ืงืก ืžืื– ื’ืจืกื” 3.13. ืจืžืช ื”ืงืจื ืœ ืžืกืคืงืช ืจืง ืžืžืฉืง ื’ื ืจื™ ื‘ืœืชื™ ืชืœื•ื™ ื‘ืคืจื•ื˜ื•ืงื•ืœ ื”ืžืกืคืง ืคื•ื ืงืฆื™ื•ืช ื‘ืกื™ืกื™ื•ืช ืœื—ื™ืœื•ืฅ ื ืชื•ื ื™ื ืžืžื ื•ืช, ื‘ื™ืฆื•ืข ืคืขื•ืœื•ืช ื ืชื•ื ื™ื ื•ื‘ืงืจืช ื–ืจื™ืžื”.

ื›ืœืœื™ ื”ืกื™ื ื•ืŸ ืขืฆืžื ื•ื”ืžื˜ืคืœื™ื ื”ืกืคืฆื™ืคื™ื™ื ืœืคืจื•ื˜ื•ืงื•ืœ ืžื•ืจื›ื‘ื™ื ืœืชื•ืš bytecode ืฉืœ ืžืจื—ื‘ ื”ืžืฉืชืžืฉ, ื•ืœืื—ืจ ืžื›ืŸ ืงื•ื“ ื‘ื™ืช ื–ื” ื ื˜ืขืŸ ืœืชื•ืš ื”ืœื™ื‘ื” ื‘ืืžืฆืขื•ืช ืžืžืฉืง Netlink ื•ืžื‘ื•ืฆืข ื‘ืงืจื ืœ ื‘ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ืžื™ื•ื—ื“ืช ื”ื“ื•ืžื” ืœ-BPF (Berkeley Packet Filters). ื’ื™ืฉื” ื–ื• ืžืืคืฉืจืช ืœื”ืงื˜ื™ืŸ ืžืฉืžืขื•ืชื™ืช ืืช ื’ื•ื“ืœ ืงื•ื“ ื”ืกื™ื ื•ืŸ ื”ืคื•ืขืœ ื‘ืจืžืช ื”ืงืจื ืœ ื•ืœื”ืขื‘ื™ืจ ืืช ื›ืœ ื”ืคื•ื ืงืฆื™ื•ืช ืฉืœ ื—ื•ืงื™ ื”ื ื™ืชื•ื— ื•ื”ื”ื™ื’ื™ื•ืŸ ืฉืœ ืขื‘ื•ื“ื” ืขื ืคืจื•ื˜ื•ืงื•ืœื™ื ืœืžืจื—ื‘ ื”ืžืฉืชืžืฉ.

ื—ื™ื“ื•ืฉื™ื ืขื™ืงืจื™ื™ื:

  • ื”ื•ื˜ืžืขื” ื”ื™ื›ื•ืœืช ืœื”ืขื‘ื™ืจ ืืช ืขื™ื‘ื•ื“ ื˜ื‘ืœืช ื”ื–ืจื™ืžื” ืœืฆื“ ืžืชืื ื”ืจืฉืช, ืžื•ืคืขืœืช ื‘ืืžืฆืขื•ืช ื”ื“ื’ืœ 'offload'. Flowtable ื”ื•ื ืžื ื’ื ื•ืŸ ืœืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ื ืชื™ื‘ ื”ืคื ื™ื™ืช ื”ื—ื‘ื™ืœื•ืช, ืฉื‘ื• ื”ืžืขื‘ืจ ื”ืžืœื ืฉืœ ื›ืœ ืฉืจืฉืจืื•ืช ืขื™ื‘ื•ื“ ื”ื›ืœืœื™ื ืžื•ื—ืœ ืจืง ืขืœ ื”ื—ื‘ื™ืœื” ื”ืจืืฉื•ื ื”, ื•ื›ืœ ืฉืืจ ื”ื—ื‘ื™ืœื•ืช ื‘ื–ืจื™ืžื” ืžื•ืขื‘ืจื•ืช ื™ืฉื™ืจื•ืช. table ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; ืงื‘ืœืช ืžื“ื™ื ื™ื•ืช; ip protocol { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; ืงื‘ืœืช ืžื“ื™ื ื™ื•ืช; oifname "wan" ืžืกื›ืช } }
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืฆื™ืจื•ืฃ ื“ื’ืœ ื‘ืขืœื™ื ืœื˜ื‘ืœื” ื›ื“ื™ ืœื”ื‘ื˜ื™ื— ืฉื™ืžื•ืฉ ื‘ืœืขื“ื™ ื‘ื˜ื‘ืœื” ืขืœ ื™ื“ื™ ืชื”ืœื™ืš. ื›ืืฉืจ ืชื”ืœื™ืš ืžืกืชื™ื™ื, ื”ื˜ื‘ืœื” ื”ืžืฉื•ื™ื›ืช ืืœื™ื• ื ืžื—ืงืช ืื•ื˜ื•ืžื˜ื™ืช. ืžื™ื“ืข ืขืœ ื”ืชื”ืœื™ืš ืžื•ืฆื’ ื‘-regels dump ื‘ืฆื•ืจื” ืฉืœ ื”ืขืจื”: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; ืงื‘ืœืช ืžื“ื™ื ื™ื•ืช; ืžื ื•ืช ืžื•ื ื” 1 ื‘ืชื™ื 309 } }
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžืคืจื˜ IEEE 802.1ad (VLAN stacking ืื• QinQ), ื”ืžื’ื“ื™ืจ ืืžืฆืขื™ ืœื”ื—ืœืคืช ืชื’ื™ VLAN ืžืจื•ื‘ื™ื ืœืžืกื’ืจืช Ethernet ืื—ืช. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื‘ื“ื•ืง ืืช ืกื•ื’ ืžืกื’ืจืช Ethernet ื—ื™ืฆื•ื ื™ืช 8021ad ื•-vlan id=342, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืžื‘ื ื” ... ether type 802.1ad vlan id 342 ื›ื“ื™ ืœื‘ื“ื•ืง ืืช ื”ืกื•ื’ ื”ื—ื™ืฆื•ื ื™ ืฉืœ ืžืกื’ืจืช Ethernet 8021ad/vlan id=1, ืžืงื•ื ื ืช 802.1 q/vlan id=2 ื•ืขื•ื“ ืžืขื˜ืคืช ืžื ื•ืช IP: ... ether type 8021ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip counter
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื ื™ื”ื•ืœ ืžืฉืื‘ื™ื ื‘ืืžืฆืขื•ืช ื”ื”ื™ืจืจื›ื™ื” ื”ืžืื•ื—ื“ืช cgroups v2. ื”ื”ื‘ื“ืœ ื”ืขื™ืงืจื™ ื‘ื™ืŸ cgroups v2 ื•- v1 ื”ื•ื ื”ืฉื™ืžื•ืฉ ื‘ื”ื™ืจืจื›ื™ื™ืช cgroups ืžืฉื•ืชืคืช ืขื‘ื•ืจ ื›ืœ ืกื•ื’ื™ ื”ืžืฉืื‘ื™ื, ื‘ืžืงื•ื ื”ื™ืจืจื›ื™ื•ืช ื ืคืจื“ื•ืช ืœื”ืงืฆืืช ืžืฉืื‘ื™ CPU, ืœื•ื•ื™ืกื•ืช ืฆืจื™ื›ืช ื–ื™ื›ืจื•ืŸ ื•ืขื‘ื•ืจ I/O. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื‘ื“ื•ืง ืื ื”ืื‘ ื”ืงื“ืžื•ืŸ ืฉืœ ืฉืงืข ื‘ืจืžื” ื”ืจืืฉื•ื ื” cgroupv2 ืžืชืื™ื ืœืžืกื›ืช "system.slice", ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืžื‘ื ื”: ... socket cgroupv2 level 1 "system.slice"
  • ื ื•ืกืคื” ื”ื™ื›ื•ืœืช ืœื‘ื“ื•ืง ืจื›ื™ื‘ื™ื ืฉืœ ืžื ื•ืช SCTP (ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ื ื“ืจืฉืช ืœื›ืš ืชื•ืคื™ืข ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก 5.14). ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื‘ื“ื•ืง ืื ื—ื‘ื™ืœื” ืžื›ื™ืœื” ื ืชื— ืขื ื”ืกื•ื’ 'ื ืชื•ื ื™ื' ื•ืฉื“ื” 'ืกื•ื’': ... ืงื™ื™ื ื ืชื•ื ื™ chunk sctp ... ืกื•ื’ ื ืชื•ื ื™ sctp chunk 0
  • ื‘ื™ืฆื•ืข ืคืขื•ืœืช ื˜ืขื™ื ืช ื”ื›ืœืœ ื”ื•ืืฅ ื‘ืขืจืš ืคื™ ืฉื ื™ื™ื ื‘ืืžืฆืขื•ืช ื”ื“ื’ืœ "-f". ื’ื ื”ืคืœื˜ ืฉืœ ืจืฉื™ืžืช ื”ื›ืœืœื™ื ื”ื•ืืฅ.
  • ืžืกื•ืคืง ื˜ื•ืคืก ืงื•ืžืคืงื˜ื™ ืœื‘ื“ื™ืงื” ืื ืกื™ื‘ื™ื•ืช ื“ื’ืœ ืžื•ื’ื“ืจื•ืช. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื‘ื“ื•ืง ืฉืกื™ื‘ื™ื•ืช ืžืฆื‘ ื”-snat ื•ื”-dnat ืื™ื ื ืžื•ื’ื“ืจื™ื, ื ื™ืชืŸ ืœืฆื™ื™ืŸ: ... ct status ! snat,dnat ื›ื“ื™ ืœื‘ื“ื•ืง ืฉื”-syn bit ืžื•ื’ื“ืจ ื‘-bitmask syn,ack: ... tcp flags syn / syn,ack ื›ื“ื™ ืœื‘ื“ื•ืง ืฉื”-fin ื•ื”-rst bits ืื™ื ื ืžื•ื’ื“ืจื™ื ื‘-bitmask syn,ack,fin,rst: ... tcp flags ! = fin,rst / syn,ack,fin,rst
  • ืืคืฉืจ ืืช ืžื™ืœืช ื”ืžืคืชื— "ืคืกืง ื“ื™ืŸ" ื‘ื”ื’ื“ืจื•ืช ืžืกื•ื’ ืกื˜/ืžืคื”: ื”ื•ืกืฃ ืžืคื” xm { ืกื•ื’ ืฉืœ iifname . ืคืจื•ื˜ื•ืงื•ืœ ip ื“ืคื•ืจื˜ ื”': ืคืกืง ื“ื™ืŸ;}

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”