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

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

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

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

  • เบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบปเบ”เบฅเบฐเบšเบฝเบšเป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก, เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบ "-o" ("--optimize") เปƒเปเปˆ, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบšเบ•เบปเบงเป€เบฅเบทเบญเบ "--check" เป€เบžเบทเปˆเบญเบเบงเบ”เบชเบญเบšเปเบฅเบฐเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบเบปเบ”เบฅเบฐเบšเบฝเบšเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เป‚เบซเบฅเบ”เบกเบฑเบ™. . เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบปเบกเบ—เบปเบšเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบปเบ”เบฅเบฐเบšเบฝเบš: 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.5 เบเบญเบกเบฎเบฑเบš ip saddr 1.1.1.1 2.2.2.2ip da .2.2.2.2 เบเบญเบกเบฎเบฑเบš ip saddr 3.3.3.3 ip daddr XNUMX เบซเบผเบธเบ”เบฅเบปเบ‡

    เบˆเบฐเบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป€เบ›เบฑเบ™ meta iifname . ip saddr. ip daddr { eth1 . 1.1.1.1. 2.2.2.3, eth1 . 1.1.1.2. 2.2.2.5 } เบเบญเบกเบฎเบฑเบš ip saddr . ip daddr vmap { 1.1.1.1 . 2.2.2.2 : เบเบญเบกเบฎเบฑเบš, 2.2.2.2 . 3.3.3.3 : เบซเบผเบธเบ” }

    เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ™เบณเปƒเบŠเป‰: #nft -c -o -f ruleset.test เบเบฒเบ™เบฅเบงเบกเบ•เบปเบง: ruleset.nft:16:3-37: ip daddr 192.168.0.1 counter accept ruleset.nft:17:3-37: ip daddr 192.168.0.2 counter accept ruleset.nft:18:3-37: ip daddr 192.168.0.3 counter accept into: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } counter packets 0 bytes 0 accept

  • เบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบ ip เปเบฅเบฐ tcp, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš chunks sctp: set s5 { typeof ip option ra เบญเบปเบ‡เบ›เบฐเบเบญเบšเบกเบนเบ™เบ„เปˆเบฒ = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } chain c5 { ip option ra value @s5 accept } chain c7 { sctp chunk init num-inbound-streams @s7 accept }
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบ TCP fastopen, md5sig เปเบฅเบฐ mptcp.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ›เบฐเป€เบžเบ”เบเปˆเบญเบ mp-tcp เปƒเบ™เปเบœเบ™เบ—เบตเปˆ: tcp option mptcp subtype 1
  • เบ›เบฑเบšเบ›เบธเบ‡เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบ”เป‰เบฒเบ™เบ‚เป‰เบฒเบ‡เบ‚เบญเบ‡ kernel.
  • เบ•เบญเบ™เบ™เบตเป‰ Flowtable เบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเปเบšเบš JSON.
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ "เบ›เบฐเบ•เบดเป€เบชเบ”" เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเบเบญเบš Ethernet เป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 เบ›เบฐเบ•เบดเป€เบชเบ”

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

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