рдкреНрдпрд╛рдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░ nftables 1.0.5 рдХреЛ рд░рд┐рд▓реАрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, IPv4, IPv6, ARP рд░ рдиреЗрдЯрд╡рд░реНрдХ рдмреНрд░рд┐рдЬрд╣рд░реВ (iptables, ip6table, arptables рд░ ebtables рд▓рд╛рдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреЗ рдЙрджреНрджреЗрд╢реНрдпрд▓реЗ) рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрдпрд╛рдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЗрдиреНрдЯрд░рдлреЗрд╕рд╣рд░реВ рдПрдХреАрдХреГрдд рдЧрд░реНрджреИред рдПрдХреИ рд╕рдордпрдорд╛, рд╕рд╛рдереА рдкреБрд╕реНрддрдХрд╛рд▓рдп libnftnl 1.2.3 рдХреЛ рд░рд┐рд▓реАрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, nf_tables рдЙрдкрдкреНрд░рдгрд╛рд▓реАрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдореНрди-рд╕реНрддрд░ API рдкреНрд░рджрд╛рди рдЧрд░реНрджреИред
nftables рдкреНрдпрд╛рдХреЗрдЬрдорд╛ рдкреНрдпрд╛рдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╣реБрдиреНрдЫрдиреН рдЬреБрди рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдард╛рдЙрдБрдорд╛ рдХрд╛рдо рдЧрд░реНрдЫрдиреН, рдЬрдмрдХрд┐ рдХрд░реНрдиреЗрд▓-рд╕реНрддрд░рдХреЛ рдХрд╛рдо nf_tables рдЙрдкрдкреНрд░рдгрд╛рд▓реАрджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреНрдЫ, рдЬреБрди рдХрд░реНрдиреЗрд▓рдХреЛ рднрд╛рдЧ рд╣реЛред Linux рд░рд┐рд▓рд┐рдЬ рей.резрей рджреЗрдЦрд┐, рдХрд░реНрдиреЗрд▓ рд╕реНрддрд░рдорд╛ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЯреЛрдХрд▓-рд╕реНрд╡рддрдиреНрддреНрд░ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрдмрд╛рдЯ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓реНрди, рдбреЗрдЯрд╛ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрди, рд░ рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рдЖрдзрд╛рд░рднреВрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред
рдлрд┐рд▓реНрдЯрд░рд┐рдЩ рдирд┐рдпрдорд╣рд░реВ рдЖрдлреИрдВ рд░ рдкреНрд░реЛрдЯреЛрдХрд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕рдорд╛ рдмрд╛рдЗрдЯрдХреЛрдбрдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдиреНрдЫрдиреН, рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдмрд╛рдЗрдЯрдХреЛрдб рдиреЗрдЯрд▓рд┐рдЩреНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрд░реНрдиреЗрд▓рдорд╛ рд▓реЛрдб рдЧрд░рд┐рдиреНрдЫ рд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛ рдХрд░реНрдиреЗрд▓рдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫред рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди, BPF (рдмрд░реНрдХрд▓реЗ рдкреНрдпрд╛рдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░) рдХреЛ рд╕рдореНрдЭрдирд╛ рджрд┐рд▓рд╛рдЙрдиреЗред рдпреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрд▓реЗ рдХрд░реНрдиреЗрд▓ рд╕реНрддрд░рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдлрд┐рд▓реНрдЯрд░рд┐рдЩ рдХреЛрдбрдХреЛ рдЖрдХрд╛рд░рдорд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдХрдореА рд▓реНрдпрд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рд░ рд╕рдмреИ рдирд┐рдпрдо рдкрд╛рд░реНрд╕рд┐рдЩ рд░ рдкреНрд░реЛрдЯреЛрдХрд▓ рддрд░реНрдХрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдард╛рдЙрдБрдорд╛ рд╕рд╛рд░реНрдЫред
рдореБрдЦреНрдп рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ:
- рдирд┐рдпрдо рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬрд░рдорд╛, "-o/-рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ" рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрд╛ рднрдирд┐рдиреНрдЫ, рдирд┐рдпрдо, рдирдХреНрд╕рд╛ рд░ рд╕реЗрдЯ рд╕реВрдЪреАрд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрдиреЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫред # cat ruleset.nft рддрд╛рд▓рд┐рдХрд╛ ip x { рдЪреЗрди y { рдЯрд╛рдЗрдк рдиреЗрдЯ рд╣реБрдХ рдкреЛрд╕реНрдЯрд░рд╛рдЙрдЯрд┐рдВрдЧ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ srcnat; рдиреАрддрд┐ рдЧрд┐рд░рд╛рд╡рдЯ; ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat рджреЗрдЦрд┐ 5.5.5.5:90 } } # nft -o -cft -f рдорд░реНрдЬрд┐рдЩ рдирд┐рдпрдорд╣рд░реВ:4. :3-52: ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ruleset.nft: 5:3-52: ip saddr 2.2.2.2 tcp dport 8001 snat рджреЗрдЦрд┐ 5.5.5.5t рд╕рдореНрдо sadr tcp dport рдирдХреНрд╢рд╛ { 90 . реорежрежреж: рек.рек.рек.рекред реореж, реи.реи.реи.реиред реорежрежрез: рел.рел.рел.релред репреж}
- рдЗрдерд░рдиреЗрдЯ рд░ vlan рддрддреНрд╡рд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрджрд╛, рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд╕реЗрдЯ рд╕реВрдЪреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, рдкреНрдпрд╛рдХреЗрдЯ рдкрде рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рднрд░рд┐рдПрдХреЛ рдЫред рддрд╛рд▓рд┐рдХрд╛ рдердкреНрдиреБрд╣реЛрд╕реН netdev x рдердкреНрдиреБрд╣реЛрд╕реН рдЪреЗрди netdev xy { рдкреНрд░рдХрд╛рд░ рдлрд┐рд▓реНрдЯрд░ рд╣реБрдХ рдкреНрд░рд╡реЗрд╢ рдЙрдкрдХрд░рдг enp0s25 рдкреНрд░рд╛рдердорд┐рдХрддрд╛ 0; } рдердкреНрдиреБрд╣реЛрд╕реН рд╕реЗрдЯ рдиреЗрдЯрджреЗрд╡ рдПрдХреНрд╕ рдореНрдпрд╛рдХрд╕реЗрдЯ { рдкреНрд░рдХрд╛рд░рдХреЛ рдИрдерд░ рдбреНрдпрд╛рдбрд░ред vlan рдЖрдИрдбреА; рдЭрдгреНрдбрд╛ рдЧрддрд┐рд╢реАрд▓, рдЯрд╛рдЗрдордЖрдЙрдЯ; } рдирд┐рдпрдо рдердкреНрдиреБрд╣реЛрд╕реН netdev xy рдЕрдкрдбреЗрдЯ @macset { ether daddrред vlan id рдЯрд╛рдЗрдордЖрдЙрдЯ 60s } рдирд┐рдпрдо рдердкреНрдиреБрд╣реЛрд╕реН netdev xy ether saddrред vlan рдЖрдИрдбреА { 0a:0b:0c:0d:0e:0fред 42, 0a:0b:0c:0d:0e:0fред 4095 } рдХрд╛рдЙрдиреНрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░
- рдЗрдиреНрдЯрд░рдлреЗрд╕ рдирд╛рдорд╣рд░реВрдорд╛ рдорд╛рд╕реНрдХрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рдирдХреНрд╕рд╛ рд╕реВрдЪреАрд╣рд░реВрд╕рдБрдЧ рдирд┐рдпрдорд╣рд░реВрдХреЛ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╛рдпреЛрдЬрди рдЧрд░рд┐рдПрдХреЛ рдЫред рддрд╛рд▓рд┐рдХрд╛ inet рдлрд┐рд▓реНрдЯрд░ { рдЪреЗрди INPUT { iifname vmap { "eth0" : рдЬрдореНрдк input_lan, "wg*" : рдЬрдореНрдк input_vpn } } рдЪреЗрди input_lan {} рдЪреЗрди input_vpn {} }
- рд╕рд╣реА рдирд┐рдпрдорд╣рд░реВрдХреЛ рдЧрд▓рдд рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдкрд╛рд░реНрд╕рд┐рдЩрддрд░реНрдл рдЕрдЧреНрд░рд╕рд░ рд╣реБрдиреЗ рдкреНрд░рддрд┐рдЧрд╛рдореА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд╣рдЯрд╛рдЗрдПрдХрд╛ рдЫрдиреНред
- рдврд┐рд▓реЛ рдкреНрд░рд╢реЛрдзрди рд░ рдареВрд▓рд╛ рд╕реВрдЪреАрд╣рд░реВрдХреЛ рд╕реНрд╡рдд: рдорд░реНрдЬрдХреЛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдореВрд▓реНрдп рджрд╛рдпрд░рд╛рд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреЗ рддрддреНрд╡рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫред
- рдЧрд▓рдд рд╕реЗрдЯ рд╕реВрдЪреАрдорд╛ рддрддреНрд╡рд╣рд░реВ рдердкреНрджрд╛ рдлрд┐рдХреНрд╕реНрдб рдХреНрд░реНрдпрд╛рд╕ред
рд╕реНрд░реЛрдд: opennet.ru
