เบ•เบปเบงเบเบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ” nftables 0.9.9 เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเปเบฅเป‰เบง. เบกเบฑเบ™เบฅเบงเบกเบญเบดเบ™เป€เบ•เบตเป€เบŸเบ”เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบชเบณเบฅเบฑเบš IPv4, IPv6, ARP, เปเบฅเบฐเบšเบฃเบดเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบ (เปเบ™เปƒเบชเปˆเป€เบ›เบฑเบ™เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™ iptables, ip6table, arptables, เปเบฅเบฐ ebtables). เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” libnftnl 1.2.0 เบ—เบตเปˆเบกเบฒเบžเป‰เบญเบก, เป€เบŠเบดเปˆเบ‡เบชเบฐเปœเบญเบ‡ API เบฅเบฐเบ”เบฑเบšเบ•เปˆเบณเบชเบณเบฅเบฑเบšเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบฅเบฐเบšเบปเบšเบเปˆเบญเบ nf_tables, เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเบžเป‰เบญเบกเป†เบเบฑเบ™. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบณเบฅเบฑเบš nftables 0.9.9 เป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™ kernel. Linux 5.13-rc1.

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

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

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

  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบเป‰เบฒเบเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™ 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). ะะฐะฟั€ะธะผะตั€, ะดะปั ะฟั€ะพะฒะตั€ะบะธ ะฝะฐะปะธั‡ะธั ะฒ ะฟะฐะบะตั‚ะต chunk-ะฐ ั ั‚ะธะฟะพะผ โ€˜dataโ€™ ะธ ะฟะพะปะตะผ โ€˜typeโ€™: โ€ฆ sctp chunk data exists โ€ฆ 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

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster