เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบเบญเบ‡ packet nftables 1.0.6 เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ, unifying packet filtering interfaces เบชเปเบฒเบฅเบฑเบš IPv4, IPv6, ARP เปเบฅเบฐเบ‚เบปเบงเป€เบ„เบทเบญเบ‚เปˆเบฒเบ (เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบžเบทเปˆเบญเบ—เบปเบ”เปเบ—เบ™ iptables, ip6table, arptables เปเบฅเบฐ ebtables). เบŠเบธเบ” nftables เบ›เบฐเบเบญเบšเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบšเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบฅเบฐเบ”เบฑเบš kernel เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป‚เบ”เบเบฅเบฐเบšเบปเบšเบเปˆเบญเบ nf_tables, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ Linux kernel เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบ›เปˆเบญเบ 3.13. เบฅเบฐเบ”เบฑเบš kernel เบชเบฐเบซเบ™เบญเบ‡เบžเบฝเบ‡เปเบ•เปˆเบชเปˆเบงเบ™เบ•เบดเบ”เบ•เปเปˆเปเบšเบšเป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเปเบžเบฑเบเป€เบเบฑเบ”, เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป„เบซเบผ.

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

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เบปเป‰เบ™เบ•เป:

  • เบ•เบปเบงเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบปเบ”เบฅเบฐเบšเบฝเบš, เป€เบญเบตเป‰เบ™เบงเปˆเบฒเป€เบกเบทเปˆเบญเบ•เบปเบงเป€เบฅเบทเบญเบ "-o/-optimize" เบ–เบทเบเบฅเบฐเบšเบธ, เบกเบตเบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเป‚เบ”เบเบเบฒเบ™เบฅเบงเบกเบžเบงเบเบกเบฑเบ™เปเบฅเบฐเบ›เปˆเบฝเบ™เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เปเบœเบ™เบ—เบตเปˆเปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบฅเบฒเบเบเบฒเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบš # cat ruleset.nft เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ ip x { chain y { type filter hook input priority filter; เบ™เบฐเป‚เบเบšเบฒเบเบซเบผเบธเบ”เบฅเบปเบ‡; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 เบเบญเบกเบฎเบฑเบš meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 เบเบญเบกเบฎเบฑเบš meta iifname eth1 ip saddr 1.1.1.2 ip saddr meta 2.2.3.0eth24. .1 ip daddr 1.1.1.2-2.2.4.0 เบเบญเบกเบฎเบฑเบš meta iifname eth2.2.4.10 ip saddr 2 ip daddr 1.1.1.3 เบเบญเบกเบฎเบฑเบš } } เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ” "nft -o -c -f ruleset.nft" เบˆเบฐเบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: ruleset . nft:2.2.2.5:4-17: meta iifname eth74 ip saddr 1 ip daddr 1.1.1.1 เบเบญเบกเบฎเบฑเบš ruleset.nft:2.2.2.3:5-17: meta iifname eth74 ip saddr 1 ip daddr 1.1.1.2 เบเบญเบกเบฎเบฑเบšเบเบปเบ”เบฅเบฐเบšเบฝเบš.nft. : 2.2.2.4:6-17: meta iifname eth77 ip saddr 1 ip daddr 1.1.1.2/2.2.3.0 เบเบญเบกเบฎเบฑเบš ruleset.nft:24:7-17: meta iifname eth83 ip saddr 1 ip daddr 1.1.1.2. เบเบญเบกเบฎเบฑเบš ruleset.nft:2.2.4.0:2.2.4.10-8: meta iifname eth17 ip saddr 74 ip daddr 2 เบเบญเบกเบฎเบฑเบšเป€เบ‚เบปเป‰เบฒเปƒเบ™: iifname . ip saddr. ip daddr { eth1.1.1.3 . 2.2.2.5. 1, eth1.1.1.1 . 2.2.2.3. 1, eth1.1.1.2 . 2.2.2.4. 1/1.1.1.2, eth2.2.3.0 . 24. 1-1.1.1.2, eth2.2.4.0. 2.2.4.10. 2 } เบเบญเบกเบฎเบฑเบš
  • optimizer เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบ‡เปˆเบฒเบเป†เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบซเบ™เบฒเปเบซเบ™เป‰เบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: เบเบปเบ”เบฅเบฐเบšเบฝเบš: # cat ruleset.nft เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ ip filter { chain input { type filter hook input priority filter; เบ™เบฐเป‚เบเบšเบฒเบเบซเบผเบธเบ”เบฅเบปเบ‡; iifname "lo" เบเบญเบกเบฎเบฑเบšเบฅเบฑเบ” ct เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™, เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบญเบกเบฎเบฑเบšเบ„เปเบฒเบ„เบดเบ”เป€เบซเบฑเบ™ "เปƒเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบฒเบˆเบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเป„เบงเป‰เบงเบฒเบ‡เปƒเบˆ" iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp 123 เบเบดเบฅเบฒ iifname "enp32768s65535f0" ip saddr { 31, 6 } ip daddr 64.59.144.17 udp sport 64.59.150.133 udp dport 10.0.0.149-53 เบเบญเบกเบฎเบฑเบš } "}" -nftc executing เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš : ruleset.nft:32768:65535-6: iifname "enp22s149f0" ip saddr { 31, 6 } ip daddr 209.115.181.102 udp sport 216.197.228.230-port10.0.0.149-123 } ip daddr 32768 udp sport 65535-port7-22np. 143 0 :ifname "enp31s6f64.59.144.17" ip saddr { 64.59.150.133, 10.0.0.149 } ip daddr 53 udp sport 32768 udp dport 65535-0 เบเบญเบกเบฎเบฑเบšเป€เบ‚เบปเป‰เบฒเปƒเบ™: iifname . ip saddr. ip เบžเปเปˆ. เบเบดเบฅเบฒ udp. udp dport { enp31s6f209.115.181.102 . 10.0.0.149. 123. เป‘เป’เป“. 32768-65535, enp0s31f6. 216.197.228.230. 10.0.0.149. เป‘เป’เป“. 123-32768, enp65535s0f31. 6. 64.59.144.17. 10.0.0.149. 53-32768, enp65535s0f31. 6. 64.59.150.133. 10.0.0.149. 53-32768 } เบเบญเบกเบฎเบฑเบš
  • เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡ bytecode เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบกเป„เบฅเบเบฐเบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡ byte เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เป€เบŠเบฑเปˆเบ™ IPv4 (เบ„เปเบฒเบชเบฑเปˆเบ‡ byte เป€เบ„เบทเบญเบ‚เปˆเบฒเบ) เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ meta (เบ„เปเบฒเบชเบฑเปˆเบ‡ byte เบฅเบฐเบšเบปเบš). เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ ip x { เปเบœเบ™เบ—เบตเปˆ w { typeof ip saddr . meta mark : verdict flags interval counter elements = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : เบเบญเบกเบฎเบฑเบš, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : เบเบญเบกเบฎเบฑเบš, } } chain k { type filter hook input priority filter; เบ™เบฐเป‚เบเบšเบฒเบเบซเบผเบธเบ”เบฅเบปเบ‡; ip saddr. meta mark vmap @w } }
  • เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ‚เบญเบ‡เป‚เบ›เบฃเป‚เบ•เบ„เบญเบ™เบ—เบตเปˆเบซเบฒเบเบฒเบเป€เบกเบทเปˆเบญเปƒเบŠเป‰เบชเบณเบ™เบงเบ™เบ”เบดเบš, เบ•เบปเบงเบขเปˆเบฒเบ‡: meta l4proto 91 @th,400,16 0x0 เบเบญเบกเบฎเบฑเบš
  • เบšเบฑเบ™เบซเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเบกเบตเป„เบฅเบเบฐเบซเปˆเบฒเบ‡เป„เบ”เป‰เบ–เบทเบเปเบเป‰เป„เบ‚เปเบฅเป‰เบง: insert rule x y tcp sport { 3478-3497, 16384-16387 } counter accept
  • JSON API เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เบ”เบตเบ‚เบถเป‰เบ™เป€เบžเบทเปˆเบญเบฅเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เบชเบฐเปœเบฑเบšเบชเบฐเปœเบธเบ™เบชเบณเบ™เบงเบ™เปƒเบ™เบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเบ•เบฑเป‰เบ‡ เปเบฅเบฐเปเบœเบ™เบ—เบตเปˆ.
  • เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเป„เบ›เบซเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” python nftables เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป‚เบซเบฅเบ”เบŠเบธเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เปƒเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบš ("-c") เปเบฅเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ™เบดเบเบฒเบกเบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡เบ•เบปเบงเปเบ›.
  • เบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เปเบฒเป€เบซเบฑเบ™เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบขเบนเปˆเปƒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰.
  • Byte rate limit เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบฐเบšเบธเบ„เปˆเบฒเบชเบนเบ™.

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

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