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

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

แž…แŸ’แž”แžถแž”แŸ‹แž“แŸƒแž€แžถแžšแž…แŸ’แžšแŸ„แŸ‡ แž“แžทแž„แžขแŸ’แž“แž€แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แžแžถแž˜แž–แžทแž’แžธแž€แžถแžšแž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แžแŸ’แžšแžผแžœแž”แžถแž“แž…แž„แž€แŸ’แžšแž„แž‡แžถ bytecode แž€แŸ’แž“แžปแž„แž…แž“แŸ’แž›แŸ„แŸ‡แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€ bytecode แž“แŸแŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แž‘แžปแž€แž‘แŸ…แž€แŸ’แž“แžปแž„แžแžบแžŽแŸ‚แž›แžŠแŸ„แž™แž”แŸ’แžšแžพแž…แŸ†แžŽแžปแž…แž”แŸ’แžšแž‘แžถแž€แŸ‹ Netlink แž แžพแž™แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แŸ’แž“แžปแž„แžแžบแžŽแŸ‚แž›แž“แŸ…แž€แŸ’แž“แžปแž„แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž“แžทแž˜แŸ’แž˜แžทแžแž–แžทแžŸแŸแžŸแžŠแŸ‚แž›แž“แžนแž€แžƒแžพแž‰แžŠแž›แŸ‹ 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 daddr 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 แŸ” : 2.2.2.5:4-17: meta iifname eth74 ip saddr 1 ip daddr 1.1.1.1/2.2.2.3 แž‘แž‘แžฝแž›แž™แž€ ruleset.nft:5:17-74: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4-6. แž‘แž‘แžฝแž›แž™แž€ ruleset.nft:17:77-1แŸ– meta iifname eth1.1.1.2 ip saddr 2.2.3.0 ip daddr 24 แž‘แž‘แžฝแž›แž™แž€แž‘แŸ…แž€แŸ’แž“แžปแž„แŸ– iifname แŸ” ip saddr แŸ” ip daddr { eth7 . แŸก.แŸก.แŸก.แŸก. 17, eth83 แŸ” แŸก.แŸก.แŸก.แŸข. 1, eth1.1.1.2 แŸ” แŸก.แŸก.แŸก.แŸข. 2.2.4.0/2.2.4.10, eth8 แŸ” แŸก.แŸก.แŸก.แŸข. 17-74, eth2 แŸ” แŸก.แŸก.แŸก.แŸฃ. 1.1.1.3 } แž‘แž‘แžฝแž›แž™แž€
  • แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž”แž„แŸ’แž€แžพแž“แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž–แž€แŸแžขแžถแž…แž”แŸ†แž”แŸ’แž›แŸ‚แž„แž…แŸ’แž”แžถแž”แŸ‹แžŠแŸ‚แž›แž”แŸ’แžšแžพแž”แž‰แŸ’แž‡แžธแžŸแŸ†แžŽแžปแŸ†แžŸแžถแž˜แž‰แŸ’แž‰แžšแžฝแž…แž แžพแž™แž‘แŸ…แž‡แžถแž‘แž˜แŸ’แžšแž„แŸ‹แž”แž„แŸ’แžšแžฝแž˜แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ€แž แžงแž‘แžถแž แžšแžŽแŸแž…แŸ’แž”แžถแž”แŸ‹แŸ– # cat ruleset.nft table 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 32768 iifname "enp65535s0f31" ip saddr { 6, 64.59.144.17 } ip daddr 64.59.150.133 udp sport 10.0.0.149 udp dport 53-32768 แž‘แž‘แžฝแž›แž™แž€ } "}" -nfet exefocuting rules : ruleset.nft:65535:6-22: iifname "enp149s0f31" ip saddr { 6, 209.115.181.102 } ip daddr 216.197.228.230 udp sport 10.0.0.149-port123.p -แŸกแŸคแŸฃ : iifname "enp32768s65535f7" ip saddr { 22, 143 } ip daddr 0 udp sport 31 udp dport 6-64.59.144.17 แž‘แž‘แžฝแž›แž™แž€แž‘แŸ…แž€แŸ’แž“แžปแž„แŸ– iifname ip saddr แŸ” แžขแžถแž™แž—แžธ แž”แŸ‰แžถ แž€แžธแžกแžถ udp แŸ” udp dport { enp64.59.150.133s10.0.0.149f53 . 32768 แŸ” แŸกแŸ .แŸ .แŸ .แŸกแŸคแŸฉแŸ” แŸกแŸขแŸฃ. 65535-0, enp31s6f209.115.181.102 แŸ” 10.0.0.149. แŸกแŸ .แŸ .แŸ .แŸกแŸคแŸฉแŸ” แŸกแŸขแŸฃ. 123-32768, enp65535s0f31 แŸ” แŸฆแŸค.แŸฅแŸฉ.แŸกแŸคแŸค.แŸกแŸง. แŸกแŸ .แŸ .แŸ .แŸกแŸคแŸฉแŸ” แŸฅแŸฃ. 6-216.197.228.230, enp10.0.0.149s123f32768 แŸ” แŸฆแŸค.แŸฅแŸฉ.แŸกแŸฅแŸ .แŸกแŸฃแŸฃ. แŸกแŸ .แŸ .แŸ .แŸกแŸคแŸฉแŸ” แŸฅแŸฃ. 65535-0 } แž‘แž‘แžฝแž›แž™แž€
  • แž”แžถแž“แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถแž‡แžถแž˜แžฝแž™แž€แžถแžšแž”แž„แŸ’แž€แžพแž bytecode แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž…แž“แŸ’แž›แŸ„แŸ‡แž–แŸแž›แž”แž‰แŸ’แž…แžผแž›แž‚แŸ’แž“แžถแžŠแŸ‚แž›แž”แŸ’แžšแžพแž”แŸ’แžšแž—แŸแž‘แžŠแŸ‚แž›แž˜แžถแž“แž›แŸ†แžŠแžถแž”แŸ‹แž”แŸƒแž•แŸ’แžŸแŸแž„แž‚แŸ’แž“แžถแžŠแžผแž…แž‡แžถ IPv4 (แž›แŸ†แžŠแžถแž”แŸ‹แž”แŸƒแž”แžŽแŸ’แžแžถแž‰) แž“แžทแž„แžŸแž‰แŸ’แž‰แžถแž˜แŸแžแžถ (แž›แŸ†แžŠแžถแž”แŸ‹แž”แŸƒแž”แŸ’แžšแž–แŸแž“แŸ’แž’)แŸ” แžแžถแžšแžถแž„ ip x { แž•แŸ‚แž“แž‘แžธ w { แž”แŸ’แžšแž—แŸแž‘ ip saddr . แžŸแž‰แŸ’แž‰แžถแž˜แŸแžแžถ : แžŸแžถแž›แž€แŸ’แžšแž˜แž‘แž„แŸ‹แž’แžถแžแžปแžšแžถแž”แŸ‹แž…แž“แŸ’แž›แŸ„แŸ‡แž–แŸแž› = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : แž‘แž‘แžฝแž›แž™แž€ 192.168.0.10-192.168.1.20 แŸ” 0x0000aa00-0x0000aaff : แž‘แž‘แžฝแž›แž™แž€, } } แžแŸ’แžŸแŸ‚แžŸแž„แŸ’แžœแžถแž€แŸ‹ k { แž”แŸ’แžšแž—แŸแž‘แžแž˜แŸ’แžšแž„แž‘แŸ†แž–แž€แŸ‹แž”แž‰แŸ’แž…แžผแž›แžแž˜แŸ’แžšแž„แžขแžถแž‘แžทแž—แžถแž–; แž€แžถแžšแž’แŸ’แž›แžถแž€แŸ‹แž…แžปแŸ‡แž‚แŸ„แž›แž“แž™แŸ„แž”แžถแž™; ip saddr แŸ” แžŸแž‰แŸ’แž‰แžถแž˜แŸแžแžถ vmap @w } }
  • แž’แŸ’แžœแžพแžฑแŸ’แž™แž”แŸ’แžšแžŸแžพแžšแžกแžพแž„แž“แžผแžœแž€แžถแžšแž”แŸ’แžšแŸ€แž”แž’แŸ€แž”แž“แŸƒแž–แžทแž’แžธแž€แžถแžšแžŠแŸแž€แž˜แŸ’แžš แž“แŸ…แž–แŸแž›แž”แŸ’แžšแžพแž€แž“แŸ’แžŸแŸ„แž˜แž†แŸ… แžงแž‘แžถแž แžšแžŽแŸแŸ– meta l4proto 91 @th,400,16 0x0 แž‘แž‘แžฝแž›แž™แž€
  • แž”แž‰แŸ’แž แžถแž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž”แžพแž€แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž“แŸ…แž…แž“แŸ’แž›แŸ„แŸ‡แž–แŸแž›แžแŸ’แžšแžผแžœแž”แžถแž“แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แŸ– แž”แž‰แŸ’แž…แžผแž›แž…แŸ’แž”แžถแž”แŸ‹ xy tcp sport { 3478-3497, 16384-16387 } counter accept
  • JSON API แžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžฑแŸ’แž™แž”แŸ’แžšแžŸแžพแžšแžกแžพแž„แžŠแžพแž˜แŸ’แž”แžธแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แž“แŸ’แžŸแŸ„แž˜แž“แŸ…แž€แŸ’แž“แžปแž„แž”แž‰แŸ’แž‡แžธแžŸแŸ†แžŽแžปแŸ† แž“แžทแž„แž•แŸ‚แž“แž‘แžธแŸ”
  • แž•แŸ’แž“แŸ‚แž€แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ…แž”แžŽแŸ’แžŽแžถแž›แŸแž™ python nftables แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แž•แŸ’แž‘แžปแž€แžŸแŸ†แžŽแžปแŸ†แž…แŸ’แž”แžถแž”แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แŸ’แž“แžปแž„แžšแž”แŸ€แž”แžŸแžปแž–แž›แž—แžถแž– ("-c") แž“แžทแž„แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž“แžทแž™แž˜แž“แŸแž™แžแžถแž„แž€แŸ’แžšแŸ…แž“แŸƒแžขแžแŸแžšแŸ”
  • แž€แžถแžšแž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแž‰แŸ’แž‰แžถแžแž“แŸ…แž€แŸ’แž“แžปแž„แž’แžถแžแžปแž”แž‰แŸ’แž‡แžธแžŠแŸ‚แž›แž”แžถแž“แž€แŸ†แžŽแžแŸ‹แŸ”
  • แžŠแŸ‚แž“แž€แŸ†แžŽแžแŸ‹แžขแžแŸ’แžšแžถแž”แŸƒแžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แž”แž‰แŸ’แž‡แžถแž€แŸ‹แžแž˜แŸ’แž›แŸƒแžŸแžผแž“แŸ’แž™แŸ”

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

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