nftables เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐ 1.0.3 เชฐเชฟเชฒเซ€เช

เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐ nftables 1.0.3 เชจเซเช‚ เชชเซเชฐเช•เชพเชถเชจ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชœเซ‡ IPv4, IPv6, ARP เช…เชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชฌเซเชฐเชฟเชœ (iptables, ip6table, arptables เช…เชจเซ‡ ebtables เชจเซ‡ เชฌเชฆเชฒเชตเชพเชจเชพ เชนเซ‡เชคเซเชฅเซ€) เชฎเชพเชŸเซ‡ เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐเชฟเช‚เช— เชˆเชจเซเชŸเชฐเชซเซ‡เชธเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเซ‡ เช›เซ‡. เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ nftables 1.0.3 เชชเซเชฐเช•เชพเชถเชจ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชซเซ‡เชฐเชซเชพเชฐเซ‹ Linux 5.18 เช•เชฐเซเชจเชฒเชฎเชพเช‚ เชธเชฎเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เช›เซ‡.

nftables เชชเซ‡เช•เซ‡เชœเชฎเชพเช‚ เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐ เช˜เชŸเช•เซ‹เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ เช•เซ‡ เชœเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชœเช—เซเชฏเชพเชฎเชพเช‚ เชšเชพเชฒเซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เช•เชฐเซเชจเชฒ-เชธเซเชคเชฐเชจเซเช‚ เช•เชพเชฐเซเชฏ nf_tables เชธเชฌเชธเชฟเชธเซเชŸเชฎ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ 3.13 เชจเชพ เชชเซเชฐเช•เชพเชถเชจเชฅเซ€ Linux เช•เชฐเซเชจเชฒเชจเซ‹ เชญเชพเช— เช›เซ‡. เช•เชฐเซเชจเชฒ เชธเซเชคเชฐ เชฎเชพเชคเซเชฐ เชเช• เชธเชพเชฎเชพเชจเซเชฏ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ-เชธเซเชตเชคเช‚เชคเซเชฐ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชชเซ‚เชฐเซเช‚ เชชเชพเชกเซ‡ เช›เซ‡ เชœเซ‡ เชชเซ‡เช•เซ‡เชŸเซ‹เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เช•เชพเชขเชตเชพ, เชกเซ‡เชŸเชพ เช“เชชเชฐเซ‡เชถเชจ เช•เชฐเชตเชพ เช…เชจเซ‡ เชซเซเชฒเซ‹ เช•เช‚เชŸเซเชฐเซ‹เชฒ เชฎเชพเชŸเซ‡ เชฎเซ‚เชณเชญเซ‚เชค เช•เชพเชฐเซเชฏเซ‹ เชชเซ‚เชฐเชพ เชชเชพเชกเซ‡ เช›เซ‡.

เชซเชฟเชฒเซเชŸเชฐเชฟเช‚เช—เชจเชพ เชจเชฟเชฏเชฎเซ‹ เชชเซ‹เชคเซ‡ เช…เชจเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ-เชตเชฟเชถเชฟเชทเซเชŸ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธ เชฏเซเชเชฐ-เชธเซเชชเซ‡เชธ เชฌเชพเช‡เชŸเช•เซ‹เชกเชฎเชพเช‚ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เชชเช›เซ€ เช† เชฌเชพเช‡เชŸเช•เซ‹เชก เชจเซ‡เชŸเชฒเชฟเช‚เช• เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชฐเซเชจเชฒเชฎเชพเช‚ เชฒเซ‹เชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ BPF (เชฌเชฐเซเช•เชฒเซ‡ เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐเซเชธ) เชœเซ‡เชตเชพ เชตเชฟเชถเชฟเชทเซเชŸ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชฎเชพเช‚ เช•เชฐเซเชจเชฒเชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เช…เชญเชฟเช—เชฎ เช•เชฐเซเชจเชฒ เชธเซเชคเชฐเซ‡ เชšเชพเชฒเชคเชพ เชซเชฟเชฒเซเชŸเชฐเชฟเช‚เช— เช•เซ‹เชกเชจเชพ เช•เชฆเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช˜เชŸเชพเชกเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเชพเชฐเซเชธเชฟเช‚เช— เชจเชฟเชฏเชฎเซ‹เชจเชพ เชคเชฎเชพเชฎ เช•เชพเชฐเซเชฏเซ‹ เช…เชจเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเชพ เชคเชฐเซเช•เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชœเช—เซเชฏเชพเชฎเชพเช‚ เช–เชธเซ‡เชกเซ‡ เช›เซ‡.

เชฎเซเช–เซเชฏ เชจเชตเซ€เชจเชคเชพเช“:

  • เชธเซ‡เชŸ เชฒเชฟเชธเซเชŸ เชนเชตเซ‡ เชฎเชพเชธเซเช• เชฆเซเชตเชพเชฐเชพ เชฎเซ‡เชณ เช–เชพเชคเชพ เชจเซ‡เชŸเชตเชฐเซเช• เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชจเชพเชฎเซ‹เชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, โ€œ*โ€ เชชเซเชฐเชคเซ€เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค: เชŸเซ‡เชฌเชฒ เช‡เชจเซ‡เชŸ เชŸเซ‡เชธเซเชŸเชฟเชซเชธเซ‡เชŸเซเชธ { เชธเซ‡เชŸ เชธเชฟเชฎเซเชชเชฒ_เชตเชพเช‡เชฒเซเชก { เชŸเชพเช‡เชช ifname เชซเซเชฒเซ‡เช—เซเชธ เช‡เชจเซเชŸเชฐเชตเชฒ เชเชฒเชฟเชฎเซ‡เชจเซเชŸเซเชธ = { โ€œabcdef*โ€, โ€œเช…เชจเซเชฏ เชจเชพเชฎโ€, โ€œppp0โ€ } } เชธเชพเช‚เช•เชณ v4icmp { เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เช‡เชจเชชเซเชŸ เชชเซเชฐเชพเชงเชพเชจเซเชฏเชคเชพ 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/โ€”เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช" เชตเชฟเช•เชฒเซเชช เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเซ‡เชŸ เชฎเชพเชŸเซ‡ # cat ruleset.nft เชŸเซ‡เชฌเชฒ ip x { เชธเชพเช‚เช•เชณ y { เชŸเชพเชˆเชช 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 to ip saddr. tcp เชกเซ€เชชเซ‹เชฐเซเชŸ เชจเช•เชถเซ‹ { 1.1.1.1 . 8000: 4.4.4.4. 80, 2.2.2.2. 8001: 5.5.5.5. 90}

    เชคเซ‡เชตเซ€ เชœ เชฐเซ€เชคเซ‡, เช•เชพเชšเซ€ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“เชจเซ‡ เชจเช•เชถเชพเชจเซ€ เชธเซ‚เชšเชฟเชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡: # cat ruleset.nft เชŸเซ‡เชฌเชฒ ip x { [โ€ฆ] เชธเชพเช‚เช•เชณ nat_dns_acme { udp เชฒเช‚เชฌเชพเชˆ 47-63 @th,160,128 0x0e373135363130333131303735353203 @d_t62st _t78st เชฒเช‚เชฌเชพเชˆ 160,128 0x0e31393032383939353831343037320e goto nat_dns_this_5301 udp เชฒเช‚เชฌเชพเชˆ 62-78 @th,160,128 0x0e31363436323733373931323934300e nat_dns_saturn_5301 เชชเชฐ เชœเชพเช“ 62e เชœเชพเช“ nat_dns_saturn_78 udp เชฒเช‚เชฌเชพเชˆ 160,128-0 @th,0 32393535373539353636383732310x5302e62e nat_dns_saturn_78 เชกเซเชฐเซ‹เชช เชชเชฐ เชœเชพเช“ }}

    เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชชเช›เซ€ เช…เชฎเชจเซ‡ เชจเช•เชถเชพเชจเซ€ เชธเซ‚เชšเชฟ เชฎเชณเซ‡ เช›เซ‡: udp length. @th,160,128 vmap { 47-63 . 0x0e373135363130333131303735353203 : goto nat_dns_dnstc, 62-78 . 0x0e31393032383939353831343037320e : nat_dns_this_5301, 62-78 เชชเชฐ เชœเชพเช“. 0x0e31363436323733373931323934300e : nat_dns_saturn_5301, 62-78 เชชเชฐ เชœเชพเช“. 0x0e32393535373539353636383732310e : 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 { เชธเซ‡เชŸ y { ip saddr เชจเซ‹ เชชเซเชฐเช•เชพเชฐ . @ih,32,32 เชคเชคเซเชตเซ‹ = { 1.1.1.1 . 0x14 } }
  • เชธเช‚เช•เชฒเชจ เช•เชพเชฎเช—เซ€เชฐเซ€เชฎเชพเช‚ เชชเซ‚เชฐเซเชฃเชพเช‚เช• เชนเซ‡เชกเชฐ เชซเซ€เชฒเซเชกเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชฎเซ‡เชฐเชพเชฏเซ‡เชฒ เชธเชฎเชฐเซเชฅเชจ: เชŸเซ‡เชฌเชฒ เช‡เชจเซ‡เชŸ t { เชจเช•เชถเซ‹ m1 { เชชเซเชฐเช•เชพเชฐ udp เชฒเช‚เชฌเชพเชˆ. @ih,32,32 : เชšเซเช•เชพเชฆเชพ เชซเซเชฒเซ‡เช—เซเชธ เช…เช‚เชคเชฐเชพเชฒ เชคเชคเซเชตเซ‹ = { 20-80 . 0x14 : เชธเซเชตเซ€เช•เชพเชฐเซ‹, 1-10 . 0xa : เชกเซเชฐเซ‹เชช } } เชธเชพเช‚เช•เชณ c { เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เช‡เชจเชชเซเชŸ เชชเซเชฐเชพเชงเชพเชจเซเชฏเชคเชพ 0; เชจเซ€เชคเชฟเชฎเชพเช‚ เช˜เชŸเชพเชกเซ‹; udp เชฒเช‚เชฌเชพเชˆ. @ih,32,32 vmap @m1 } }
  • TCP เชตเชฟเช•เชฒเซเชชเซ‹เชจเซ‡ เชฐเซ€เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชฎเซ‡เชฐเชพเชฏเซ‡เชฒ เชธเชฎเชฐเซเชฅเชจ (เชฎเชพเชคเซเชฐ Linux เช•เชฐเซเชจเชฒ 5.18+ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡): tcp เชซเซเชฒเซ‡เช—เซเชธ syn reset tcp เชตเชฟเช•เชฒเซเชช sack-perm
  • เชธเชพเช‚เช•เชณ เช†เช‰เชŸเชชเซเชŸ เช†เชฆเซ‡เชถเซ‹ ("nft เชธเซ‚เชšเชฟ เชธเชพเช‚เช•เชณ xy") เชจเชพ เช…เชฎเชฒเชจเซ‡ เชตเซ‡เช— เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹