ืžื”ื“ื•ืจืช ืžืกื ืŸ ืžื ื•ืช nftables 1.0.7

ืคื•ืจืกืžื” ืžื”ื“ื•ืจืช ืžืกื ืŸ ื”ืžื ื•ืช 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”