แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แžแž˜แŸ’แžšแž„แž€แž‰แŸ’แž…แž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“ nftables 1.0.2

แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แž“แŸƒแžแž˜แŸ’แžšแž„แž€แž‰แŸ’แž…แž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“ nftables 1.0.2 แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž– แžŠแŸ„แž™แž”แž„แŸ’แžšแžฝแž”แž”แž„แŸ’แžšแžฝแž˜แž…แŸ†แžŽแžปแž…แž”แŸ’แžšแž‘แžถแž€แŸ‹แžแž˜แŸ’แžšแž„แž€แž‰แŸ’แž…แž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹ IPv4, IPv6, ARP แž“แžทแž„แžŸแŸ’แž–แžถแž“แž”แžŽแŸ’แžแžถแž‰ (แž˜แžถแž“แž‚แŸ„แž›แž”แŸ†แžŽแž„แž‡แŸ†แž“แžฝแžŸ iptables, ip6table, arptables แž“แžทแž„ ebtables) แŸ” แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž€แžถแžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™ nftables 1.0.2 แžŠแžพแž˜แŸ’แž”แžธแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžแŸ’แžšแžผแžœแž”แžถแž“แžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›แž“แŸ…แž€แŸ’แž“แžปแž„แžแžบแžŽแŸ‚แž›แž›แžธแž“แžปแž… 5.17-rc แŸ”

แž€แž‰แŸ’แž…แž”แŸ‹ nftables แžšแžฝแž˜แž˜แžถแž“แžŸแž˜แžถแžŸแž’แžถแžแžปแžแž˜แŸ’แžšแž„แž€แž‰แŸ’แž…แž”แŸ‹แžŠแŸ‚แž›แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แŸ’แž“แžปแž„แž…แž“แŸ’แž›แŸ„แŸ‡แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ แžแžŽแŸˆแž–แŸแž›แžŠแŸ‚แž›แž€แžถแžšแž„แžถแžšแž€แž˜แŸ’แžšแžทแžแžแžบแžŽแŸ‚แž›แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แžแž›แŸ‹แžŠแŸ„แž™แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžšแž„ nf_tables แžŠแŸ‚แž›แž‡แžถแž•แŸ’แž“แŸ‚แž€แž˜แžฝแž™แž“แŸƒแžแžบแžŽแŸ‚แž›แž›แžธแž“แžปแž…แž…แžถแž”แŸ‹แžแžถแŸ†แž„แž–แžธแž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™ 3.13 แŸ” แž€แž˜แŸ’แžšแžทแžแžแžบแžŽแŸ‚แž›แž•แŸ’แžแž›แŸ‹แžแŸ‚แž…แŸ†แžŽแžปแž…แž”แŸ’แžšแž‘แžถแž€แŸ‹แžฏแž€แžšแžถแž‡แŸ’แž™แž“แŸƒแž–แžทแž’แžธแž€แžถแžšแž‘แžผแž‘แŸ…แžŠแŸ‚แž›แž•แŸ’แžแž›แŸ‹แž˜แžปแžแž„แžถแžšแž‡แžถแž˜แžผแž›แžŠแŸ’แž‹แžถแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž‘แžถแž‰แž™แž€แž‘แžทแž“แŸ’แž“แž“แŸแž™แž–แžธแž€แž‰แŸ’แž…แž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“ แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžšแž‘แžทแž“แŸ’แž“แž“แŸแž™ แž“แžทแž„แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž›แŸ†แž แžผแžšแŸ”

แž…แŸ’แž”แžถแž”แŸ‹แž“แŸƒแž€แžถแžšแž…แŸ’แžšแŸ„แŸ‡ แž“แžทแž„แžขแŸ’แž“แž€แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แžแžถแž˜แž–แžทแž’แžธแž€แžถแžšแž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แžแŸ’แžšแžผแžœแž”แžถแž“แž…แž„แž€แŸ’แžšแž„แž‡แžถ bytecode แž€แŸ’แž“แžปแž„แž…แž“แŸ’แž›แŸ„แŸ‡แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€ bytecode แž“แŸแŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แž‘แžปแž€แž‘แŸ…แž€แŸ’แž“แžปแž„แžแžบแžŽแŸ‚แž›แžŠแŸ„แž™แž”แŸ’แžšแžพแž…แŸ†แžŽแžปแž…แž”แŸ’แžšแž‘แžถแž€แŸ‹ Netlink แž แžพแž™แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แŸ’แž“แžปแž„แžแžบแžŽแŸ‚แž›แž“แŸ…แž€แŸ’แž“แžปแž„แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž“แžทแž˜แŸ’แž˜แžทแžแž–แžทแžŸแŸแžŸแžŠแŸ‚แž›แž“แžนแž€แžƒแžพแž‰แžŠแž›แŸ‹ 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, eth2.2.2.3 แŸ” แŸก.แŸก.แŸก.แŸข. 1 } แž‘แž‘แžฝแž›แž™แž€ ip saddr แŸ” ip daddr vmap { 1.1.1.2 แŸ” แŸข.แŸข.แŸข.แŸขแŸ– แž‘แž‘แžฝแž›แž™แž€ แŸข.แŸข.แŸข.แŸข แŸ” แŸฃ.แŸฃ.แŸฃ.แŸฃแŸ– แž‘แž˜แŸ’แž›แžถแž€แŸ‹ }

    แžงแž‘แžถแž แžšแžŽแŸแž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แŸ– #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 แž€แŸแžŠแžผแž…แž‡แžถแž€แŸ†แžŽแžถแžแŸ‹ sctpแŸ– set s5 { typeof ip option ra value element = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } แžแŸ’แžŸแŸ‚แžŸแž„แŸ’แžœแžถแž€แŸ‹ c5 { แž‡แž˜แŸ’แžšแžพแžŸ ip ra แžแž˜แŸ’แž›แŸƒ @s5 แž‘แž‘แžฝแž›แž™แž€ } แžแŸ’แžŸแŸ‚แžŸแž„แŸ’แžœแžถแž€แŸ‹ c7 { sctp chunk init num-inbound-streams @s7 accept }
  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‡แž˜แŸ’แžšแžพแžŸ TCP fastopen, md5sig แž“แžทแž„ mptcp แŸ”
  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แŸ’แžšแž—แŸแž‘แžšแž„ mp-tcp แž€แŸ’แž“แžปแž„แž€แžถแžšแž‚แžผแžŸแžœแžถแžŸแŸ– แž‡แž˜แŸ’แžšแžพแžŸ tcp mptcp แž”แŸ’แžšแž—แŸแž‘แžšแž„ 1
  • แž’แŸ’แžœแžพแžฑแŸ’แž™แž”แŸ’แžšแžŸแžพแžšแžกแžพแž„แž“แžผแžœแž€แžผแžŠแžแž˜แŸ’แžšแž„แž…แŸ†แž แŸ€แž„แžแžบแžŽแŸ‚แž›แŸ”
  • แžฅแžกแžผแžœแž“แŸแŸ‡ Flowtable แž˜แžถแž“แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแž–แŸแž‰แž›แŸแž‰แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‘แž˜แŸ’แžšแž„แŸ‹ JSON แŸ”
  • แž›แž‘แŸ’แž’แž—แžถแž–แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŸแž€แž˜แŸ’แž˜แž—แžถแž– "แž”แžŠแžทแžŸแŸแž’" แž“แŸ…แž€แŸ’แž“แžปแž„แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžšแž•แŸ’แž‚แžผแž•แŸ’แž‚แž„แžŸแŸŠแžปแž˜แžขแŸŠแžธแžŸแžบแžšแžŽแžทแžแžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แžแž›แŸ‹แž‡แžผแž“แŸ” ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 แž”แžŠแžทแžŸแŸแž’

แž”แŸ’แžšแž—แž–: opennet.ru

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹