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

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

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

рдореБрдЦреНрдп рдмрджрд▓:

  • рдирд┐рдпрдо рдСрдкреНрдЯрд┐рдорд╛рдпрдЭрд░рдордзреНрдпреЗ "-o/--рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ" рдкрд░реНрдпрд╛рдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛рдирд╛, рдирд┐рдпрдорд╛рдВрдЪреЗ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдкреЕрдХреЗрдЬрд┐рдВрдЧ рддреНрдпрд╛рдВрдирд╛ рдПрдХрддреНрд░рд┐рдд рдХрд░реВрди рдЖрдгрд┐ рдирдХрд╛рд╢рд╛- рдЖрдгрд┐ рд╕реЗрдЯ-рдпрд╛рджреАрдВрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░реВрди рд╕реЗрдЯ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдирд┐рдпрдо # cat ruleset.nft рдЯреЗрдмрд▓ ip x { рдЪреЗрди y { рдкреНрд░рдХрд╛рд░ рдлрд┐рд▓реНрдЯрд░ рд╣реБрдХ рдЗрдирдкреБрдЯ рдкреНрд░рд╛рдзрд╛рдиреНрдп рдлрд┐рд▓реНрдЯрд░; рдкреЙрд▓рд┐рд╕реА рдбреНрд░реЙрдк; 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 ip2.2.3.0 ip24.ifname saddr/1 рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рд╛ рез.рез .1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 рдореЗрдЯрд╛ iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 рд╕реНрд╡реАрдХрд╛рд░рд╛ } } рдирдВрддрд░ "nft -o -c -f ruleset.nft" рдЦрд╛рд▓реАрд▓ рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓: рдирд┐рдпрдорд╕реЗрдЯ. nft:4:17-74: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept ruleset.nft:5:17-74: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4.ftn6 рдирд┐рдпрдо рд╕реНрд╡реАрдХрд╛рд░рд╛ 17:77-1: meta iifname eth1.1.1.2 ip saddr 2.2.3.0 ip daddr 24/7 рд╕реНрд╡реАрдХрд╛рд░рд╛ ruleset.nft:17:83-1: meta iifname eth1.1.1.2 ip saddr 2.2.4.0 ip daddr 2.2.4.10. рд╕реНрд╡реАрдХрд╛рд░рд╛ ruleset.nft:8:17-74: meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 рд╕реНрд╡реАрдХрд╛рд░рд╛: iifname . ip sadr . ip daddr { eth1 . 1.1.1.1. 2.2.2.3, eth1 . 1.1.1.2. 2.2.2.4, eth1 . 1.1.1.2. 2.2.3.0/24, eth1 . 1.1.1.2. 2.2.4.0-2.2.4.10, eth2 . 1.1.1.3. реи.реи.реи.рел } рд╕реНрд╡реАрдХрд╛рд░рд╛
  • рдСрдкреНрдЯрд┐рдорд╛рдпрдЭрд░ рдирд┐рдпрдо рджреЗрдЦреАрд▓ рдХрдВрдбреЗрдиреНрд╕ рдХрд░реВ рд╢рдХрддреЛ рдЬреЗ рдЖрдзреАрдкрд╛рд╕реВрди рд╕рд╛рдзреНрдпрд╛ рд╕реЗрдЯрд▓рд┐рд╕реНрдЯрдЪрд╛ рд╡рд╛рдкрд░ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕реНрд╡рд░реВрдкрд╛рдд рдХрд░рддрд╛рдд, рдЬрд╕реЗ рдХреА: # 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 123 рд╕реНрд╡реАрдХрд╛рд░рд╛ iifname "enp32768s65535f0" ip saddr { 31, 6 } ip daddr 64.59.144.17 udp sport 64.59.150.133 udp dport 10.0.0.149-53 рд╣реЗ ftn рд╕рдВрдХреБрд▓ рд╕реНрд╡реАрдХрд╛рд░рд▓реНрдпрд╛рдирдВрддрд░ "-ftn" } ftn рдпрд╛рдкреНрд░рдорд╛рдгреЗ рдЪрд╛рд▓рдд рдЕрд╕рд▓реЗрд▓реЗ рдкреЕрдХреЗрдЬ рд╕реНрд╡реАрдХрд╛рд░рд▓реЗ рдЬрд╛рдИрд▓. : Ruleset.nft:32768:65535-6: iifname "enp22s149f0" ip saddr { 31, 6 } ip daddr 209.115.181.102 udp рд╕реНрдкреЛрд░реНрдЯ рдирд┐рдпрдо 216.197.228.230-ft dp udp10.0.0.149 d123 рд╕реНрд╡реАрдХрд╛рд░рд╛ :реиреи-рез рекрей : iifname "enp32768s65535f7" ip saddr { 22, 143 } ip daddr 0 udp sport 31 udp dport 6-64.59.144.17 рдордзреНрдпреЗ рд╕реНрд╡реАрдХрд╛рд░рд╛: iifname. ip sadr . ip daddr . udp рд╕реНрдкреЛрд░реНрдЯ udp dport { enp64.59.150.133s10.0.0.149f53 . 32768 . резреж.реж.реж.резрекреп . 65535 . 0-31, enp6s209.115.181.102f10.0.0.149 . 123 . резреж.реж.реж.резрекреп . 32768 . 65535-0, enp31s6f216.197.228.230 . ремрек.релреп.резрекрек.резрен. резреж.реж.реж.резрекреп . релрей . 10.0.0.149-123, enp32768s65535f0 . ремрек.релреп.резрелреж.резрейрей. резреж.реж.реж.резрекреп . релрей . рейреиренремрео-ремрелрелрейрел } рд╕реНрд╡реАрдХрд╛рд░рд╛
  • 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 sadr . рдореЗрдЯрд╛ рдорд╛рд░реНрдХ vmap @w } }
  • рдХрдЪреНрдЪреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддреА рд╡рд╛рдкрд░рддрд╛рдирд╛ рд╕реБрдзрд╛рд░рд┐рдд рджреБрд░реНрдорд┐рд│ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЕрдкрд┐рдВрдЧ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде: meta l4proto 91 @th,400,16 0x0 рд╕реНрд╡реАрдХрд╛рд░
  • рдЕрдВрддрд░рд╛рдиреЗ рдирд┐рдпрдо рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рд╛: рдирд┐рдпрдо xy tcp рд╕реНрдкреЛрд░реНрдЯ { 3478-3497, 16384-16387 } рдХрд╛рдЙрдВрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░рд╛
  • рд╕реЗрдЯ рдЖрдгрд┐ рдирдХрд╛рд╢рд╛ рд╕реВрдЪреАрдордзреАрд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рд╕рд╛рдареА JSON API рд╕реБрдзрд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • nftables python library рдЪреНрдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрдордзреНрдпреЗ, рдирд┐рдпрдо рд╕рдВрдЪрд╛рдВрдирд╛ рдЪреЗрдХ рдореЛрдбрдордзреНрдпреЗ ("-c") рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ рдЖрдгрд┐ рдмрд╛рд╣реНрдп рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдкрд░рд┐рднрд╛рд╖рд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • рд╕реЗрдЯ-рд▓рд┐рд╕реНрдЯрдЪреНрдпрд╛ рдШрдЯрдХрд╛рдВрдордзреНрдпреЗ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ.
  • рдмрд╛рдЗрдЯ рд░реЗрдЯрд▓рд┐рдорд┐рдЯрдордзреНрдпреЗ рд╢реВрдиреНрдп рдореВрд▓реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ.

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛