рдХрд░реНрдирд▓ рд╕реНрддрд░ рдлрдХреНрдд рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓-рд╕реНрд╡рддрдВрддреНрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЛ рдЬреЛ рдкреЕрдХреЗрдЯреНрд╕рдордзреВрди рдбреЗрдЯрд╛ рдХрд╛рдврдгреНрдпрд╛рд╕рд╛рдареА, рдбреЗрдЯрд╛ рдСрдкрд░реЗрд╢рдиреНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдгрд╛рд╕рд╛рдареА рдореВрд▓рднреВрдд рдХрд╛рд░реНрдпреЗ рдкреНрд░рджрд╛рди рдХрд░рддреЛ. рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдирд┐рдпрдо рдЖрдгрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣рдБрдбрд▓рд░реНрд╕ рдпреБрдЬрд░ рд╕реНрдкреЗрд╕рдордзреАрд▓ рдмрд╛рдпрдЯреЗрдХреЛрдбрдордзреНрдпреЗ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рддреНрдпрд╛рдирдВрддрд░ рд╣рд╛ рдмрд╛рдпрдХреЛрдб рдиреЗрдЯрд▓рд┐рдВрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд╛рдкрд░реВрди рдХрд░реНрдирд▓рдордзреНрдпреЗ рд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ BPF (рдмрд░реНрдХрд▓реЗ рдкреЕрдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░) рдЪреА рдЖрдард╡рдг рдХрд░реВрди рджреЗрдгрд╛рд░реНтАНрдпрд╛ рд╡рд┐рд╢реЗрд╖ рдЖрднрд╛рд╕реА рдорд╢реАрдирдордзреНрдпреЗ рдХрд░реНрдирд▓рдордзреНрдпреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рд╣рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд░реНрдирд▓ рд╕реНрддрд░рд╛рд╡рд░ рдЪрд╛рд▓рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЛрдбрдЪрд╛ рдЖрдХрд╛рд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдЬрд╛рдЧреЗрдд рдирд┐рдпрдо рдЖрдгрд┐ рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧрдЪреА рд╕рд░реНрд╡ рдХрд╛рд░реНрдпреЗ рд╣рд▓рд╡рд┐рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ.
рдореБрдЦреНрдп рдирд╡рдХрд▓реНрдкрдирд╛:
- рдХрдиреЗрдХреНрд╢рдирдордзреАрд▓ рд╢реНрд░реЗрдгреАрдВрд╕рд╛рдареА рд╕рдорд░реНрдерди (рд╕рдВрдХрд▓рди, рдкрддреНрддреНрдпрд╛рдВрдЪреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрдВрдбрд▓ рдЖрдгрд┐ рдкреЛрд░реНрдЯ рдЬреЗ рддреБрд▓рдирд╛ рд╕реБрд▓рдн рдХрд░рддрд╛рдд). рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, "рд╡реНрд╣рд╛рдЗрдЯрд▓рд┐рд╕реНрдЯ" рд╕реЗрдЯрд╕рд╛рдареА рдЬреНрдпрд╛рдЪреЗ рдШрдЯрдХ рд╕рдВрд▓рдЧреНрдирдХ рдЖрд╣реЗрдд, "рдЗрдВрдЯрд░рд╡реНрд╣рд▓" рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛рдиреЗ рдЕрд╕реЗ рд╕реВрдЪрд┐рдд рд╣реЛрдИрд▓ рдХреА рд╕рдВрдЪ рд╕рдВрд▓рдЧреНрдирдХрд╛рддреАрд▓ рд╢реНрд░реЗрдгреА рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддреЛ ("ipv4_addr . ipv4_addr . inet_service" рд╕рдВрд▓рдЧреНрдирдХрд╛рд╕рд╛рдареА рдкреВрд░реНрд╡реА рдЕрдЪреВрдХ рдпрд╛рджреА рдХрд░рдгреЗ рд╢рдХреНрдп рд╣реЛрддреЗ. "192.168.10.35. 192.68.11.123" рдлреЙрд░реНрдордЪреЗ рдЬреБрд│рддреЗ рдЖрдгрд┐ рдЖрддрд╛ рддреБрдореНрд╣реА "80-192.168.10.35-192.168.10.40" рдкрддреНрддреНрдпрд╛рдВрдЪреЗ рдЧрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛:
рдЯреЗрдмрд▓ ip foo {
рд╢реНрд╡реЗрддрд╕реВрдЪреА рд╕реЗрдЯ рдХрд░рд╛ {
ipv4_addr рдЯрд╛рдЗрдк рдХрд░рд╛. ipv4_addr. inet_service
рдзреНрд╡рдЬ рдордзреНрдпрд╛рдВрддрд░
рдШрдЯрдХ = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. реореж}
}рд╕рд╛рдЦрд│реА рдмрд╛рд░ {
рдлрд┐рд▓реНрдЯрд░ рд╣реБрдХ рдкреНрд░реАрд░реВрдЯрд┐рдВрдЧ рдкреНрд░рд╛рдзрд╛рдиреНрдп рдлрд┐рд▓реНрдЯрд░ рдЯрд╛рдЗрдк рдХрд░рд╛; рдкреЙрд▓рд┐рд╕реА рдбреНрд░реЙрдк;
ip sadr. ip daddr. tcp dport @whitelist рд╕реНрд╡реАрдХрд╛рд░рд╛
}
} - рд╕рдВрдЪ рдЖрдгрд┐ рдирдХрд╛рд╢рд╛ рд╕реВрдЪреАрдордзреНрдпреЗ, "typeof" рдирд┐рд░реНрджреЗрд╢ рд╡рд╛рдкрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ, рдЬреЗ рдЬреБрд│рддрд╛рдирд╛ рдШрдЯрдХрд╛рдЪреЗ рд╕реНрд╡рд░реВрдк рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ.
рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:рдЯреЗрдмрд▓ ip foo {
рд╢реНрд╡реЗрддрд╕реВрдЪреА рд╕реЗрдЯ рдХрд░рд╛ {
ip sadr рдЪрд╛ рдкреНрд░рдХрд╛рд░
рдШрдЯрдХ = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
}рд╕рд╛рдЦрд│реА рдмрд╛рд░ {
рдлрд┐рд▓реНрдЯрд░ рд╣реБрдХ рдкреНрд░реАрд░реВрдЯрд┐рдВрдЧ рдкреНрд░рд╛рдзрд╛рдиреНрдп рдлрд┐рд▓реНрдЯрд░ рдЯрд╛рдЗрдк рдХрд░рд╛; рдкреЙрд▓рд┐рд╕реА рдбреНрд░реЙрдк;
ip daddr @whitelist рд╕реНрд╡реАрдХрд╛рд░рд╛
}
}рдЯреЗрдмрд▓ ip foo {
рдирдХрд╛рд╢рд╛ addr2mark {
ip sadr рдЪрд╛ рдкреНрд░рдХрд╛рд░: рдореЗрдЯрд╛ рдорд╛рд░реНрдХ
рдШрдЯрдХ = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
}
} - NAT рдмрд╛рдЗрдВрдбрд┐рдВрдЧрдордзреНрдпреЗ рдЬреЙрдЗрдиреНрд╕ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА рдЖрд╣реЗ, рдЬреА рддреБрдореНрд╣рд╛рд▓рд╛ рдирдХрд╛рд╢рд╛ рд╕реВрдЪреА рдХрд┐рдВрд╡рд╛ рдирд╛рдорд╛рдВрдХрд┐рдд рд╕рдВрдЪрд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд NAT рдкрд░рд┐рд╡рд░реНрддрди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛рдирд╛ рдкрддреНрддрд╛ рдЖрдгрд┐ рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ:
nft рдЬреЛрдбрд╛ рдирд┐рдпрдо ip nat pre dnat ip addr. рдкреЛрд░реНрдЯ рддреЗ ip saddr рдирдХрд╛рд╢рд╛ { 1.1.1.1 : 2.2.2.2 . рддреАрд╕ }
nft рдирдХрд╛рд╢рд╛ ip nat рдЧрдВрддрд╡реНрдпреЗ рдЬреЛрдбрд╛ { ipv4_addr рдЯрд╛рдЗрдк рдХрд░рд╛. inet_service: ipv4_addr. inet_service \\; }
nft рдЬреЛрдбрд╛ рдирд┐рдпрдо ip nat pre dnat ip addr. рдкреЛрд░реНрдЯ рддреЗ ip sadr. tcp dport рдирдХрд╛рд╢рд╛ @destinations - рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдбрджреНрд╡рд╛рд░реЗ рдХрд╛рд╣реА рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╣ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдкреНрд░рд╡реЗрдЧрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди. рдПрдердЯреВрд▓ рдпреБрдЯрд┐рд▓рд┐рдЯреА ("ethtool -K eth0 hw-tc-offload рдЪрд╛рд▓реВ") рджреНрд╡рд╛рд░реЗ рдкреНрд░рд╡реЗрдЧ рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рддреНрдпрд╛рдирдВрддрд░ рддреЗ "рдСрдлрд▓реЛрдб" рдзреНрд╡рдЬ рд╡рд╛рдкрд░реВрди рдореБрдЦреНрдп рд╕рд╛рдЦрд│реАрд╕рд╛рдареА nftables рдордзреНрдпреЗ рд╕рдХреНрд░рд┐рдп рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓ 5.6 рд╡рд╛рдкрд░рддрд╛рдирд╛, рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдкреНрд░рд╡реЗрдЧ рд╣реЗрдбрд░ рдлреАрд▓реНрдб рдореЕрдЪрд┐рдВрдЧ рдЖрдгрд┐ рдЗрдирдХрдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рддрдкрд╛рд╕рдгреАрд╕рд╛рдареА рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ, рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ, рдЯрд╛рдХреВрди рджреЗрдгреЗ, рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдгреЗ (dup), рдЖрдгрд┐ рдлреЙрд░рд╡рд░реНрдбрд┐рдВрдЧ (fwd) рдкреЕрдХреЗрдЯреНрд╕рд╕рд╣. рдЦрд╛рд▓реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдд, 192.168.30.20 рдкрддреНрддреНрдпрд╛рд╡рд░реВрди рдпреЗрдгрд╛рд░реЗ рдкреЕрдХреЗрдЯреНрд╕ рдЯрд╛рдХрдгреНрдпрд╛рдЪреЗ рдСрдкрд░реЗрд╢рди рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рд╕реНрддрд░рд╛рд╡рд░ рдкреЕрдХреЗрдЯреНрд╕ рдХрд░реНрдирд▓рдХрдбреЗ рди рджреЗрддрд╛ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд:
# cat file.nft
рдЯреЗрдмрд▓ рдиреЗрдЯрджреЗрд╡ x {
рд╕рд╛рдЦрд│реА y {
рдлрд┐рд▓реНрдЯрд░ рд╣реБрдХ рдЗрдирдЧреНрд░реЗрд╕ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ eth0 рдкреНрд░рд╛рдзрд╛рдиреНрдп 10 рдЯрд╛рдЗрдк рдХрд░рд╛; рдлреНрд▓реЕрдЧ рдСрдлрд▓реЛрдб;
ip saddr 192.168.30.20 рдбреНрд░реЙрдк
}
}
# nft -f file.nft - рдирд┐рдпрдорд╛рдВрдордзреАрд▓ рддреНрд░реБрдЯреАрдЪреНрдпрд╛ рд╕реНрдерд╛рдирд╛рдмрджреНрджрд▓ рд╕реБрдзрд╛рд░рд┐рдд рдорд╛рд╣рд┐рддреА.
# nft рд╣рдЯрд╡рд╛ рдирд┐рдпрдо ip yz рд╣рдБрдбрд▓ 7
рддреНрд░реБрдЯреА: рдирд┐рдпрдорд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреЗ рд╢рдХреНрдп рдирд╛рд╣реА: рдЕрд╢реА рдХреЛрдгрддреАрд╣реА рдлрд╛рдЗрд▓ рдХрд┐рдВрд╡рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рд╣реА
рдирд┐рдпрдо ip yz рд╣рдБрдбрд▓ 7 рд╣рдЯрд╡рд╛
^# nft рд╣рдЯрд╡рд╛ рдирд┐рдпрдо ip xx рд╣рдБрдбрд▓ 7
рддреНрд░реБрдЯреА: рдирд┐рдпрдорд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреЗ рд╢рдХреНрдп рдирд╛рд╣реА: рдЕрд╢реА рдХреЛрдгрддреАрд╣реА рдлрд╛рдЗрд▓ рдХрд┐рдВрд╡рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рд╣реА
рдирд┐рдпрдо ip xx рд╣рдБрдбрд▓ 7 рд╣рдЯрд╡рд╛
^# nft рдЯреЗрдмрд▓ twst рд╣рдЯрд╡рд╛
рддреНрд░реБрдЯреА: рдЕрд╢реА рдХреЛрдгрддреАрд╣реА рдлрд╛рдЗрд▓ рдХрд┐рдВрд╡рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рд╣реА; рддреБрдореНрд╣рд╛рд▓рд╛ рдлреЕрдорд┐рд▓реА рдЖрдпрдкреА рдордзреАрд▓ рдЯреЗрдмрд▓ 'рдЪрд╛рдЪрдгреА' рдореНрд╣рдгрд╛рдпрдЪреЗ рдЖрд╣реЗ рдХрд╛?
рдЯреЗрдмрд▓ twst рд╣рдЯрд╡рд╛
^^^^рдкрд╣рд┐рд▓реЗ рдЙрджрд╛рд╣рд░рдг рджрд╛рдЦрд╡рддреЗ рдХреА рдЯреЗрдмрд▓ тАЬyтАЭ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдирд╛рд╣реА, рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ тАЬ7тАЭ рд╣рдБрдбрд▓рд░ рдЧрд╣рд╛рд│ рдЖрд╣реЗ рдЖрдгрд┐ рддрд┐рд╕рд░реЗ рдореНрд╣рдгрдЬреЗ рдЯреЗрдмрд▓рдЪреЗ рдирд╛рд╡ рдЯрд╛рдЗрдк рдХрд░рддрд╛рдирд╛ рдЯрд╛рдпрдкреЛ рдкреНрд░реЙрдореНрдкреНрдЯ рджрд┐рд╕реВрди рдпреЗрддреЛ.
- "meta sdif" рдХрд┐рдВрд╡рд╛ "meta sdifname" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВрди рд╕реНрд▓реЗрд╡реНрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ:
... meta sdifname vrf1 ...
- рдЙрдЬрд╡реАрдХрдбреЗ рдХрд┐рдВрд╡рд╛ рдбрд╛рд╡реАрдХрдбреЗ рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡рд┐рджреНрдпрдорд╛рди рдкреЕрдХреЗрдЯ рд▓реЗрдмрд▓ 1 рдмрд┐рдЯрдиреЗ рд╢рд┐рдлреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдХрд┐рд░рдХреЛрд│ рдмрд┐рдЯ 1 рд╡рд░ рд╕реЗрдЯ рдХрд░рд╛:
тАж рдореЗрдЯрд╛ рдорд╛рд░реНрдХ рд╕реЗрдЯ рдореЗрдЯрд╛ рдорд╛рд░реНрдХ lshift 1 рдХрд┐рдВрд╡рд╛ 0x1 тАж
- рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЖрд╡реГрддреНрддреА рдорд╛рд╣рд┐рддреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "-V" рдкрд░реНрдпрд╛рдп рд▓рд╛рдЧреВ рдХреЗрд▓рд╛.
# nft -V
nftables v0.9.4 (рдкрд╛рдЪ рд╡рд░ рдЬреАрд╡)
cli:readline
json: рд╣реЛрдп
minigmp: рдирд╛рд╣реА
libxtables: рд╣реЛрдп - рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░реНрдпрд╛рдп рдЖрддрд╛ рдХрдорд╛рдВрдбреНрд╕рдЪреНрдпрд╛ рдЖрдзреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣рд╛рд▓рд╛ "nft -a list ruleset" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ "nft list ruleset -a" рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рдиреЗ рддреНрд░реБрдЯреА рдпреЗрдИрд▓.
рд╕реНрддреНрд░реЛрдд: opennet.ru