เบเบฒเบเบเปเบญเบเบเบปเบงเบเบญเบ packet nftables 1.0.0 เปเบเปเบเบทเบเบเบฑเบเบเบตเบกเบกเบฒ, unifying packet filtering interfaces เบชเปเบฒเบฅเบฑเบ IPv4, IPv6, ARP เปเบฅเบฐเบเบปเบงเปเบเบทเบญเบเปเบฒเบ (เบกเบตเบเบธเบเบเบฐเบชเบปเบเปเบเบทเปเบญเบเบปเบเปเบเบ iptables, ip6table, arptables เปเบฅเบฐ ebtables). เบเบฒเบเบเปเบฝเบเปเบเบเบเบตเปเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบญเบ nftables 1.0.0 เปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเปเบกเปเบเบฅเบงเบกเบขเบนเปเปเบ Linux 5.13 kernel. เบเบฒเบเบเปเบฝเบเปเบเบเบเบตเปเบชเปเบฒเบเบฑเบเปเบเบเปเบฒเบเบงเบเบฎเบธเปเบเบเปเปเปเบเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบทเปเบเบเบฒเบเปเบเป, เปเบเปเบเบฝเบเปเบเปเปเบเบฑเบเบเบปเบเบกเบฒเบเบฒเบเบเบฒเบเบชเบทเบเบเปเปเบเบตเปเบชเบญเบเบเปเบญเบเบเบญเบเบเบปเบงเปเบฅเบเปเบเบซเบกเบฒเบเปเบฅเบเบเบปเบเบชเบฐเบเบดเบเบปเบก (เบเบฒเบเบเปเบญเบเบเบตเปเบเปเบฒเบเบกเบฒเปเบกเปเบ 0.9.9).
เบเบธเบ nftables เบเบฐเบเบญเบเบกเบตเบญเบปเบเบเบฐเบเบญเบเบเบฒเบเบเบฑเปเบเบเบญเบเปเบเบฑเบเปเบเบฑเบเบเบตเปเบเปเบฒเปเบเบตเบเบเบฒเบเบขเบนเปเปเบเบเบทเปเบเบเบตเปเบเบญเบเบเบนเปเปเบเป, เปเบเบเบฐเบเบฐเบเบตเปเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเบฅเบฐเบเบฑเบ kernel เปเบกเปเบเบชเบฐเบซเบเบญเบเปเบซเปเปเบเบเบฅเบฐเบเบปเบเบเปเบญเบ nf_tables, เปเบเบดเปเบเปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบ Linux kernel เบเบฑเบเบเบฑเปเบเปเบเปเบเบฒเบเบเปเบญเบ 3.13. เบฅเบฐเบเบฑเบ kernel เบชเบฐเบซเบเบญเบเบเบฝเบเปเบเปเบชเปเบงเบเบเบดเบเบเปเปเปเบเบเปเบญเบเบฐเบฅเบฒเบเบเบญเบเปเบเปเบเบเบญเบเบเบปเปเบงเปเบเบเบตเปเบชเบฐเบซเบเบญเบเบซเบเปเบฒเบเบตเปเบเบทเปเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบฐเบเบฑเบเบเปเปเบกเบนเบเบเบฒเบเปเบเบฑเบเปเบเบฑเบ, เบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ, เปเบฅเบฐเบเบฒเบเบเบงเบเบเบธเบกเบเบฒเบเปเบซเบผ.
เบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบเบฑเปเบเบเบญเบเปเบฅเบฐเบเบปเบงเบเบฑเบเบเบฒเบเบชเบฐเปเบเบฒเบฐเบเบญเบเปเบเปเบเบเบญเบเปเบเปเบเบทเบเบฅเบงเบเบฅเบงเบกเปเบเบปเปเบฒเปเบเปเบ bytecode เปเบเบเบทเปเบเบเบตเปเบเบนเปเปเบเป, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ bytecode เบเบตเปเบเบทเบเปเบซเบฅเบเปเบเบปเปเบฒเปเบเปเบ kernel เปเบเบเปเบเปเบเบฒเบเปเบเปเบเบญเบ Netlink เปเบฅเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบ kernel เปเบเปเบเบทเปเบญเบ virtual เบเบดเปเบชเบเบเบตเปเบฅเบฐเบเบถเบเปเบเบดเบ BPF (Berkeley Packet Filters). เบงเบดเบเบตเบเบฒเบเบเบตเปเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบซเบผเบธเบเบฅเบปเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบฅเบฐเบเบฑเบเปเบเปเบเปเบฅเบฐเบเปเบฒเบเบซเบเปเบฒเบเบตเปเบเบฑเบเบซเบกเบปเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเปเบเบเปเบฅเบฐเปเบซเบเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเปเบเบเบญเบเปเบเบปเปเบฒเปเบเปเบเบเบทเปเบเบเบตเปเบเบญเบเบเบนเปเปเบเป.
เบเบฐเบงเบฑเบเบเบฐเบเปเบฒเบเบปเปเบเบเป:
- เบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ "*" เบญเบปเบเบเบฐเบเบญเบเบซเบเปเบฒเบเบฒเบเปเบเปเบเบทเบเปเบเบตเปเบกเปเบเบปเปเบฒเปเบเบฅเบฒเบเบเบฒเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเป, เปเบเบดเปเบเบเบทเบเบเบฐเบเบธเปเบเบชเปเบฒเบฅเบฑเบเบเบธเบเปเบเปเบเบตเปเบเปเปเบเบปเบเบขเบนเปเบเบฒเบเปเบเปเบญเบปเบเบเบฐเบเบญเบเบญเบทเปเบเปเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเปเบเบเบธเบ. เบเบฒเบเบฐเบฅเบฒเบ x { map blocklist { type ipv4_addr : verdict flags interval elements = { 192.168.0.0/16 : accept, 10.0.0.0/8 : accept, * : drop } } chain y { type filter hook prerouting priority 0; เบเบฐเปเบเบเบฒเบเบเบญเบกเบฎเบฑเบ; ip saddr vmap @blocklist } }
- เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเปเบฒเบเบปเบเบเบปเบงเปเบเบเบฒเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบเปเบเบเปเบเปเบเบปเบงเปเบฅเบทเบญเบ "--define". # cat test.nft เบเบฒเบเบฐเบฅเบฒเบ netdev x { chain y { type filter hook ingress devices = $dev priority 0; เบเบฐเปเบเบเบฒเบเบซเบผเบธเบเบฅเบปเบ; } } # nft โdefine dev="{ eth0, eth1 }" -f test.nft
- เปเบเบฅเบฒเบเบเบฒเบเปเบเบเบเบตเป, เบเบฒเบเบเปเบฒเปเบเปเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบตเป (เบชเบฐเบเบฒเบเบฐ) เปเบกเปเบเบญเบฐเบเบธเบเบฒเบเปเบซเป: เบเบฒเบเบฐเบฅเบฒเบ inet filter { map portmap { type inet_service : verdict counter elements = { 22 counter packets 0 bytes 0 : jump ssh_input, * counter packets 0 bytes 0 : drop } } chain ssh_input { } chain wan_input { tcp dport vmap @portmap } chain prerouting { type filter hook prerouting priority raw; เบเบฐเปเบเบเบฒเบเบเบญเบกเบฎเบฑเบ; iif vmap { "lo" : jump wan_input } } }
- เปเบเบตเปเบกเบเบณเบชเบฑเปเบ "list hooks" เปเบเบทเปเบญเบชเบฐเปเบเบเบฅเบฒเบเบเบทเปเบเบปเบงเบเบฑเบเบเบฒเบเบชเบณเบฅเบฑเบเบเบญเบเบเบปเบงเปเบเบฑเบเปเบเบฑเบเบเบตเปเปเบซเปเปเบงเป: # nft list hooks ip เบญเบธเบเบฐเบเบญเบ eth0 family ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw [nf_tables] } hook ingress { -0000000100 chain ip ab [nf_tables] +0000000300 chain inet mz [nf_tables] } hook forward { -0000000225 selinux_ipv4_forward 0000000000 chain ip ac [nf_tables 0000000225] 4_output } hook postrouting { +0000000225 4 selinux_ipvXNUMX_postroute } }
- เบเบฑเบเบเบดเบงเบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบเป jhash, symhash, เปเบฅเบฐ numgen เบฎเปเบงเบกเบเบฑเบเปเบเบทเปเบญเปเบเบเบขเบฒเบเปเบเบฑเบเปเบเบฑเบเปเบเบซเบฒเบเบดเบงเปเบเบเบทเปเบเบเบตเปเบเบนเปเปเบเป. โฆ เบเบดเบงเปเบเบทเปเบญ symhash mod 65536 โฆ เบเบดเบงเบเบธเบเบเปเบฒเบกเปเบเบซเบฒ numgen inc mod 65536 โฆ เบเบดเบงเปเบเบซเบฒ jhash oif . meta mark mod 32 "queue" เบเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบฅเบงเบกเปเบเบปเปเบฒเบเบฑเบเบฅเบฒเบเบเบฒเบเปเบเบเบเบตเปเปเบเบทเปเบญเปเบฅเบทเบญเบเปเบเบงเปเบเบเบทเปเบเบเบตเปเบเบญเบเบเบนเปเปเบเปเปเบเบเบญเบตเบเปเบชเปเบเบธเปเบกเบเบตเปเบกเบฑเบ. ... เบเบธเบเปเบเบงเบเปเบฒเบกเปเบเบซเบฒเปเบเบเบเบตเป oifname { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
- เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเบฐเบซเบเบฒเบเบเบปเบงเปเบเบเบตเปเบเบฐเบเบญเบเบกเบตเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเปเบเบปเปเบฒเปเบเปเบเปเบเบเบเบตเปเบซเบผเบฒเบ. เบเปเบฒเบเบปเบเบเบฒเบเปเบเปเบเบญเบ = { eth0, eth1 } เบเบฒเบเบฐเบฅเบฒเบ ip x { chain y { type filter hook input priority 0; เบเบฐเปเบเบเบฒเบเบเบญเบกเบฎเบฑเบ; iifname vmap { lo : accept, $interfaces : drop } } } # nft -f x.nft # nft list ruleset table ip x { chain y { type filter hook input priority 0; เบเบฐเปเบเบเบฒเบเบเบญเบกเบฎเบฑเบ; iifname vmap { "lo" : เบเบญเบกเบฎเบฑเบ, "eth0" : drop, "eth1" : drop } } }
- เบเบฒเบเบชเบปเบกเบเบปเบ vmaps (เปเบเบเบเบตเปเบเปเบฒเบเบฑเบเบชเบดเบ) เปเบเปเบฅเบเบฐเบซเปเบฒเบเปเบกเปเบเบญเบฐเบเบธเบเบฒเบเปเบซเป: # nft เปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบ xy tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : เบเบญเบกเบฎเบฑเบ }
- syntax เบเปเบฒเบเบชเปเบฒเบฅเบฑเบเปเบเบเบเบตเป NAT. เบญเบฐเบเบธเบเบฒเบเปเบซเปเบฅเบฐเบเบธเปเบฅเบเบฐเบเบตเปเบขเบนเป: ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } เบซเบผเบท เบเบตเปเบขเบนเป IP เบขเปเบฒเบเบเบฑเบเปเบเบ เปเบฅเบฐเบเบญเบ: ... dnat เบซเบฒ ip saddr เปเบเบเบเบตเป { 10.141.11.4 : . 192.168.2.3 } เบซเบผเบทเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบญเบเบเปเบงเบ IP เปเบฅเบฐเบเบญเบ: ... dnat เบเบฑเบ ip saddr . tcp เปเบเบเบเบตเป dport { 80 . 192.168.1.2: 80-10.141.10.2. 10.141.10.5-8888 }
เปเบซเบผเปเบเบเปเปเบกเบนเบ: opennet.ru