ααααα·αααΊααααααααααα ααα»α αααααΆααα―αααΆααααααα·ααΈααΆαααΌαα αααααααααα»αααΆαααΆααΌαααααΆααααααΆααααΆαααΆααααα·ααααααααΈαααα ααααααααΆα ααααα·ααααα·ααΆααα·αααααα αα·αααΆααααααααααααα αΌαα α αααΆααααααΆαα αααα αα·ααααααα·ααΈαααααααααααΆααααΆαααααα·ααΈααΆαααααΌαααΆαα αααααααΆ bytecode αααα»αα αααααα’αααααααΎααααΆαα αααααΆαααα bytecode αααααααΌαααΆααααα»ααα αααα»αααΊααααααααααΎα ααα»α αααααΆαα Netlink α αΎαααααΌαααΆαααααα·ααααα·αααα»αααΊααααα αααα»ααααΆαααΈααα·αααα·ααα·ααααααααΉαααΎαααα BPF (Berkeley Packet Filters)α αα·ααΈααΆααααααααα’αα»ααααΆαα±ααα’αααααΆααααααααααΆαααααΆααααΌαααα αααααΌαααααααααααα»αααααΎαααΆααα ααααα·αααΊααα α αΎαααααΆααααΈαα»αααΆαααΆααα’ααααα αααΆααααα αα·ααααααα·ααααΆαααααΆααααααΎααΆαααΆαα½ααα·ααΈααΆααα αααα»αααα αα’αααααααΎααααΆααα
ααΆαα αααααααα·αααααΆαααα
- ααΆαβααΆααααβαααααΆααβαα½αβαα
βαααα»αβααΆαβαααααΆαα (ααΆαβααααΆααβααΆβαααα
ααβααΆααααΆααβααβα’αΆααααααΆαβαα·αβα
αααβαααβααααΎβα±ααβααΆαβααααααααβααΆααααβ) α α§ααΆα ααα αααααΆαααααα»α "αααααΈα" αααααΆαααΆαα»ααΆα―αααΆαααααΆαα ααΆααααααΆααααα "α
αααααααα" ααΉααααα αΆαααΆαααα»αα’αΆα
αα½ααααα
αΌααα½ααα
αααα»αα―αααΆαααααΆαα (αααααΆααα―αααΆαααααΆαα "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 α 80}
}αααΆααααααααααΆαα {
αααααααααααααααα αααααααα·ααααααα’αΆαα·ααΆα; ααΆαααααΆααα α»αααααααααΆα;
ip saddr α α’αΆαααΈ αααΆ tcp dport @whitelist ααα½ααα
}
} - αα
αααα»ααααα»α αα·ααααααΈαααααΈ ααΆα’αΆα
ααααΎααΆαααααΆα "typeof" ααααααααααααααααααΆαα»αα
αααααααΌααααα
α§ααΆα ααα:ααΆααΆα ip foo {
ααααααααααΈα {
αααααααα ip saddr
ααΆαα» = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
}αααΆααααααααααΆαα {
αααααααααααααααα αααααααα·ααααααα’αΆαα·ααΆα; ααΆαααααΆααα α»αααααααααΆα;
ip daddr @whitelist ααα½ααα
}
}ααΆααΆα ip foo {
αααααΈ addr2mark {
αααααα ip saddr : meta mark
ααΆαα» = { 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 saddr α tcp dport map @destinations - ααΆαααΆαααααααααΆααααΆααααααΎαααααΏααααααααΉαααΆαα½αααΉαααααα·ααααα·ααΆαααααααα½αα
ααα½ααααααααΎα‘αΎααααααΆααααααΆαα ααΆααααααΎαααααΏαααααΌαααΆαααΎαααΆααααα§αααααααααΎααααΆαα ethtool (βethtool -K eth0 hw-tc-offload onβ) αααααΆααααΈαααααΆααααΌαααΆαααααΎα±ααααααααα
αααα»α nftables αααααΆαααααααααααΆααααααΆαααααααααΎααα βoffloadβ α αα
αααααααΎααΊαααααΈαα»α
5.6 ααΆααααααΎαααααΏααααααααΉαααααΌαααΆαααΆαααααααααΆααααΆαααααΌααααααΆαααααααΆ αα·αααΆααααα½ααα·αα·αααα
ααα»α
αααααΆααα
αΌα αα½αααΆαα½αααΉαααΆαααα½α ααΆααααα
αα αααα½α (αααα½α) αα·ααααααΌααααα (fwd) αααα
ααααααααΆαα αααα»αα§ααΆα αααααΆαααααα ααααα·ααααα·ααΆααααααΆαααααα
ααααααααΆαα
ααααΈα’αΆααααααΆα 192.168.30.20 ααααΌαααΆαα’αα»αααααα
ααααα·αααΆααααααΆα ααααα·ααααααΌααααα
ααααααααΆααα
ααΊαααα
# cat file.nft
ααΆααΆα netdev x {
αααααααααΆαα y {
ααααααααααα hook ingress α§ααααα eth0 α’αΆαα·ααΆα 10; αααααΆαα·αα·α;
ip saddr 192.168.30.20 αααααΆαα
}
}
# nft -f file.nft - ααααααΆααααααΆααααααα’α’αααΈααΈααΆααααααα α»ααα
αααα»αα
αααΆααα
# nft αα»ααααα½α ip yz handle α§
ααα α»αα αα·αα’αΆα ααααΎαααΆαα αααΆααααΆαααα ααααΆαα―αααΆα α¬ααα―αααΆαααααααααα
αα»ααααα½α ip yz handle α§
^# nft αα»ααααα½α ip xx α ααα»α ααΆα α§
ααα α»αα αα·αα’αΆα ααααΎαααΆαα αααΆααααΆαααα ααααΆαα―αααΆα α¬ααα―αααΆαααααααααα
αα»ααααα½α ip xx handle α§
^# nft αα»αααΆααΆα twst
ααα α»αα ααααΆαα―αααΆα α¬ααα―αααΆαααααααααα ααΎβα’αααβααΆαβαααβααΆβααΆααΆα 'test' αααα»α family ip αα?
αα»αααΆααΆα twst
^^^^α§ααΆα αααααΈ 7 αααα αΆαααΆααΆααΆα "y" αα·αααΆααα αααα»ααααααααααα ααΈααΈααααα’ααααααααααΆα "XNUMX" ααΆαα α αΎαααΈααΈααααααα’αααααα αΌαααΆαα’ααααααααΌαααΆααααα αΆααα αααααΆααααααααΆααΆαα
- ααΆαααααααααΆαααΆαααααααααΆαααα·αα·αααααΎαα
ααα»α
αααααΆαα slave ααααααααΆαα "meta sdif" α¬ "meta sdifname"α
... meta sdifname vrf1 ...
- ααΆαααααααααΆαααΆαααααααααΆααααααα·ααααα·ααΆαααααΌαααααΆαα¬αααααα α§ααΆα ααα ααΎααααΈααααΆααααααΌαααααΆααααα
ααααααααΆααααααΆαααααΆαααα»αααα 1 αααΈα α αΎαααααααααΈαααΌα
αα
1α
β¦ ααααααααααΆααααααΆ ααααααααααΆααααααΆ lshift 1 α¬ 0x1 β¦
- ααΆαα’αα»αααααααααΎα "-V" ααΎααααΈαααα αΆαααααααΆαααααααααααα
# nft -V
nftables v0.9.4 (Jive at Five)
cli: αααααΆααα’αΆα
json: ααΆα
minigmp: ααα
libxtables: ααΆα - α₯α‘αΌαααααααααΎααααααΆααααΆααααααααΆααααΌααααααααΆαααα»ααααααΆααααααααΆα α§ααΆα ααα α’αααααααΌααααααΆαα "nft -a list ruleset" α αΎαααΆαααααΎαααΆα "nft list ruleset -a" ααΉααααααΆαα±ααααΆαααα α»αα
ααααα: opennet.ru