ืจืืช ืืงืจื ื ืืกืคืงืช ืจืง ืืืฉืง ืื ืจื ืืืชื ืชืืื ืืคืจืืืืงืื ืืืกืคืง ืคืื ืงืฆืืืช ืืกืืกืืืช ืืืืืืฅ ื ืชืื ืื ืืื ืืช, ืืืฆืืข ืคืขืืืืช ื ืชืื ืื ืืืงืจืช ืืจืืื. ืืืื ืืกืื ืื ืืืืืคืืื ืืกืคืฆืืคืืื ืืคืจืืืืงืื ืืืจืืืื ืืชืื 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"):192.68.11.123.
table 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. ip daddr. tcp dport @whitelist ืงืื
}
} - ืืกืืื ืืืจืฉืืืืช ืืคืืช, ื ืืชื ืืืฉืชืืฉ ืืื ืืืืช "typeof", ืฉืงืืืขืช ืืช ืืคืืจืื ืฉื ืืืืื ื ืืขืช ืืืชืืื.
ืืืืืื:table ip foo {
ืืืืจ ืืช ืจืฉืืืช ืืืื ืื {
ืกืื ip saddr
ืืืื ืืื = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
}ืฉืจืฉืจืช {
ืกืื ืืกื ื ืื ืืกื ื ืขืืืคืืช ื ืืชืื ืืจืืฉ; ืืจืืืช ืืืื ืืืช;
ip daddr @whitelist ืงืื
}
}table ip foo {
map addr2mark {
typeof ip saddr: ืืื ืกืืื
ืจืืืืื = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
}
} - ื ืืกืคื ืืืืืืช ืืืฉืชืืฉ ื-joins ื-NAT bindings, ืืืืคืฉืจืช ืื ืืฆืืื ืืชืืืช ืืืฆืืื ืืขืช ืืืืจืช ืืจื ืกืคืืจืืฆืืืช NAT ืืืชืืกืก ืขื ืจืฉืืืืช ืืคืืช ืื ืกืืื ืขื ืฉื:
nft add rule ip nat pre dnat ip adr. ืืฆืืื ื-ip saddr map { 1.1.1.1: 2.2.2.2. ืฉืืืฉืื}
nft ืืืกืฃ ืืคื ip nat ืืขืืื { ืืงืื ipv4_addr. inet_service: ipv4_addr. inet_service \\; }
nft add rule ip nat pre dnat ip adr. ืืฆืืื ื-ip saddr. tcp dport map @destinations - ืชืืืื ืืืืฆืช ืืืืจื ืขื ืืื ืคืขืืืืช ืกืื ืื ืืืืืฆืขืืช ืขื ืืื ืืจืืืก ืืจืฉืช. ืืืฆื ืืืคืขืืช ืืืืฆืขืืช ืืื ืืฉืืจืืช ethtool ("ethtool -K eth0 hw-tc-offload on"), ืืืืืจ ืืื ืืื ืืืคืขืืช ื-nftables ืขืืืจ ืืฉืจืฉืจืช ืืจืืฉืืช ืืืืฆืขืืช ืืื "offload". ืืขืช ืฉืืืืฉ ืืืืืช ืืื ืืงืก 5.6, ืืืฆืช ืืืืจื ื ืชืืืช ืขืืืจ ืืชืืืช ืฉืืืช ืืืชืจืช ืืืืืงืช ืืืฉืง ื ืื ืก ืืฉืืืื ืขื ืงืืื, ืืฉืืื, ืฉืืคืื (dup) ืืืขืืจื (fwd) ืื ืืช. ืืืืืื ืืืื, ืคืขืืืืช ืืฉืืืช ืื ืืช ืืืืืขืืช ืืืืชืืืช 192.168.30.20 ืืืืฆืขืืช ืืจืืช ืืจืืืก ืืจืฉืช, ืืืื ืืืขืืืจ ืืช ืืืืืืืช ืืงืจื ื:
# cat file.nft
ืืืื netdev x {
ืฉืจืฉืจืช y {
ืกืื ืืชืงื ืืืืจืช ืื ืืกื ื eth0 ืขืืืคืืช 10; ืืืจืืช ืืืืื;
ip saddr 192.168.30.20 ืืจืืื
}
}
# nft -f file.nft - ืืืืข ืืฉืืคืจ ืขื ืืืงืื ืฉืืืื ืืืืืื.
# nft delete rule ip yz handle 7
ืฉืืืื: ืื ื ืืชื ืืขืื ืืื: ืืื ืงืืืฅ ืื ืกืคืจืืื ืืืื
ืืืง ืืื ip yz handle 7
^# nft ืืืืงืช ืืื ip xx ืืืืช 7
ืฉืืืื: ืื ื ืืชื ืืขืื ืืื: ืืื ืงืืืฅ ืื ืกืคืจืืื ืืืื
ืืืง ืืช ืืื ip xx ืืืืช 7
^# nft ืืืง ืืืืช twst
ืฉืืืื: ืืื ืงืืืฅ ืื ืกืคืจืืื ืืืื; ืืื ืืชืืืื ืช ืืฉืืืื "ืืืื" ื-IP ืืฉืคืืชื?
ืืืง ืืช ืืืืื twst
^ ^ ^ ^ืืืืืื ืืจืืฉืื ื ืืจืื ืฉืืืืื "y" ืื ื ืืฆืืช ืืืขืจืืช, ืืฉื ืืื ืฉืืืืคื "7" ืืกืจ, ืืืฉืืืฉืืช ืฉืืืฆืืช ืฉืืจืช ืืงืืื ืืขืช ืืงืืืช ืฉื ืืืืื.
- ื ืืกืคื ืชืืืื ืืืืืงืช ืืืฉืง ืืขืืืื ืขื ืืื ืฆืืื "meta sdif" ืื "meta sdifname":
... meta sdifname vrf1 ...
- ื ืืกืคื ืชืืืื ืืคืขืืืืช ืืขืืจื ืืืื ื ืื ืฉืืืื. ืืืืืื, ืืื ืืืขืืืจ ืชืืืืช ืื ื ืงืืืืช ืฉืืืื ื-1 ืกืืืืืช ืืืืืืืจ ืืช ื-bit minor ื-1:
โฆ ืืื ืกืืื ืืืืจ ืืื ืกืืื lshift 1 ืื 0x1 โฆ
- ืืืืืขื ืืคืฉืจืืช "-V" ืืืฆืืช ืืืืข ืืจืกื ืืืจืื.
# nft -V
nftables v0.9.4 (Jive at Five)
cli:readline
json: ืื
minigmp:ืื
libxtables: ืื - ืืขืช ืืฉ ืืฆืืื ืืคืฉืจืืืืช ืฉืืจืช ืืคืงืืื ืืคื ื ืืคืงืืืืช. ืืืืืื, ืขืืื ืืฆืืื "nft -a list ruleset", ืืืคืขืืช "nft list ruleset -a" ืชืืจืื ืืฉืืืื.
ืืงืืจ: OpenNet.ru