แแแแแฅแแแงแแแ แแแแแขแแก แคแแแขแ แแก nftables 1.0.3 แแแแแจแแแแ, แ แแแแแแช แแแ แแแแแแแก แแแแแขแแแแก แคแแแขแ แแชแแแก แแแขแแ แคแแแกแแแก IPv4, IPv6, ARP แแ แฅแกแแแแก แฎแแแแแแกแแแแก (แแแแแแ แแกแแฎแแแก iptables, ip6table, arptables แแ ebtables แฉแแแแชแแแแแแก). nftables 1.0.3-แแก แแฃแจแแแแแกแแแแก แกแแญแแ แ แชแแแแแแแแแ แจแแแแก Linux 5.18 แแแ แแแจแ.
nftables แแแแแขแ แแแแชแแแก แแแแฎแแแ แแแแแก แกแแแ แชแแก แแแแแขแแก แคแแแขแ แแก แแแแแแแแแขแแแก, แฎแแแ แแแ แแแแก แแแแแก แแฃแจแแแแแก แฃแแ แฃแแแแแงแแคแก nf_tables แฅแแแกแแกแขแแแ, แ แแแแแแช Linux-แแก แแแ แแแแก แแแฌแแแแ 3.13 แแแแแจแแแแแก แจแแแแแ. แแแ แแแแก แแแแ แฃแแ แฃแแแแแงแแคแก แแฎแแแแ แแแแแ แแ แแขแแแแแแกแแแ แแแแแฃแแแแแแแ แแแขแแ แคแแแกแก, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก แซแแ แแแแ แคแฃแแฅแชแแแแก แแแแแขแแแแแแ แแแแแชแแแแแแก แแแแกแแฆแแแแ, แแแแแชแแแแ แแแแ แแชแแแแแก แจแแกแแกแ แฃแแแแแแ แแ แแแแแแแก แแแแขแ แแแแกแแแแก.
แคแแแขแ แแชแแแก แฌแแกแแแ แแ แแ แแขแแแแแแก แกแแแชแแคแแแฃแ แ แแแแแฃแจแแแแแแแแ แจแแแแแแแแแ แแแแฎแแแ แแแแแก แกแแแ แชแแจแ แแแแขแแแแแจแ, แ แแก แจแแแแแแแช แแก แแแแขแ แแขแแแ แแแแ แแแ แแแจแ Netlink แแแขแแ แคแแแกแแก แแแแแงแแแแแแ แแ แจแแกแ แฃแแแแฃแแแ แแแ แแแจแ แกแแแชแแแแฃแ แแแ แขแฃแแแฃแ แแแแฅแแแแจแ, แ แแแแแแช แแแแแแแแแแแก BPF-แก (Berkeley Packet Filters). แแก แแแแแแแ แกแแจแฃแแแแแแก แแแซแแแแ แแแแจแแแแแแแแแ แจแแแแชแแ แแ แแแ แแแแก แแแแแแ แแแจแแแแฃแแ แคแแแขแ แแชแแแก แแแแแก แแแแ แแ แแแแแแขแแแแ แแ แแขแแแแแแแแแ แแฃแจแแแแแก แฌแแกแแแแกแ แแ แแแแแแแก แงแแแแ แคแฃแแฅแชแแ แแแแฎแแแ แแแแแก แกแแแ แชแแจแ.
แซแแ แแแแแ แแแแแแชแแแแ:
- แแแแ แแแแก แกแแแแก แแฎแแ แแฎแแ แก แฃแญแแ แก แฅแกแแแแก แแแขแแ แคแแแกแแก แกแแฎแแแแแแก แจแแกแแขแงแแแกแ แแแฆแแแ, แแแแแแแแแ, แแแแแแแแฃแแ "*" แกแแแแแแแก แแแแแงแแแแแแ: แชแฎแ แแแ inet testifsets { set simple_wild { type ifname flags interval elements = { "abcdef*", "แกแฎแแ แกแแฎแแแ", "ppp0" } } chain v4icmp { type filter hook input priority 0; แแแแแขแแแแก แแแฆแแแ; iifname @simple_wild แแ แแชแฎแแแแแก แแแแแขแแแ 0 แแแแขแ 0 iifname { "abcdef*", "eth0" } แแ แแชแฎแแแแแก แแแแแขแแแ 0 แแแแขแ 0 } }
- แแแแฎแแ แชแแแแแ แแแขแแแแขแฃแ แ แจแแ แฌแงแแ แแแแแแแฅแขแแแแก แกแแแก แแแแแแแขแแแแก แแแแแแแแแแก แแ แแก. แแแ แ, แ แแแแกแแช แแแงแแแแแฃแแ แแงแ โแแแขแแแแขแฃแ แ แจแแ แฌแงแแแกโ แแแ แแแแขแ, แจแแ แฌแงแแ แฎแแแแแแ แฌแแกแแแแก แแแแแชแฎแแแแแแก แแขแแแแ, แแแแ แแ แแฎแแ แแก แแกแแแ แแฃแจแแแแก, แ แแแแกแแช แแฅแกแแแฃแแขแแชแแแก แแ แแก แแขแแแแแ แแแแ แแแแขแแแ แแฎแแแ แแแแแแแขแแแ. แแแแแแแแแ, แแแแแแ แแชแแแก แแขแแแแ, แกแแแก แแแแแแแฅแขแ y { แแ แแจแแแ แแแขแแ แแแแแก แแแขแแแแขแฃแ แ แจแแ แฌแงแแแก แแแแแแแขแแแ = { 1.2.3.0, 1.2.3.255, 1.2.3.0/24, 3.3.3.3, 4.4.4.4, 4.4.4.4-4.4.4.8 , 3.3.3.4 , 3.3.3.5 } } แแแแแแฅแชแแแ แแแแแแแขแแแแ = { 1.2.3.0/24, 3.3.3.3-3.3.3.5, 4.4.4.4-4.4.4.8 } แแ แจแแแแแ แแฃ แแแแแแขแแแ แแฎแแ แแแแแแแขแแแก # nft แแแแแแขแแ แแแแแแแขแ ip xy { 1.2.3.0 -1.2.4.255, 3.3.3.6 } แฐแแแแก แแแแแแแขแแแก = {1.2.3.0-1.2.4.255, 3.3.3.3-3.3.3.6, 4.4.4.4-4.4.4.8 }
แ แแแแกแแช แแฅแแแ แแแแแฆแแแ แชแแแแแฃแ แแแแแแแขแแแก แกแแแแแ, แ แแแแแแแช แจแแแแก แแ แกแแแฃแแ แแแแแแแแแแก แแ แแแฃแแแแจแ, แแแแแแแแแ แแชแแ แแแแ แแ แแงแแคแ.
- แฌแแกแแแแก แแแขแแแแแแขแแ แก แแแแแแขแ แแ แแแแแ แแแกแแแแ แแแก แแแ แแแแแก (NAT) แฌแแกแแแแก แ แฃแฅแแแแก แกแแแจแ แแแแ แแแแแแแแก แแฎแแ แแแญแแ แ, แ แแแแแแช แแแแแแซแแฎแแแ, แ แแแแกแแช แแแแแแแแฃแแแ "-o/-optimize" แแแ แแแแขแ. แแแแแแแแแ, แแแแ แแแแกแแแแก # cat ruleset.nft แชแฎแ แแแ ip x { chain y { type nat hook postrouting priority srcnat; แแแแแขแแแแก แแแ แแแ; ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 } }
"nft -o -c -f ruleset.nft"-แแก แจแแกแ แฃแแแแ แแแแแแฅแชแแแก แชแแแแแฃแ "ip saddr" แฌแแกแแแก แ แฃแฅแแแแก แกแแแจแ: snat ip saddr . tcp dport แ แฃแแ {1.1.1.1. 8000: 4.4.4.4. 80, 2.2.2.2. 8001: 5.5.5.5. 90}
แแแแแแแแฃแ แแ, แแแแแแฃแแ แแแแแแแแฅแแแแแแ แจแแแซแแแแ แแแ แแแแฅแแแแก แ แฃแฅแแแแก แกแแแแจแ: # แแแขแแก แฌแแกแแแ. Nft แชแฎแ แแแ ip x {[โฆ] แฏแแญแแ nat_dns_acme {udp แกแแแ แซแ 47-63 @th, 160,128 0x0e373135363130333131303735353203 got_dns_dns_dns_dnstc 62 78x160,128E0E GOTO NAT_DNS_THIS_0 udp แกแแแ แซแ 31393032383939353831343037320-5301 @th,62 78x160,128e0e goto nat_dns_saturn_0 udp แกแแแ แซแ 31363436323733373931323934300-5301 @th,62 78x160,128 0e goto nat_dns_saturn_0 udp แกแแแ แซแ 32393535373539353636383732310-5302 @th,62 78x160,128e0e goto nat_dns_saturn_0 แแแ แแแ}
แแแขแแแแแแชแแแก แจแแแแแ แแแฆแแแ แ แฃแฅแแแแก แกแแแก: udp length . @th,160,128 vmap {47-63. 0x0e373135363130333131303735353203: goto nat_dns_dnstc, 62-78. 0x0e31393032383939353831343037320e: goto nat_dns_this_5301, 62-78. 0x0e31363436323733373931323934300e: goto nat_dns_saturn_5301, 62-78. 0x0e32393535373539353636383732310e: goto nat_dns_saturn_5302, 62-78. 0x0e38353439353637323038363633390e: goto nat_dns_saturn_5303 }
- แแแแแแแ แแฃแแแ แแแแแ แแแแแแแแฅแแแแแแแก แแแแแงแแแแแ แจแแแ แแแแแก แแแแ แแชแแแแจแ. แแแแแแแแแ: #nft แแแแแแขแแ แฌแแกแ xy ip saddr. @ih,32,32 {1.1.1.1. 0x14, 2.2.2.2. 0x1e } แแ แชแฎแ แแแ x { set y { typeof ip saddr . @ih,32,32 แแแแแแแขแแแ = {1.1.1.1. 0x14 } }
- แแแแแขแแแฃแแแ แแฎแแ แแแญแแ แ แแแแแ แ แแชแฎแแแก แกแแแแฃแ แแก แแแแแแแก แแแแแแแแแกแแแแก แจแแแ แแแแแก แแแแ แแชแแแแจแ: table inet t { map m1 { typeof udp length . @ih,32,32: แแแแแฉแแแแก แแ แแจแแแ แแแขแแ แแแแแก แแแแแแแขแแแก = {20-80. 0x14: แแแฆแแแ, 1-10. 0xa : drop } } chain c { type filter hook input priority 0; แแแแแขแแแแก แแแ แแแ; udp แกแแแ แซแ. @ih,32,32 vmap @m1 } }
- แแแแแขแแแฃแแแ แแฎแแ แแแญแแ แ TCP แแแ แแแแขแ แแแแก แแแแแขแแแ แแแแกแแแแก (แแฃแจแแแแก แแฎแแแแ Linux kernel 5.18+-แแแ): tcp flags syn reset tcp option sack-perm
- แฏแแญแแแก แแแแแแแแแแ แแ แซแแแแแแแแก แจแแกแ แฃแแแแ ("nft list chain xy") แแแฉแฅแแ แแแฃแแแ.
แฌแงแแ แ: opennet.ru