เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบเบญเบ‡ packet nftables 0.9.9 เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ, unifying packet filtering interfaces เบชเปเบฒเบฅเบฑเบš IPv4, IPv6, ARP เปเบฅเบฐเบ‚เบปเบงเป€เบ„เบทเบญเบ‚เปˆเบฒเบ (เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบžเบทเปˆเบญเบ—เบปเบ”เปเบ—เบ™ iptables, ip6table, arptables เปเบฅเบฐ ebtables). เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบเบฒเบ™เบ›เปˆเบญเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” companion libnftnl 1.2.0 เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ, เบชเบฐเบซเบ™เบญเบ‡ API เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบฅเบฐเบšเบปเบšเบเปˆเบญเบ nf_tables. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบญเบ nftables 0.9.9 เป€เบฎเบฑเบ”เบงเบฝเบเปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™ Linux kernel 5.13-rc1.

เบŠเบธเบ” nftables เบ›เบฐเบเบญเบšเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบšเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบฅเบฐเบ”เบฑเบš kernel เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป‚เบ”เบเบฅเบฐเบšเบปเบšเบเปˆเบญเบ nf_tables, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ Linux kernel เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบ›เปˆเบญเบ 3.13. เบฅเบฐเบ”เบฑเบš kernel เบชเบฐเบซเบ™เบญเบ‡เบžเบฝเบ‡เปเบ•เปˆเบชเปˆเบงเบ™เบ•เบดเบ”เบ•เปเปˆเปเบšเบšเป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเปเบžเบฑเบเป€เบเบฑเบ”, เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป„เบซเบผ.

เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เปเบฅเบฐเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™เป„เบ”เป‰เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ bytecode เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ bytecode เบ™เบตเป‰เบ–เบทเบเป‚เบซเบฅเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ kernel เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš Netlink เปเบฅเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™ kernel เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual เบžเบดเป€เบชเบ”เบ—เบตเปˆเบฅเบฐเบ™เบถเบเป€เบ–เบดเบ‡ BPF (Berkeley Packet Filters). เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบฅเบปเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเปเบเปˆเบ™เปเบฅเบฐเบเป‰เบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เปเบเบเปเบฅเบฐเป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป‚เบ›เป‚เบ•เบ„เบญเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰.

เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒเบ•เบปเป‰เบ™เบ•เป:

  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบเป‰เบฒเบเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™ flowtable เป„เบ›เบซเบฒเบ”เป‰เบฒเบ™ adapter เป€เบ„เบทเบญเบ‚เปˆเบฒเบเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเปƒเบŠเป‰เบ—เบธเบ‡ '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" masquerade } }
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ—เบธเบ‡เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป‚เบ”เบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™. เป€เบกเบทเปˆเบญเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบขเบธเบ”เบ•เบด, เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบกเบฑเบ™เบˆเบฐเบ–เบทเบเบฅเบถเบšเป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบš dump เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบ„เปเบฒเป€เบซเบฑเบ™: เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ ip x { # progname nft flags owner chain y { type filter hook input priority filter; เบ™เบฐเป‚เบเบšเบฒเบเบเบญเบกเบฎเบฑเบš; counter packets 1 bytes 309 } }
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบ‚เบญเบ‡ IEEE 802.1ad (VLAN stacking เบซเบผเบท QinQ), เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบงเบดเบ—เบตเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ—เบฑเบš VLAN เบซเบผเบฒเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบญเบš Ethernet เบ”เบฝเบง. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบญเบš Ethernet เบžเบฒเบเบ™เบญเบ 8021ad เปเบฅเบฐ vlan id=342, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ ... เบ›เบฐเป€เบžเบ” ether 802.1ad vlan id 342 เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบ›เบฐเป€เบžเบ”เบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡เบเบญเบš Ethernet 8021ad / vlan id=1, nested 802.1. q/vlan id=2 เปเบฅเบฐเป€เบžเบตเปˆเบกเป€เบ•เบตเบก IP packet encapsulation: ... ether type 8021ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip counter
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป‚เบ”เบเปƒเบŠเป‰ cgroups hierarchy unified v2. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ—เบตเปˆ เบชเบณ เบ„เบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ cgroups v2 เปเบฅเบฐ v1 เปเบกเปˆเบ™เบเบฒเบ™เปƒเบŠเป‰ เบฅเบณ เบ”เบฑเบš cgroups เบ—เบปเปˆเบงเป„เบ› เบชเบณ เบฅเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบธเบเบ›เบฐเป€เบžเบ”, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบฅเบณเบ”เบฑเบšเบŠเบฑเป‰เบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ เบชเบณ เบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ CPU, เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบ„เบงเบฒเบก เบˆเบณ, เปเบฅเบฐ เบชเบณ เบฅเบฑเบš I / O. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบšเบฑเบ™เบžเบฐเบšเบธเบฅเบธเบ”เบ‚เบญเบ‡เป€เบ•เบปเป‰เบฒเบฎเบฑเบšเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ—เปเบฒเบญเบดเบ” cgroupv2 เบเบปเบ‡เบเบฑเบšเบซเบ™เป‰เบฒเบเบฒเบ "system.slice", เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡: ... socket cgroupv2 เบฅเบฐเบ”เบฑเบš 1 "system.slice"
  • เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ” SCTP (เบซเบ™เป‰เบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰เบˆเบฐเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ Linux 5.14 kernel). เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ packet เบกเบต chunk เบ—เบตเปˆเบกเบต type 'data' เปเบฅเบฐ field 'type': ... sctp chunk data available ... sctp chunk data type 0
  • เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป‚เบซเบผเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเป„เบ”เป‰เบ–เบทเบเป€เบฅเบฑเปˆเบ‡เบ›เบฐเบกเบฒเบ™เบชเบญเบ‡เป€เบ—เบทเปˆเบญเป‚เบ”เบเปƒเบŠเป‰เบ—เบธเบ‡ "-f". เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบฅเบฑเบ”.
  • เปเบšเบšเบŸเบญเบกเบ—เบตเปˆเบซเบ™เบฒเปเบซเบ™เป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบงเปˆเบฒเบšเบดเบ”เบ—เบธเบ‡เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰. เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹, เป€เบžเบทเปˆเบญโ€‹เบเบงเบ”โ€‹เบเบฒโ€‹เป€เบšเบดเปˆเบ‡โ€‹เบงเปˆเบฒ bits เบชเบฐโ€‹เบ–เบฒโ€‹เบ™เบฐโ€‹เบžเบฒเบš snat เปเบฅเบฐ dnat เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹, เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบงเปˆเบฒโ€‹: ... เบชเบฐโ€‹เบ–เบฒโ€‹เบ™เบฐโ€‹เบเบฒเบ™ ct ! snat,dnat เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ syn bit เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™ bitmask syn, ack: ... tcp flags syn / syn,ack เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ fin เปเบฅเบฐ rst bits เบšเปเปˆเป„เบ”เป‰เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ bitmask syn,ack,fin,rst: ... tcp เบ—เบธเบ‡ = fin,rst / syn,ack,fin,rst
  • เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰ "เบ„เปเบฒโ€‹เบ•เบฑเบ”โ€‹เบชเบดเบ™โ€‹" เบ„เปเบฒโ€‹เบ™เบดโ€‹เบเบฒเบกโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ” / เบ›เบฐโ€‹เป€เบžเบ”โ€‹เปเบœเบ™โ€‹เบ—เบตเปˆโ€‹: เป€เบžเบตเปˆเบกโ€‹เปเบœเบ™โ€‹เบ—เบตเปˆ xm { typeof iifname . ip protocol th dport : verdict ;}

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™