ืคืืจืกืื ืืืืืจืช ืืกื ื ืืื ืืช nftables 1.0.7, ืืืืืืช ืืืฉืงื ืกืื ืื ืื ืืช ืขืืืจ IPv4, IPv6, ARP ืืืฉืจื ืจืฉืช (ืฉืืืจืชื ืืืืืืฃ iptables, ip6table, arptables ื-ebtables). ืืืืืช nftables ืืืืืช ืจืืืื ืืกื ื ืื ืืช ืืคืืขืืื ืืืื ืืืฉืชืืฉ, ืืขืื ืฉืจืืช ืืืืื ืืกืืคืงืช ืขื ืืื ืชืช-ืืืขืจืืช nf_tables, ืฉืืืืชื ืืืง ืืืืืช ืืื ืืงืก ืืื ืืจืกื 3.13. ืืจืืช ืืงืจื ื, ืืกืืคืง ืจืง ืืืฉืง ืื ืจื ืืืชื ืชืืื ืืคืจืืืืงืื ืืืกืคืง ืคืื ืงืฆืืืช ืืกืืกืืืช ืืืืืืฅ ื ืชืื ืื ืืื ืืช, ืืืฆืืข ืคืขืืืืช ืขื ื ืชืื ืื ืืฉืืืื ืืืจืืื.
ืืืื ืืกืื ืื ืขืฆืื ืืืืืคืืื ืืกืคืฆืืคืืื ืืคืจืืืืงืื ืืืจืืืื ืืชืื bytecode ืฉื ืืจืื ืืืฉืชืืฉ, ืืืืืจ ืืื ืงืื ืืืช ืื ื ืืขื ืืชืื ืืืืื ืืืืฆืขืืช ืืืฉืง Netlink ืืืืืฆืข ืืงืจื ื ืืืืื ื ืืืจืืืืืืช ืืืืืืช ืืืืื ื-BPF (Berkeley Packet Filters). ืืืฉื ืื ืืืคืฉืจืช ืืืงืืื ืืฉืืขืืชืืช ืืช ืืืื ืงืื ืืกืื ืื ืืคืืขื ืืจืืช ืืงืจื ื ืืืืขืืืจ ืืช ืื ืืคืื ืงืฆืืืช ืฉื ืืืงื ืื ืืชืื ืืืืืืืื ืฉื ืขืืืื ืขื ืคืจืืืืงืืืื ืืืจืื ืืืฉืชืืฉ.
ืฉืื ืืืื ืขืืงืจืืื:
- ืขืืืจ ืืขืจืืืช ืืืจืฆืืช ืืช ืืืืช ืืื ืืงืก 6.2+, ื ืืกืคื ืชืืืื ืืืืคืืื ืคืจืืืืงืื vxlan, geneve, gre ื-gretap, ืืืืคืฉืจืช ืืืืืืืื ืคืฉืืืื ืืืืืง ืืืชืจืืช ืืื ืืช ืืืืืขืืช. ืืืืืื, ืืื ืืืืืง ืืช ืืชืืืช ื-IP ืืืืชืจืช ืฉื ืืืืื ืืงืื ื ืช ื-VxLAN, ืืชื ืืืื ืืขืช ืืืฉืชืืฉ ืืืืืื (ืืื ืฆืืจื ื-de-encapsulation ืฉื ืืืชืจืช VxLAN ืืืืื ืืช ืืืกื ื ืืืืฉืง vxlan0): ... udp dport 4789 vxlan ip protocol udp ... udp dport 4789 vxlan ip saddr 1.2.3.0. 24/4789 ... udp dport 1.2.3.4 vxlan ip saddr . vxlan ip daddr { 4.3.2.1. XNUMX }
- ืชืืืื ืืืืืื ืืืืืืื ืฉื ืฉืืจืืืช ืืืืจ ืฉืืืืืขื ืืืืงื ืืืงืืช ืฉื ืจืืื ืกื-ืืืกื, ืืืืคืฉืจืช ืืืืืง ืืืื ื ืื ืืืง ืืืืื ืืืืื ืงืืื (ืืขืืจ ื ืืชื ืืื ืืืืืง ืจืง ืืืื ืืืืืืื). ืืืืืื, ืืืืจ ืืกืจืช ืจืืื 25 ืืจืฉืืืช ืกื ืขื ืืืืืื 24-30 ื-40-50, ืืจืฉืืื ืชืืฉืืจ 24, 26-30 ื-40-50. ืืชืืงืื ืื ืื ืืจืฉืื ืืืืืื ืืืืืืื ืืขืืืื ืืืฆืขื ืืืืืืจืืช ืชืืืืงื ืฉื ืืขื ืคืื ืืืฆืืืื ืฉื ืืืืช 5.10+. # nft list set rule table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } # nft delete element ip xy { 25 } # nft list rulet table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24, 26-30, 40-50 } } }
- ืืืคืฉืจ ืฉืืืืฉ ืืื ืฉื ืงืฉืจ ืืืืืืื ืืขืช ืืืคืื ืชืจืืื ืืชืืืืช (NAT). table ip nat { chain prerouting { type nat hook prerouting priority dstnat; ืงืืืช ืืืื ืืืช; dnat ื-ip daddr. tcp dport map { 10.1.1.136. 80: 1.1.2.69. 1024, 10.1.1.10-10.1.1.20. 8888-8889: 1.1.2.69. 2048-2049 } ืืชืืฉื } }
- ื ืืกืคื ืชืืืื ืืืืืื "ืืืืจืื", ืืืืคืฉืจ ืื ืืืืืช ืืช ืืื ืืฉืืืืฉ ืืืืจืื ืืจืืื ืืื ืื ืืจืฉืืืช ืกื. ืืชืืื ื ื ืชืืืช ืืื ืืืจืกืช Linux 5.14. table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic, timeout ืคืกืง ืืื ืืืจืื 1h } chain z { ืกืื ืคืืืืจ ืืืง ืคืื ืขืืืคืืช ืืกื ื; ืงืืืช ืืืื ืืืช; ืขืืื @y { ip daddr. tcp dport } } } # nft list set ip xy table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic, timeout last timeout 1h elements = { 172.217.17.14 . 443 ืฉืืืืฉ ืืืจืื 1s591ms ืคืกืง ืืื 1h ืืคืื 59m58s409ms, 172.67.69.19. 443 ืคืกืง ืืื ืืฉืืืืฉ ืืืจืื ืฉื 4s636ms ืฉืขื ืืืช ืืคืื 1m59s55ms, 364. 142.250.201.72 ืคืกืง ืืื ืืฉืืืืฉ ืืืจืื ืฉื 443s4ms ืฉืขื ืืืช ืืคืื 748m1s59ms, 55. 252 ืคืกืง ืืื ืืฉืืืืฉ ืืืจืื ืฉื 172.67.70.134s443ms ืฉืขื ืืืช ืืคืื 4m688s1ms, 59. 55 ืฉืืืืฉ ืืืจืื 312s35.241.9.150ms ืคืกืง ืืื 443h ืืคืื 5m204s1ms, 59. 54 ืคืกืง ืืื ืืฉืืืืฉ ืืืจืื ืฉื 796s138.201.122.174ms ืฉืขื ืืืช ืืคืื 443m4s537ms, 1. 59 ืฉืืืืฉ ืืืจืื 55s463ms ืคืกืง ืืื 34.160.144.191h ืืคืื 443m5s205ms, 1. 59 ืฉืืืืฉ ืืืจืื 54s795ms ืคืกืง ืืื 130.211.23.194h ืคืื 443m4s436ms } } }
- ื ืืกืคื ืืช ืืืืืืช ืืืืืืจ ืืืกืืช ืืจืฉืืืืช ืกื. ืืืืืื, ืืื ืืงืืืข ืืช ืืืกืช ืืชืขืืืจื ืขืืืจ ืื ืืชืืืช IP ืืขื, ืืชื ืืืื ืืฆืืื: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device "eth0" priority filter; ืงืืืช ืืืื ืืืช; ip daddr @y drop } } # nft ืืืกืฃ ืืืื ื inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft list set rulet table netdev x { set y { type ipv4_addr size 65535 quota over 10000 mbytes elements = { 8.8.8.8 ืืืกื ืืขื 10000 ืืื ืืืื ืืฉืืืืฉ 196 ืืชืื } } ืฉืจืฉืจืช y { ืกืื ืืกื ื ืืชืงื ืืฆืืืช ืืชืงื "eth0" ืืขืืืคืืช; ืงืืืช ืืืื ืืืช; ip daddr @y drop } }
- ืืืชืจ ืืืฉืชืืฉ ืืงืืืขืื ืืจืฉืืืืช ืกืืื. ืืืืืื, ืืขืช ืฉืืืืฉ ืืืชืืืช ืืืขื ืื-VLAN ID ืืืคืชื ืืจืฉืืื, ืชืืื ืืฆืืื ืืฉืืจืืช ืืช ืืกืคืจ ื-VLAN (daddr . 123): table netdev t { set s { typeof ether saddr . ืืืื vlan ืืืื 2048 ืืืืื ืืื ืืืื, ืืื ืงืฆืื ืืื ืงืฆืื 1m } ืฉืจืฉืจืช c { ืกืื ืืกื ื ืืชืงื ืื ืืกื eth0 ืขืืืคืืช 0; ืงืืืช ืืืื ืืืช; ether type != 8021q update @s { ether daddr. 123 } ืืื ื } }
- ื ืืกืคื ืคืงืืืช "ืืจืืก" ืืืฉื ืืืืืงืช ืืืืืืงืืื ืืื ืชื ืื (ืื ืืืื ืืคืงืืืช ืืืืืงื, ืืื ืื ืืืฆืจืช ENOENT ืืืฉืจ ืื ืกืื ืืืืืง ืืืืืืงื ืืกืจ). ืืืจืฉ ืืคืืืช ืืืืช Linux 6.3-rc ืืื ืืขืืื. ืืืจืืก ืืช ืืกื ื ื-IP ืฉื ืืืืื
ืืงืืจ: OpenNet.ru