เปเบเบฅเบฐเบเบฑเบ kernel, เบเบฝเบเปเบเปเปเบเบฑเบเบเบปเบงเปเบเปเบเบญเบเปเบเบเปเบญเบเบฐเบฅเบฒเบเบเบญเบเปเบเปเบเบเบญเบเบเบปเปเบงเปเบเบเบตเปเบชเบฐเบซเบเบญเบเบซเบเปเบฒเบเบตเปเบเบทเปเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบฐเบเบฑเบเบเปเปเบกเบนเบเบเบฒเบเปเบเบฑเบเปเบเบฑเบ, เบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบญเบเบเปเปเบกเบนเบ, เปเบฅเบฐเบเบฒเบเบเบงเบเบเบธเบกเบเบฒเบเปเบซเบผ. เบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเปเบงเบเบเบปเบเปเบญเบเปเบฅเบฐเบเบปเบงเบเบฑเบเบเบฒเบเบชเบฐเปเบเบฒเบฐเปเบเปเบเบเบญเบเปเบเปเบเบทเบเบฅเบงเบเบฅเบงเบกเปเบเบปเปเบฒเปเบเปเบ bytecode เบเปเบญเบเบเบนเปเปเบเป, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ bytecode เบเบตเปเบเบทเบเปเบซเบฅเบเปเบเบปเปเบฒเปเบเปเบ kernel เปเบเบเปเบเปเบเบฒเบเปเบเปเบเบญเบ Netlink เปเบฅเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบ kernel เปเบเปเบเบทเปเบญเบ virtual เบเบดเปเบชเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบ BPF (Berkeley Packet Filters). เบงเบดเบเบตเบเบฒเบเบเบตเปเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบชเบฒเบกเบฒเบเบซเบผเบธเบเบฅเบปเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเบตเปเปเบฅเปเบเบขเบนเปเปเบเบฅเบฐเบเบฑเบ kernel เปเบฅเบฐเบเปเบฒเบเบซเบเปเบฒเบเบตเปเบเบฑเบเบซเบกเบปเบเบเบญเบเบเบฒเบเปเบเบเบเบปเบเบฅเบฐเบเบฝเบเปเบฅเบฐเปเบซเบเบเบปเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเปเบเบเบญเบเปเบเบปเปเบฒเปเบเปเบเบเบทเปเบเบเบตเปเบเบญเบเบเบนเปเปเบเป.
เบเบฐเบงเบฑเบเบเบฐเบเปเบฒเบเบปเปเบเบเป:
- เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบเปเบฅเบเบฐเปเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป (concatenation, เบกเบฑเบเบเบตเปเปเบเปเบเบญเบเบเบญเบเบเบตเปเบขเบนเปเปเบฅเบฐเบเบญเบเบเบตเปเบเปเบฒเบเบเบฒเบเบเบฝเบเบเบฝเบ). เบเบปเบงเบขเปเบฒเบ, เบชเปเบฒเบฅเบฑเบเบเบธเบ "เบเบฑเบเบเบตเบเบฒเบง" เบเบตเปเบกเบตเบญเบปเบเบเบฐเบเบญเบเปเบเบฑเบเปเบเบฅเปเปเบเบ, เบเบฒเบเบฅเบฐเบเบธเบเบธเบ "เปเบฅเบเบฐเบซเปเบฒเบ" เบเบฐเบเบตเปเปเบซเปเปเบซเบฑเบเบงเปเบฒเบเบธเบเบเบฑเปเบเบเปเบฒเบงเบชเบฒเบกเบฒเบเบเบฐเบเบญเบเบกเบตเปเบฅเบเบฐเบเปเบฒเบเปเปเบเปเบเบฅเปเปเบเบ (เบชเปเบฒเบฅเบฑเบเปเบเบฅเปเปเบเบ "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}
}เปเบเบเปเบชเป {
type filter hook prerouting priority filter; เบเบฐเปเบเบเบฒเบเบซเบผเบธเบเบฅเบปเบ;
ip saddr. ip เบเปเป. tcp dport @whitelist เบเบญเบกเบฎเบฑเบ
}
} - เปเบเบเบธเบเปเบฅเบฐเบฅเบฒเบเบเบฒเบเปเบเบเบเบตเป, เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเปเบเปเบเปเบฒเบชเบฑเปเบ "typeof", เปเบเบดเปเบเบเปเบฒเบเบปเบเบฎเบนเบเปเบเบเบเบญเบเบญเบปเบเบเบฐเบเบญเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฑเบเบเบนเป.
เบเบปเบงเบขเปเบฒเบ:เบเบฒเบเบฐเบฅเบฒเบ ip foo {
เบเบฑเปเบเบเบฑเบเบเบตเบเบฒเบง {
เบเบฐเปเบเบเบเบญเบ ip saddr
เบญเบปเบเบเบฐเบเบญเบ = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
}เปเบเบเปเบชเป {
type filter hook prerouting priority filter; เบเบฐเปเบเบเบฒเบเบซเบผเบธเบเบฅเบปเบ;
ip daddr @whitelist เบเบญเบกเบฎเบฑเบ
}
}เบเบฒเบเบฐเบฅเบฒเบ ip foo {
เปเบเบเบเบตเป addr2mark {
เบเบฐเปเบเบเบเบญเบ ip saddr: เปเบเบทเปเบญเบเบซเบกเบฒเบ meta
เบญเบปเบเบเบฐเบเบญเบ = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
}
} - เปเบเบตเปเบกเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเปเบเปเบเบฒเบเบฎเปเบงเบกเปเบเบเบฒเบเบเบนเบเบกเบฑเบ NAT, เปเบเบดเปเบเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบฐเบเบธเบเบตเปเบขเบนเปเปเบฅเบฐเบเบญเบเปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบปเบเบเบฒเบเบซเบฑเบเบเปเบฝเบ NAT เปเบเบเบญเบตเบเปเบชเปเบฅเบฒเบเบเบทเปเปเบเบเบเบตเปเบซเบผเบทเบเบธเบเบเบตเปเบกเบตเบเบทเป:
nft เปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบ ip nat pre dnat ip addr . port to ip saddr map { 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 . port to ip saddr. tcp dport เปเบเบเบเบตเป @destinations - เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบเปเบฅเบฑเปเบเบฎเบฒเบเปเบงเบเบตเปเบกเบตเบเบฒเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเบฐเบเบดเบเบฑเบเปเบเบเบเบฑเบเปเบเบทเบญเบเปเบฒเบ. เบเบฒเบเปเบฅเบฑเปเบเปเบกเปเบเปเบเบตเบเปเบเปเบเปเบฒเบ ethtool utility (โethtool -K eth0 hw-tc-offload onโ), เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบฑเบเบเบทเบเปเบเบตเบเปเบเปเปเบ nftables เบชเปเบฒเบฅเบฑเบเบฅเบฐเบเบปเบเบเปเบญเบเปเบชเปเบเบปเปเบเบเปเปเบเบเปเบเปเบเบธเบ "offload". เปเบกเบทเปเบญเปเบเป Linux kernel 5.6, เบเบฒเบเปเบฅเบฑเปเบเบฎเบฒเบเปเบงเปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบนเปเบเบฒเบเบชเบฐเบซเบเบฒเบก header เปเบฅเบฐเบเบฒเบเบเบงเบเบชเบญเบเบเบฒเบเปเบเปเบเบญเบเบเบฒเปเบเบปเปเบฒเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบฑเบเบเบฒเบเบฎเบฑเบ, เบเบฒเบเบเบปเบเปเบฅเบตเบ, duplicating (dup), เปเบฅเบฐเบเบฒเบเบชเบปเปเบเบเปเป (fwd) packets. เปเบเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป, เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบญเบเบเบฒเบเบซเบผเบธเบเบฅเบปเบเปเบเบฑเบเปเบเบฑเบเบเบตเปเบกเบฒเบเบฒเบเบเบตเปเบขเบนเป 192.168.30.20 เปเบกเปเบเบเบฐเบเบดเบเบฑเบเบขเบนเปเปเบเบฅเบฐเบเบฑเบเบเบฑเบเปเบเบทเบญเบเปเบฒเบ, เปเบเบเบเปเปเบกเบตเบเบฒเบเบชเบปเปเบเปเบเบฑเบเปเบเบฑเบเปเบเบซเบฒเปเบเปเบ:
# cat file.nft
เบเบฒเบเบฐเบฅเบฒเบ netdev x {
เปเบชเป y {
type filter hook ingress เบญเบธเบเบฐเบเบญเบ eth0 เบเบนเบฅเบดเบกเบฐเบชเบดเบ 10; เบเบธเบ offload;
ip saddr 192.168.30.20 เบซเบผเบธเบเบฅเบปเบ
}
}
# nft -f file.nft - เบเบฒเบเบเบฑเบเบเบธเบเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบชเบฐเบเบฒเบเบเบตเปเบเบญเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเบเบปเบเบฅเบฐเบเบฝเบ.
# nft เบฅเบถเบเบเบปเบเบฅเบฐเบเบฝเบ ip yz handle 7
เบเบดเบเบเบฒเบ: เบเปเปเบชเบฒเบกเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเบปเบเบฅเบฐเบเบฝเบ: เบเปเปเบกเบตเปเบเบฅเป เบซเบผเบทเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฑเปเบเบเปเบฒเบง
เบฅเบถเบเบเบปเบเบฅเบฐเบเบฝเบ ip yz handle 7
^# nft เบฅเบถเบเบเบปเบเบฅเบฐเบเบฝเบ ip xx handle 7
เบเบดเบเบเบฒเบ: เบเปเปเบชเบฒเบกเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเบปเบเบฅเบฐเบเบฝเบ: เบเปเปเบกเบตเปเบเบฅเป เบซเบผเบทเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฑเปเบเบเปเบฒเบง
เบฅเบถเบเบเบปเบเบฅเบฐเบเบฝเบ ip xx handle 7
^# nft เบฅเบถเบเบเบฒเบเบฐเบฅเบฒเบ twst
เบเบดเบเบเบฒเบ: เบเปเปเบกเบตเปเบเบฅเป เบซเบผเบทเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฑเปเบเบเปเบฒเบง; เปเบเบปเปเบฒเปเบฒเบเปเบเบดเบเบเบฒเบเบฐเบฅเบฒเบ รขโฌหtest' เปเบ family ip เบเป?
เบฅเบถเบเบเบฒเบเบฐเบฅเบฒเบ twst
^^^^เบเบปเบงเบขเปเบฒเบเบเปเบฒเบญเบดเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒเบเบฒเบเบฐเบฅเบฒเบ "y" เบเปเปเปเบเปเบขเบนเปเปเบเบฅเบฐเบเบปเบ, เบญเบฑเบเบเบตเบชเบญเบเบเบตเปเบเบปเบงเบเบฑเบเบเบฒเบ "7" เบซเบฒเบเปเบ, เปเบฅเบฐเบญเบฑเบเบเบตเบชเบฒเบกเบเบตเปเบเบฒเบเปเบเบทเบญเบเบเบดเบกเบเบดเบกเบเบทเบเบชเบฐเปเบเบเปเบกเบทเปเบญเบเบดเบกเบเบทเปเบเบฒเบเบฐเบฅเบฒเบ.
- เปเบเบตเปเบกเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบงเบเบชเบญเบเบเบฒเบเปเบเปเบเบญเบเบชเปเบฒเบฅเบญเบเปเบเบเบเบฒเบเบฅเบฐเบเบธ "meta sdif" เบซเบผเบท "meta sdifname":
... meta sdifname vrf1 ...
- เปเบเบตเปเบกเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเบฝเบเบเบงเบฒเบซเบผเบทเบเปเบฒเบ. เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเบเปเบฝเบเบเปเบฒเบเปเบเบฑเบเปเบเบฑเบเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบงเบเบฐเปเบงเป 1 เบเบดเบ เปเบฅเบฐเบเบฑเปเบเบเบดเบเบเปเบญเบเปเบเบฑเบ 1:
โฆ meta mark เบเบฑเปเบเปเบเบทเปเบญเบเปเบฒเบ meta 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