แแแแแฅแแแงแแแ แแแแแขแแก แคแแแขแ แแก nftables 1.0.0 แแแแแจแแแแ, แ แแแแแแช แแแ แแแแแแแก แแแแแขแแแแก แคแแแขแ แแชแแแก แแแขแแ แคแแแกแแแก IPv4, IPv6, ARP แแ แฅแกแแแแก แฎแแแแแแกแแแแก (แแแแแแ แแกแแฎแแแก iptables, ip6table, arptables แแ ebtables แฉแแแแชแแแแแแก). nftables 1.0.0-แแก แแฃแจแแแแแกแแแแก แกแแญแแ แ แชแแแแแแแแแ แจแแแแก Linux 5.13 แแแ แแแจแ. แแแ แกแแแก แแแแ แแก แแแแจแแแแแแแแแ แชแแแแแแแ แแ แแ แแก แแแแแแจแแ แแแฃแแ แ แแแแ แคแฃแแแแแแแขแฃแ แชแแแแแแแแแแแ, แแแแ แแ แแ แแก แแฎแแแแ แแแแแแแ แแฆแแแจแแแแ แแฃแแแ แแชแแแก แแแแแแแแแแ แฃแแ แแแแ แซแแแแแแก แจแแแแแ (แฌแแแ แแแแแจแแแแ แแงแ 0.9.9).
nftables แแแแแขแ แแแแชแแแก แแแแฎแแแ แแแแแก แกแแแ แชแแก แแแแแขแแก แคแแแขแ แแก แแแแแแแแแขแแแก, แฎแแแ แแแ แแแแก แแแแแก แแฃแจแแแแแก แฃแแ แฃแแแแแงแแคแก nf_tables แฅแแแกแแกแขแแแ, แ แแแแแแช Linux-แแก แแแ แแแแก แแแฌแแแแ 3.13 แแแแแจแแแแแก แจแแแแแ. แแแ แแแแก แแแแ แฃแแ แฃแแแแแงแแคแก แแฎแแแแ แแแแแ แแ แแขแแแแแแกแแแ แแแแแฃแแแแแแแ แแแขแแ แคแแแกแก, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก แซแแ แแแแ แคแฃแแฅแชแแแแก แแแแแขแแแแแแ แแแแแชแแแแแแก แแแแกแแฆแแแแ, แแแแแชแแแแ แแแแ แแชแแแแแก แจแแกแแกแ แฃแแแแแแ แแ แแแแแแแก แแแแขแ แแแแกแแแแก.
แคแแแขแ แแชแแแก แฌแแกแแแ แแ แแ แแขแแแแแแก แกแแแชแแคแแแฃแ แ แแแแแฃแจแแแแแแแแ แจแแแแแแแแแ แแแแฎแแแ แแแแแก แกแแแ แชแแจแ แแแแขแแแแแจแ, แ แแก แจแแแแแแแช แแก แแแแขแ แแขแแแ แแแแ แแแ แแแจแ Netlink แแแขแแ แคแแแกแแก แแแแแงแแแแแแ แแ แจแแกแ แฃแแแแฃแแแ แแแ แแแจแ แกแแแชแแแแฃแ แแแ แขแฃแแแฃแ แแแแฅแแแแจแ, แ แแแแแแช แแแแแแแแแแแก BPF-แก (Berkeley Packet Filters). แแก แแแแแแแ แกแแจแฃแแแแแแก แแแซแแแแ แแแแจแแแแแแแแแ แจแแแแชแแ แแ แแแ แแแแก แแแแแแ แแแจแแแแฃแแ แคแแแขแ แแชแแแก แแแแแก แแแแ แแ แแแแแแขแแแแ แแ แแขแแแแแแแแแ แแฃแจแแแแแก แฌแแกแแแแกแ แแ แแแแแแแก แงแแแแ แคแฃแแฅแชแแ แแแแฎแแแ แแแแแก แกแแแ แชแแจแ.
แซแแ แแแแแ แแแแแแชแแแแ:
- "*" แแแฆแแแก แแแแแแแขแแก แแฎแแ แแแญแแ แ แแแแแแขแ แแแแแแแฅแขแแแแก แกแแแแก, แ แแแแแแช แแแแฅแแแแแแแ แแแแแกแแแแ แ แแแแแขแแกแแแแก, แ แแแแแแช แแ แแแแแฃแแแแแแ แแแแแแแฅแขแจแ แแแแกแแแฆแแ แฃแ แกแฎแแ แแแแแแแขแแแก. แชแฎแ แแแ x { map blocklist { type ipv4_addr : verdict flags interval elements = { 192.168.0.0/16 : แแแฆแแแ, 10.0.0.0/8 : แแแฆแแแ, * : 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
- แ แฃแฅแแแแก แกแแแแจแ แแแแแแแ แแฃแแแ แแฃแแแแแ (stateful) แแแแแแแแฅแแแแแแแก แแแแแงแแแแแ: table 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" : แแแแแกแแแ wan_input } } }
- แแแแแขแแแฃแแแ "list hooks" แแ แซแแแแแ แแแชแแแฃแแ แแแแแขแแแแก แแฏแแฎแแก แแแแแฃแจแแแแแแแแแก แกแแแก แกแแฉแแแแแแแแ: # nft list hooks ip แแแฌแงแแแแแแแ eth0 family ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw [nf_t inputs] { -0000000100 chain ip ab [nf_tables] +0000000300 chain inet mz [nf_tables] } hook forward { -0000000225 selinux_ipv4_forward 0000000000 chain ip 0000000225 outux]4 แฏแแญแแ ip0000000225 -4. vXNUMX_output } hook postrouting { +XNUMX XNUMX selinux_ipvXNUMX_postroute } }
- แ แแแแก แแแแแแแ แแซแแแแ jhash, symhash แแ numgen แแแแแแแแฅแแแแแแแก แแแแ แแแแแแแแก แแแแแขแแแแก แ แแแแแจแ แแแแฎแแแ แแแแแก แกแแแ แชแแจแ แแแแแฌแแแแแแกแแแแก. โฆ แ แแแ symhash mod 65536 โฆ แ แแแ แแ แแจแแแ แแแแ แแแก แแแแแ numgen inc mod 65536 โฆ แ แแแ jhash oif . แแแขแ แแแ แแแก mod 32 "แ แแแ" แแกแแแ แจแแแซแแแแ แแแแ แแแแแแแก แ แฃแฅแแแแก แกแแแแแแ, แ แแแ แแแ แฉแแแ แ แแแ แแแแฎแแแ แแแแแก แกแแแ แชแแจแ แแแแแแแแฃแ แ แแแแแแจแแแแก แกแแคแฃแซแแแแแ. ... แ แแแแก แแ แแจแแแ แแแแ แแแก แแแแแ oifname แ แฃแแแแ { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
- แจแแกแแซแแแแแแแ แชแแแแแแแแก แแแคแแ แแแแแ, แ แแแแแแช แแแแชแแแก แแแแแแแฅแขแแก แกแแแก แ แแแแแแแแ แ แฃแฅแแจแ. แแแขแแ แคแแแกแแแแก แแแแกแแแฆแแ แ = { eth0, eth1 } แชแฎแ แแแ ip x { แฏแแญแแ y { แขแแแแก filter hook แจแแงแแแแแก แแ แแแ แแขแแขแ 0; แแแแแขแแแแก แแแฆแแแ; iifname vmap { lo : แแแฆแแแ, $interfaces : drop } } } # nft -f x.nft # nft list แฌแแกแแแแก แแแแ แแแ แชแฎแ แแแ 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: แแแฆแแแ }
- แแแแแ แขแแแแแฃแแ แกแแแขแแฅแกแ NAT แ แฃแแแแแกแแแแก. แแแแแแแ แแฃแแแ แแแกแแแแ แแแก แแแแแแแแแแแแก แแแแแแแแ: ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } แแ แแจแแแ แ IP แแแกแแแแ แแแแ แแ แแแ แขแแแ: ... dnat to ip saddr map { 10.141.11.4:192.168.2.3. . 80 } แแ IP แแแแแแแแแแแแกแ แแ แแแ แขแแแแก แแแแแแแแชแแแแ: ... dnat to ip saddr . tcp dport แ แฃแแ {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }
แฌแงแแ แ: opennet.ru