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

рдкреЕрдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░ nftables 0.9.9 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдЭрд╛рд▓реЗ рдЖрд╣реЗ, IPv4, IPv6, ARP рдЖрдгрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдмреНрд░рд┐рдЬ (iptables, ip6table, arptables рдЖрдгрд┐ ebtables рдмрджрд▓рдгреНрдпрд╛рдЪреНрдпрд╛ рдЙрджреНрджреЗрд╢рд╛рдиреЗ) рд╕рд╛рдареА рдкреЕрдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдХрддреНрд░ рдХрд░рдгреЗ. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рд╕рд╣рдЪрд░ рд▓рд╛рдпрдмреНрд░рд░реА libnftnl 1.2.0 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдЭрд╛рд▓реЗ, рдЬреЗ nf_tables рдЙрдкрдкреНрд░рдгрд╛рд▓реАрд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рд╕рд╛рдареА рдирд┐рдореНрди-рд╕реНрддрд░реАрдп API рдкреНрд░рджрд╛рди рдХрд░рддреЗ. nftables 0.9.9 рд░рд┐рд▓реАрдЭ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реЗ рдмрджрд▓ Linux рдХрд░реНрдирд▓ 5.13-rc1 рдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗрдд.

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

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

рдореБрдЦреНрдп рдирд╡рдХрд▓реНрдкрдирд╛:

  • рдлреНрд▓реЛрдЯреЗрдмрд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдбреЕрдкреНрдЯрд░ рдмрд╛рдЬреВрд▓рд╛ рд╣рд▓рд╡рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, 'рдСрдлрд▓реЛрдб' рдзреНрд╡рдЬ рд╡рд╛рдкрд░реВрди рд╕рдХреНрд╖рдо рдХреЗрд▓реА рдЖрд╣реЗ. рдлреНрд▓реЛрдЯреЗрдмрд▓ рд╣реА рдкреЕрдХреЗрдЯ рд░реАрдбрд╛рдпрд░реЗрдХреНрд╢рдирдЪрд╛ рдорд╛рд░реНрдЧ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдпрдВрддреНрд░рдгрд╛ рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рд╕рд░реНрд╡ рдирд┐рдпрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдЦрд│реНрдпрд╛рдВрдЪрд╛ рд╕рдВрдкреВрд░реНрдг рд░рд╕реНрддрд╛ рдлрдХреНрдд рдкрд╣рд┐рд▓реНрдпрд╛ рдкреЕрдХреЗрдЯрд╡рд░ рд▓рд╛рдЧреВ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рдкреНрд░рд╡рд╛рд╣рд╛рддреАрд▓ рдЗрддрд░ рд╕рд░реНрд╡ рдкреЕрдХреЗрдЯ рдереЗрдЯ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдЯреЗрдмрд▓ ip рдЧреНрд▓реЛрдмрд▓ { рдлреНрд▓реЛрдЯреЗрдмрд▓ f { рд╣реБрдХ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рд╛рдзрд╛рдиреНрдп рдлрд┐рд▓реНрдЯрд░ + 1 рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ = { lan3, lan0, wan } рдлреНрд▓реЕрдЧ рдСрдлрд▓реЛрдб } рдЪреЗрди рдлреЙрд░рд╡рд░реНрдб { рдЯрд╛рдИрдк рдлрд┐рд▓реНрдЯрд░ рд╣реБрдХ рдлреЙрд░рд╡рд░реНрдб рдкреНрд░рд╛рдпреЙрд░рд┐рдЯреА рдлрд┐рд▓реНрдЯрд░; рдзреЛрд░рдг рд╕реНрд╡реАрдХрд╛рд░рдгреЗ; ip рдкреНрд░реЛрдЯреЛрдХреЙрд▓ { tcp, udp } рдлреНрд▓реЛ рдЕреЕрдб @f } рдЪреЗрди рдкреЛрд╕реНрдЯ { рдЯрд╛рдИрдк рдиреЗрдЯ рд╣реБрдХ рдкреЛрд╕реНрдЯрд░реВрдЯрд┐рдВрдЧ рдкреНрд░рд╛рдпреЙрд░рд┐рдЯреА рдлрд┐рд▓реНрдЯрд░; рдзреЛрд░рдг рд╕реНрд╡реАрдХрд╛рд░рдгреЗ; oifname "рд╡реЕрди" рдорд╛рд╕реНрдХрд░реЗрдб } }
  • рдПрдХрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрджреНрд╡рд╛рд░реЗ рдЯреЗрдмрд▓рдЪрд╛ рдЕрдирдиреНрдп рд╡рд╛рдкрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯреЗрдмрд▓рд╡рд░ рдорд╛рд▓рдХ рдзреНрд╡рдЬ рд╕рдВрд▓рдЧреНрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ. рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрдкреБрд╖реНрдЯрд╛рдд рдЖрд▓реНрдпрд╛рд╡рд░, рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рд░рдгреА рдЖрдкреЛрдЖрдк рд╣рдЯрд╡рд┐рд▓реА рдЬрд╛рддреЗ. рдкреНрд░рдХреНрд░рд┐рдпреЗрдмрджреНрджрд▓рдЪреА рдорд╛рд╣рд┐рддреА рдЯрд┐рдкреНтАНрдкрдгреАрдЪреНтАНрдпрд╛ рд╕реНтАНрд╡рд░реВрдкрд╛рдд рдирд┐рдпрдо рдбрдВрдкрдордзреНтАНрдпреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ: рдЯреЗрдмрд▓ ip x { # progname nft flags owner chain y { type filter hook input priority filter; рдзреЛрд░рдг рд╕реНрд╡реАрдХрд╛рд░рдгреЗ; рдХрд╛рдЙрдВрдЯрд░ рдкреЕрдХреЗрдЯ 1 рдмрд╛рдЗрдЯ 309 } }
  • IEEE 802.1ad рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди (VLAN рд╕реНрдЯреЕрдХрд┐рдВрдЧ рдХрд┐рдВрд╡рд╛ QinQ) рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рдПрдХрд╛рдЪ рдЗрдерд░рдиреЗрдЯ рдлреНрд░реЗрдордордзреНрдпреЗ рдПрдХрд╛рдзрд┐рдХ VLAN рдЯреЕрдЧ рдмрджрд▓рдгреНрдпрд╛рдЪреЗ рд╕рд╛рдзрди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдмрд╛рд╣реНрдп рдЗрдерд░рдиреЗрдЯ рдлреНрд░реЗрдо 8021ad рдЖрдгрд┐ vlan id=342 рдЪрд╛ рдкреНрд░рдХрд╛рд░ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдмрд╛рдВрдзрдХрд╛рдо рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛ ... рдЗрдерд░ рдЯрд╛рдИрдк рдХрд░рд╛ 802.1ad vlan id 342 рдЗрдерд░рдиреЗрдЯ рдлреНрд░реЗрдордЪрд╛ рдмрд╛рд╣реНрдп рдкреНрд░рдХрд╛рд░ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА 8021ad/vlan id=1, рдиреЗрд╕реНрдЯреЗрдб 802.1 q/vlan id=2 рдЖрдгрд┐ рдкреБрдвреАрд▓ IP рдкреЕрдХреЗрдЯ encapsulation: ... рдЗрдерд░ рдкреНрд░рдХрд╛рд░ 8021ad vlan id 1 vlan рдкреНрд░рдХрд╛рд░ 8021q vlan id 2 vlan рдкреНрд░рдХрд╛рд░ ip counter
  • рдпреБрдирд┐рдлрд╛рдЗрдб рдкрджрд╛рдиреБрдХреНрд░рдо cgroups v2 рд╡рд╛рдкрд░реВрди рд╕рдВрд╕рд╛рдзрдиреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ. cgroups v2 рдЖрдгрд┐ v1 рдордзреАрд▓ рдореБрдЦреНрдп рдлрд░рдХ рдореНрд╣рдгрдЬреЗ CPU рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдЯрдк рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдореЗрдорд░реА рд╡рд╛рдкрд░рд╛рдЪреЗ рдирд┐рдпрдорди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ I/O рд╕рд╛рдареА рд╕реНрд╡рддрдВрддреНрд░ рдкрджрд╛рдиреБрдХреНрд░рдорд╛рдВрдРрд╡рдЬреА рд╕рд░реНрд╡ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд╕рдВрд╕рд╛рдзрдирд╛рдВрд╕рд╛рдареА рд╕рд╛рдорд╛рдиреНрдп cgroups рдкрджрд╛рдиреБрдХреНрд░рдорд╛рдЪрд╛ рд╡рд╛рдкрд░. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкрд╣рд┐рд▓реНрдпрд╛ рд╕реНрддрд░рд╛рд╡рд░реАрд▓ cgroupv2 рд╡рд░реАрд▓ рд╕реЙрдХреЗрдЯрдЪрд╛ рдкреВрд░реНрд╡рдЬ тАЬsystem.sliceтАЭ рдорд╛рд╕реНрдХрд╢реА рдЬреБрд│рддреЛ рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдмрд╛рдВрдзрдХрд╛рдо рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛: ... socket cgroupv2 рд╕реНрддрд░ 1 тАЬsystem.sliceтАЭ
  • SCTP рдкреЕрдХреЗрдЯрдЪреЗ рдШрдЯрдХ рддрдкрд╛рд╕рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА (рдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ Linux рдХрд░реНрдирд▓ 5.14 рдордзреНрдпреЗ рджрд┐рд╕реВрди рдпреЗрдИрд▓). рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреЕрдХреЗрдЯрдордзреНрдпреЗ 'рдбреЗрдЯрд╛' рдЯрд╛рдИрдк рдЖрдгрд┐ рдлреАрд▓реНрдб 'рдЯрд╛рдЗрдк' рдЕрд╕рд▓реЗрд▓рд╛ рднрд╛рдЧ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА: ... sctp рдЪрдВрдХ рдбреЗрдЯрд╛ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрд╣реЗ ... sctp рднрд╛рдЧ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ 0
  • рдирд┐рдпрдо рд▓реЛрдбрд┐рдВрдЧ рдСрдкрд░реЗрд╢рдирдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА "-f" рдзреНрд╡рдЬ рд╡рд╛рдкрд░реВрди рдЕрдВрджрд╛рдЬреЗ рджреЛрди рд╡реЗрд│рд╛ рд╡реЗрдЧрд╡рд╛рди рдЭрд╛рд▓реА рдЖрд╣реЗ. рдирд┐рдпрдорд╛рдВрдЪреНрдпрд╛ рдпрд╛рджреАрдЪреЗ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦреАрд▓ рд╡реЗрдЧрд╡рд╛рди рдЭрд╛рд▓реЗ рдЖрд╣реЗ.
  • рдзреНрд╡рдЬ рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рдЖрд╣реЗрдд рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдлреЙрд░реНрдо рдкреНрд░рджрд╛рди рдХреЗрд▓рд╛ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, snat рдЖрдгрд┐ dnat рд╕реНрдерд┐рддреА рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рдХреЗрд▓реЗрд▓реЗ рдирд╛рд╣реАрдд рд╣реЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛: ... ct рд╕реНрдерд┐рддреА ! snat,dnat рдмрд┐рдЯрдорд╛рд╕реНрдХрдордзреНрдпреЗ syn рдмрд┐рдЯ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ рд╣реЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА. ... tcp рдзреНрд╡рдЬ ! = рдлрд┐рди, rst / syn, ack, fin, rst
  • рд╕реЗрдЯ/рдирдХрд╛рд╢рд╛ рдкреНрд░рдХрд╛рд░рд╛рддреАрд▓ рдкрд░рд┐рднрд╛рд╖рд╛рдВрдордзреНрдпреЗ "рдирд┐рд░реНрдгрдп" рдХреАрд╡рд░реНрдбрд▓рд╛ рдЕрдиреБрдорддреА рджреНрдпрд╛: рдирдХрд╛рд╢рд╛ xm { typeof iifname рдЬреЛрдбрд╛. рдЖрдпрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ th dport : рдирд┐рд░реНрдгрдп;}

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

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