nftables рдкреНрдпрд╛рдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░ 1.0.6 рд░рд┐рд▓реАрдЬ

nftables 1.0.6 рдкреНрдпрд╛рдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░ рд░рд┐рд▓реАрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, IPv4, IPv6, ARP рд░ рдиреЗрдЯрд╡рд░реНрдХ рдмреНрд░рд┐рдЬрд╣рд░реВ (iptables, ip6table, arptables рд░ ebtables рд▓рд╛рдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреЗ рдЙрджреНрджреЗрд╢реНрдпрд▓реЗ) рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрдпрд╛рдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░рд┐рдЩ рдЗрдиреНрдЯрд░рдлреЗрд╕рд╣рд░реВ рдПрдХреАрдХреГрдд рдЧрд░реНрджреИред nftables рдкреНрдпрд╛рдХреЗрдЬрд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕рдорд╛ рдЪрд▓реНрдиреЗ рдкреНрдпрд╛рдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ, рдЬрдмрдХрд┐ рдХрд░реНрдиреЗрд▓ рд╕реНрддрд░ nf_tables рдЙрдкрдкреНрд░рдгрд╛рд▓реАрджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬреБрди рд░рд┐рд▓реАрдЬ 3.13 рджреЗрдЦрд┐ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдХреЛ рднрд╛рдЧ рднрдПрдХреЛ рдЫред рдХрд░реНрдиреЗрд▓ рд╕реНрддрд░рдорд╛, рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЯреЛрдХрд▓-рд╕реНрд╡рддрдиреНрддреНрд░ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫ рдЬрд╕рд▓реЗ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдирд┐рдХрд╛рд▓реНрди, рдбрд╛рдЯрд╛рдорд╛ рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди, рд░ рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рдЖрдзрд╛рд░рднреВрдд рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

рдлрд┐рд▓реНрдЯрд░рд┐рдЩ рдирд┐рдпрдорд╣рд░реВ рдЖрдлреИрдВ рд░ рдкреНрд░реЛрдЯреЛрдХрд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рд╕реНрдкреЗрд╕ рдмрд╛рдЗрдЯрдХреЛрдбрдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рд╣реБрдиреНрдЫрдиреН, рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдмрд╛рдЗрдЯрдХреЛрдб рдиреЗрдЯрд▓рд┐рдЩреНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрд░реНрдиреЗрд▓рдорд╛ рд▓реЛрдб рдЧрд░рд┐рдиреНрдЫ рд░ BPF (рдмрд░реНрдХрд▓реЗ рдкреНрдпрд╛рдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░рд╣рд░реВ) рдЬрд╕реНрддреИ рд╡рд┐рд╢реЗрд╖ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдорд╛ рдХрд░реНрдиреЗрд▓рдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫред рдпреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрд▓реЗ рдХрд░реНрдиреЗрд▓ рд╕реНрддрд░рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдлрд┐рд▓реНрдЯрд░рд┐рдЩ рдХреЛрдбрдХреЛ рд╕рд╛рдЗрдЬрд▓рд╛рдИ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдШрдЯрд╛рдЙрди рд░ рдкрд╛рд░реНрд╕рд┐рдЩ рдирд┐рдпрдордХрд╛ рд╕рдмреИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд░ рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВрд╕рдБрдЧ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕рдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рддрд░реНрдХрд▓рд╛рдИ рд╕рд╛рд░реНрди рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрдЫред

рдореБрдЦреНрдп рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ:

  • рдирд┐рдпрдо рдЕрдиреБрдХреВрд▓рдХ, "-o/-рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ" рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрд╛ рднрдирд┐рдиреНрдЫ, рдирд┐рдпрдорд╣рд░реВрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрдпрд╛рдХреЗрдЬрд┐рдЩ рд╣реБрдиреНрдЫ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдВрдпреЛрдЬрди рдЧрд░реЗрд░ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдирдХреНрд╕рд╛ рд░ рд╕реЗрдЯ рд╕реВрдЪреАрд╣рд░реВрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реЗрд░ред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдирд┐рдпрдорд╣рд░реВ # cat ruleset.nft рддрд╛рд▓рд┐рдХрд╛ ip x { рдЪреЗрди y { рдкреНрд░рдХрд╛рд░ рдлрд┐рд▓реНрдЯрд░ рд╣реБрдХ рдЗрдирдкреБрдЯ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдлрд┐рд▓реНрдЯрд░; рдиреАрддрд┐ рдЧрд┐рд░рд╛рд╡рдЯ; рдореЗрдЯрд╛ 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 ip2.2.3.0 ip24. рез.рез .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" рд▓рд╛рдИ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░рд┐рдиреЗрдЫ: рдирд┐рдпрдорд╣рд░реВ nft:2.2.2.5:4-17: meta iifname eth74 ip saddr 1 ip daddr 1.1.1.1 accept ruleset.nft:2.2.2.3:5-17: meta iifname eth74 ip saddr 1 ip daddr 1.1.1.2 рдирд┐рдпрдорд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред : 2.2.2.4:6-17: meta iifname eth77 ip saddr 1 ip daddr 1.1.1.2/2.2.3.0 accept ruleset.nft:24:7-17: meta iifname eth83 ip saddr 1 ip daddr 1.1.1.2 Ruleset.nft:2.2.4.0:2.2.4.10-8: meta iifname eth17 ip saddr 74 ip daddr 2 рдорд╛ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН: iifnameред ip saddrред ip daddr {eth1.1.1.3. рез.рез.рез.резред 2.2.2.5, eth1ред рез.рез.рез.реиред 1.1.1.1, eth2.2.2.3ред рез.рез.рез.реиред 1/1.1.1.2, eth2.2.2.4ред рез.рез.рез.реиред 1-1.1.1.2, eth2.2.3.0ред рез.рез.рез.рейред реи.реи.реи.рел} рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН
  • рдЕрдиреБрдХреВрд▓рдХрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рд░рд▓ рд╕реЗрдЯ рд╕реВрдЪреАрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдирд┐рдпрдорд╣рд░реВрд▓рд╛рдИ рдердк рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдлрд╛рд░рдордорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рд╕рдХреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдирд┐рдпрдорд╣рд░реВ: # cat ruleset.nft рддрд╛рд▓рд┐рдХрд╛ ip рдлрд┐рд▓реНрдЯрд░ { рдЪреЗрди рдЗрдирдкреБрдЯ { рдкреНрд░рдХрд╛рд░ рдлрд┐рд▓реНрдЯрд░ рд╣реБрдХ рдЗрдирдкреБрдЯ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдлрд┐рд▓реНрдЯрд░; рдиреАрддрд┐ рдЧрд┐рд░рд╛рд╡рдЯ; iifname "lo" рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН ct рд░рд╛рдЬреНрдп рд╕реНрдерд╛рдкрд┐рдд, рд╕рдореНрдмрдиреНрдзрд┐рдд рдЯрд┐рдкреНрдкрдгреА рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН "рдЯреНрд░рд╛рдлрд┐рдХрдорд╛ рд╣рд╛рдореА рдЙрддреНрдкрддреНрддрд┐ рдЧрд░реНрдЫреМрдВ, рд╣рд╛рдореА рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЧрд░реНрдЫреМрдВ" iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 рдкреЛрд░реНрдЯ 123d 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 рд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрдпрд╛рдХреЗрдЬрдХреЛ рд░реВрдкрдорд╛ рдХрд╛рдЯрд┐рдиреЗрдЫ - }ft-ft-cn }-рдкреНрдпрд╛рдХреЗрдЬрдХреЛ рд░реВрдкрдорд╛ рдХрд╛рдЯрд┐рдиреЗрдЫред рдкрдЫреНрдпрд╛рдЙрдБрдЫ : Ruleset.nft:65535:6-22: iifname "enp149s0f31" ip saddr { 6, 209.115.181.102 } ip daddr 216.197.228.230 udp рдЦреЗрд▓рдХреБрдж рдирд┐рдпрдорд╣рд░реВ 10.0.0.149 d123 udp рд▓рд╛рдИ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред :реиреи-резрекрей: iifname "enp32768s65535f7" ip saddr { 22, 143 } ip daddr 0 udp рдЦреЗрд▓ 31 udp dport 6-64.59.144.17 рдорд╛ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН: iif рдирд╛рдоред ip saddrред ip daddrред udp рдЦреЗрд▓ред udp dport { enp64.59.150.133s10.0.0.149f53 . реирежреп.резрезрел.резреорез.резрежреиред резреж.реж.реж.резрекрепред резреирейред рейреиренремрео-ремрелрелрейрел, enp32768s65535f0ред реирезрем.резрепрен.реиреирео.реирейрежред резреж.реж.реж.резрекрепред резреирейред рейреиренремрео-ремрелрелрейрел, enp31s6f209.115.181.102ред ремрек.релреп.резрекрек.резренред резреж.реж.реж.резрекрепред релрейред рейреиренремрео-ремрелрелрейрел, enp10.0.0.149s123f32768ред ремрек.релреп.резрелреж.резрейрейред резреж.реж.реж.резрекрепред релрейред 65535-0 } рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН
  • 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 рд╕реНрд╡реАрдХрд╛рд░
  • рдЕрдиреНрддрд░рд╛рд▓рд╣рд░реВрдорд╛ рдирд┐рдпрдорд╣рд░реВ рд╕рдХреНрд╖рдо рдЧрд░реНрдиреЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫ: insert рдирд┐рдпрдо xy tcp рдЦреЗрд▓ { 3478-3497, 16384-16387 } рдХрд╛рдЙрдиреНрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░
  • JSON API рд▓рд╛рдИ рд╕реЗрдЯ рд░ рдирдХреНрд╕рд╛ рд╕реВрдЪреАрд╣рд░реВрдорд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рд╕реБрдзрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫред
  • nftables python рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдорд╛ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВрд▓реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдореЛрдб ("-c") рдорд╛ рдкреНрд░рд╢реЛрдзрдирдХрд╛ рд▓рд╛рдЧрд┐ рдирд┐рдпрдо рд╕реЗрдЯрд╣рд░реВ рд▓реЛрдб рдЧрд░реНрди рд░ рдЪрд░рд╣рд░реВрдХреЛ рдмрд╛рд╣реНрдп рдкрд░рд┐рднрд╛рд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
  • рд╕реЗрдЯ рд╕реВрдЪреА рддрддреНрд╡рд╣рд░реВрдорд╛ рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВ рдердкреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдПрдХреЛ рдЫред
  • рдмрд╛рдЗрдЯ рджрд░ рд╕реАрдорд╛рд▓реЗ рд╢реВрдиреНрдп рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди