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

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

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

แž…แŸ’แž”แžถแž”แŸ‹แž“แŸƒแž€แžถแžšแž…แŸ’แžšแŸ„แŸ‡ แž“แžทแž„แžขแŸ’แž“แž€แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แžแžถแž˜แž–แžทแž’แžธแž€แžถแžšแž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แžแŸ’แžšแžผแžœแž”แžถแž“แž…แž„แž€แŸ’แžšแž„แž‡แžถ bytecode แž€แŸ’แž“แžปแž„แž…แž“แŸ’แž›แŸ„แŸ‡แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€ bytecode แž“แŸแŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แž‘แžปแž€แž‘แŸ…แž€แŸ’แž“แžปแž„แžแžบแžŽแŸ‚แž›แžŠแŸ„แž™แž”แŸ’แžšแžพแž…แŸ†แžŽแžปแž…แž”แŸ’แžšแž‘แžถแž€แŸ‹ Netlink แž แžพแž™แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แŸ’แž“แžปแž„แžแžบแžŽแŸ‚แž›แž“แŸ…แž€แŸ’แž“แžปแž„แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž“แžทแž˜แŸ’แž˜แžทแžแž–แžทแžŸแŸแžŸแžŠแŸ‚แž›แž“แžนแž€แžƒแžพแž‰แžŠแž›แŸ‹ BPF (Berkeley Packet Filters)แŸ” แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžšแŸ’แžแž“แŸแŸ‡แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž€แžถแžแŸ‹แž”แž“แŸ’แžแž™แž™แŸ‰แžถแž„แžแŸ’แž›แžถแŸ†แž„แž“แžผแžœแž‘แŸ†แž แŸ†แž“แŸƒแž€แžผแžŠแžแŸ’แžšแž„แžŠแŸ‚แž›แž€แŸ†แž–แžปแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž“แŸ…แž€แž˜แŸ’แžšแžทแžแžแžบแžŽแŸ‚แž› แž แžพแž™แž•แŸ’แž›แžถแžŸแŸ‹แž‘แžธแž˜แžปแžแž„แžถแžšแž‘แžถแŸ†แž„แžขแžŸแŸ‹แž“แŸƒแž…แŸ’แž”แžถแž”แŸ‹แž‰แŸ‚แž€ แž“แžทแž„แžแž€แŸ’แž€แžœแžทแž‡แŸ’แž‡แžถแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž’แŸ’แžœแžพแž€แžถแžšแž‡แžถแž˜แžฝแž™แž–แžทแž’แžธแž€แžถแžšแž‘แŸ…แž€แŸ’แž“แžปแž„แž‘แŸ†แž แŸ†แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แŸ”

แž€แžถแžšแž…แŸ’แž“แŸƒแž”แŸ’แžšแžŒแžทแžแžŸแŸ†แžแžถแž“แŸ‹แŸ—แŸ–

  • แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž’แžถแžแžปแžšแž”แžถแŸ†แž„ "*" แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ…แž”แž‰แŸ’แž‡แžธแžŠแŸ‚แž›แž”แžถแž“แž€แŸ†แžŽแžแŸ‹ แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž€แžกแžพแž„แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แž‰แŸ’แž…แž”แŸ‹แžŽแžถแž˜แžฝแž™แžŠแŸ‚แž›แž˜แžทแž“แžŸแŸ’แžแžทแžแž“แŸ…แž€แŸ’แžšแŸ„แž˜แž’แžถแžแžปแž•แŸ’แžŸแŸแž„แž‘แŸ€แžแžŠแŸ‚แž›แž”แžถแž“แž€แŸ†แžŽแžแŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„แžŸแŸ†แžŽแžปแŸ†แŸ” แžแžถแžšแžถแž„ x { แž”แž‰แŸ’แž‡แžธแž”แŸ’แž›แžปแž€แž•แŸ‚แž“แž‘แžธ { แž”แŸ’แžšแž—แŸแž‘ ipv4_addr : แžŸแžถแž›แž€แŸ’แžšแž˜แž‘แž„แŸ‹แž’แžถแžแžปแž…แž“แŸ’แž›แŸ„แŸ‡แž–แŸแž› = { 192.168.0.0/16 : แž‘แž‘แžฝแž›แž™แž€, 10.0.0.0/8 : แž‘แž‘แžฝแž›แž™แž€, * : แž‘แž˜แŸ’แž›แžถแž€แŸ‹ } } แžแŸ’แžŸแŸ‚แžŸแž„แŸ’แžœแžถแž€แŸ‹ y { แž”แŸ’แžšแž—แŸแž‘แžแž˜แŸ’แžšแž„แž‘แŸ†แž–แž€แŸ‹ prerouting แžขแžถแž‘แžทแž—แžถแž– 0; แž‚แŸ„แž›แž“แž™แŸ„แž”แžถแž™แž‘แž‘แžฝแž›แž™แž€; ip saddr vmap @blocklist } }
  • แžœแžถแžขแžถแž…แž’แŸ’แžœแžพแž‘แŸ…แž”แžถแž“แžŠแžพแž˜แŸ’แž”แžธแž€แŸ†แžŽแžแŸ‹แžขแžแŸแžšแž–แžธแž”แž“แŸ’แž‘แžถแžแŸ‹แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžŠแŸ„แž™แž”แŸ’แžšแžพแž‡แž˜แŸ’แžšแžพแžŸ "-- แž€แŸ†แžŽแžแŸ‹" แŸ” # cat test.nft แžแžถแžšแžถแž„ netdev x { chain y { type filter hook ingress devices = $dev priority 0; แž€แžถแžšแž’แŸ’แž›แžถแž€แŸ‹แž…แžปแŸ‡แž‚แŸ„แž›แž“แž™แŸ„แž”แžถแž™; } } # nft โ€”define dev="{ eth0, eth1 }" -f test.nft
  • แž“แŸ…แž€แŸ’แž“แžปแž„แž”แž‰แŸ’แž‡แžธแž•แŸ‚แž“แž‘แžธ แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž€แž“แŸ’แžŸแŸ„แž˜แžแŸแžš (แžŸแŸ’แžแžถแž“แž—แžถแž–) แžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแž‰แŸ’แž‰แžถแžแŸ– แžแžถแžšแžถแž„ inet filter { map portmap { type inet_service : verdict counter elements = { 22 counter packets 0 bytes 0: jump ssh_input, * counter packets 0 bytes 0: drop } } chain ssh_input { } chain wan_input { tcp dport vmap @portmap } chain prerouting { type filter hook prerouting priority raw; แž‚แŸ„แž›แž“แž™แŸ„แž”แžถแž™แž‘แž‘แžฝแž›แž™แž€; iif vmap { "lo" : แž›แŸ„แž wan_input } } }
  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ "แž”แž‰แŸ’แž‡แžธแž‘แŸ†แž–แž€แŸ‹" แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž แžถแž‰แž”แž‰แŸ’แž‡แžธแžขแŸ’แž“แž€แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‚แŸ’แžšแžฝแžŸแžถแžšแž€แž‰แŸ’แž…แž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แžŠแŸ‚แž›แž”แžถแž“แž•แŸ’แžแž›แŸ‹แžฑแŸ’แž™แŸ– # nft list hooks แžงแž”แž€แžšแžŽแŸ ip eth0 family ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw [nf_tables] } {-0000000100 แžแŸ’แžŸแŸ‚แžŸแž„แŸ’แžœแžถแž€แŸ‹ ip ab [nf_table] +0000000300 แžแŸ’แžŸแŸ‚แžŸแž„แŸ’แžœแžถแž€แŸ‹ {0000000225 4-0000000000} แž‘แŸ†แž–แž€แŸ‹ {+0000000225 4 selinux_ipv 0000000225_paProute}}
  • แž”แžŽแŸ’แžแžปแŸ†แž‡แžฝแžšแžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แž€แž“แŸ’แžŸแŸ„แž˜ jhash, symhash แž“แžทแž„ numgen แžแŸ’แžšแžผแžœแž”แžถแž“แžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›แž‚แŸ’แž“แžถแžŠแžพแž˜แŸ’แž”แžธแž…แŸ‚แž€แž…แžถแž™แž€แž‰แŸ’แž…แž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แž‘แŸ…แž‡แžฝแžšแž€แŸ’แž“แžปแž„แž…แž“แŸ’แž›แŸ„แŸ‡แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แŸ” โ€ฆ แž‡แžฝแžšแž‘แŸ… symhash mod 65536 โ€ฆ แž‡แžฝแžšแž‘แž„แŸ‹แžšแŸ†แž›แž„แž‘แŸ… numgen inc mod 65536 โ€ฆ แž‡แžฝแžšแž‘แŸ… jhash oif แŸ” meta mark mod 32 "queue" แž€แŸแžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แžŸแŸ†แž‡แžถแž˜แžฝแž™แž”แž‰แŸ’แž‡แžธแž•แŸ‚แž“แž‘แžธแžŠแžพแž˜แŸ’แž”แžธแž‡แŸ’แžšแžพแžŸแžšแžพแžŸแž‡แžฝแžšแž€แŸ’แž“แžปแž„แž…แž“แŸ’แž›แŸ„แŸ‡แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŠแŸ„แž™แž•แŸ’แžขแŸ‚แž€แž›แžพแž‚แŸ’แžšแžถแž”แŸ‹แž…แžปแž…แž”แŸ†แž–แžถแž“แŸ” ... แž‘แž„แŸ‹แž‡แžฝแžšแžšแŸ†แž›แž„แž‘แŸ…แž•แŸ‚แž“แž‘แžธ oifname { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • แžœแžถแžขแžถแž…แž’แŸ’แžœแžพแž‘แŸ…แž”แžถแž“แžŠแžพแž˜แŸ’แž”แžธแž–แž„แŸ’แžšแžธแž€แžขแžแŸแžšแžŠแŸ‚แž›แžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›แž”แž‰แŸ’แž‡แžธแžŸแŸ†แžŽแžปแŸ†แž‘แŸ…แž€แŸ’แž“แžปแž„แž•แŸ‚แž“แž‘แžธแž‡แžถแž…แŸ’แžšแžพแž“แŸ” แž€แŸ†แžŽแžแŸ‹แž…แŸ†แžŽแžปแž…แž”แŸ’แžšแž‘แžถแž€แŸ‹ = { eth0, eth1 } แžแžถแžšแžถแž„ ip x { แžแŸ’แžŸแŸ‚แžŸแž„แŸ’แžœแžถแž€แŸ‹ y { แž”แŸ’แžšแž—แŸแž‘แžแž˜แŸ’แžšแž„แž‘แŸ†แž–แž€แŸ‹แž”แž‰แŸ’แž…แžผแž›แžขแžถแž‘แžทแž—แžถแž– 0; แž‚แŸ„แž›แž“แž™แŸ„แž”แžถแž™แž‘แž‘แžฝแž›แž™แž€; iifname vmap { lo : accept, $interfaces : drop } } } # nft -f x.nft # nft list ruleset table ip x { chain y { type filter hook input priority 0; แž‚แŸ„แž›แž“แž™แŸ„แž”แžถแž™แž‘แž‘แžฝแž›แž™แž€; iifname vmap { "lo" : accept, "eth0": drop, "eth1": drop } } }
  • แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› vmaps (แž•แŸ‚แž“แž‘แžธแžŸแžถแž›แž€แŸ’แžšแž˜) แž“แŸ…แž…แž“แŸ’แž›แŸ„แŸ‡แž–แŸแž›แžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแž‰แŸ’แž‰แžถแžแŸ– # nft แž”แž“แŸ’แžแŸ‚แž˜แž…แŸ’แž”แžถแž”แŸ‹ xy tcp dport แŸ” ip saddr vmap { 1025-65535 แŸ” 192.168.10.2: แž‘แž‘แžฝแž›แž™แž€ }
  • แžœแžถแž€แŸ’แž™แžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แžŸแžถแž˜แž‰แŸ’แž‰แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž‚แžผแžŸแž•แŸ‚แž“แž‘แžธ NAT แŸ” แž”แžถแž“แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž‡แžฝแžšแžขแžถแžŸแž™แžŠแŸ’แž‹แžถแž“แŸ– ... snat แž‘แŸ… ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } แžฌแžขแžถแžŸแž™แžŠแŸ’แž‹แžถแž“ IP แž“แžทแž„แž…แŸ’แžšแž€แž…แŸ’แž”แžถแžŸแŸ‹แž›แžถแžŸแŸ‹แŸ– ... dnat แž‘แŸ… ip saddr map { 10.141.11.4.. 192.168.2.3.. : 80. . 192.168.1.2 } แžฌแž”แž“แŸ’แžŸแŸ†แž“แŸƒแž‡แžฝแžš IP แž“แžทแž„แž…แŸ’แžšแž€แŸ– ... dnat แž‘แŸ… ip saddr แŸ” แž•แŸ‚แž“แž‘แžธ tcp dport { 80 . 10.141.10.2: 10.141.10.5-8888 แŸ” 8999-XNUMX }

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

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