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

เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐ nftables 1.0.0 เชจเซเช‚ เชชเซเชฐเช•เชพเชถเชจ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชœเซ‡ IPv4, IPv6, ARP เช…เชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชฌเซเชฐเชฟเชœ (iptables, ip6table, arptables เช…เชจเซ‡ ebtables เชจเซ‡ เชฌเชฆเชฒเชตเชพเชจเชพ เชนเซ‡เชคเซเชฅเซ€) เชฎเชพเชŸเซ‡ เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐเชฟเช‚เช— เชˆเชจเซเชŸเชฐเชซเซ‡เชธเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเซ‡ เช›เซ‡. เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ nftables 1.0.0 เชชเซเชฐเช•เชพเชถเชจ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชซเซ‡เชฐเชซเชพเชฐเซ‹ Linux 5.13 เช•เชฐเซเชจเชฒเชฎเชพเช‚ เชธเชฎเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เช›เซ‡. เชธเช‚เชธเซเช•เชฐเชฃ เชจเช‚เชฌเชฐเชฎเชพเช‚ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชซเซ‡เชฐเชซเชพเชฐ เช เช•เซ‹เชˆเชชเชฃ เชฎเซ‚เชณเชญเซ‚เชค เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡ เชฎเชพเชคเซเชฐ เชฆเชถเชพเช‚เชถ เชธเช‚เช•เซ‡เชคเชฎเชพเช‚ เชธเช‚เช–เซเชฏเชพเชจเชพ เชธเชคเชค เชšเชพเชฒเซ เชฐเชพเช–เชตเชพเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เช›เซ‡ (เช…เช—เชพเช‰เชจเซเช‚ เชชเซเชฐเช•เชพเชถเชจ 0.9.9 เชนเชคเซเช‚).

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

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

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

  • โ€œ*โ€ เชฎเชพเชธเซเช• เชเชฒเชฟเชฎเซ‡เชจเซเชŸ เชฎเชพเชŸเซ‡เชจเซ‹ เช†เชงเชพเชฐ เชธเซ‡เชŸ เชฒเชฟเชธเซเชŸเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡, เชœเซ‡ เช•เซ‹เชˆเชชเชฃ เชชเซ‡เช•เซ‡เชœเซ‹ เชฎเชพเชŸเซ‡ เชŸเซเชฐเชฟเช—เชฐ เชฅเชพเชฏ เช›เซ‡ เชœเซ‡ เชธเซ‡เชŸเชฎเชพเช‚ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช…เชจเซเชฏ เช˜เชŸเช•เซ‹ เชนเซ‡เช เชณ เช†เชตเชคเชพ เชจเชฅเซ€. เช•เซ‹เชทเซเชŸเช• x { เชจเช•เชถเซ‹ เชฌเซเชฒเซ‹เช•เชฒเชฟเชธเซเชŸ { เชชเซเชฐเช•เชพเชฐ ipv4_addr : เชšเซเช•เชพเชฆเชพ เชซเซเชฒเซ‡เช—เซเชธ เช…เช‚เชคเชฐเชพเชฒ เชคเชคเซเชตเซ‹ = { 192.168.0.0/16 : เชธเซเชตเซ€เช•เชพเชฐเซ‹, 10.0.0.0/8 : เชธเซเชตเซ€เช•เชพเชฐเซ‹, * : เชกเซเชฐเซ‹เชช } } เชธเชพเช‚เช•เชณ y { เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เชชเซเชฐเซ€เชฐเซ‹เชŸเซ€เช‚เช— เชชเซเชฐเชพเชฏเซ‹เชฐเชฟเชŸเซ€ 0; เชจเซ€เชคเชฟ เชธเซเชตเซ€เช•เชพเชฐเซ‹; ip saddr vmap @blocklist } }
  • "--define" เชตเชฟเช•เชฒเซเชชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช†เชฆเซ‡เชถ เชตเชพเช•เซเชฏเชฎเชพเช‚เชฅเซ€ เชšเชฒเซ‹เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เช›เซ‡. # cat test.nft เชŸเซ‡เชฌเชฒ netdev x { เชธเชพเช‚เช•เชณ y { เชŸเชพเช‡เชช เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เช‡เชจเซเช—เซเชฐเซ‡เชธ เช‰เชชเช•เชฐเชฃเซ‹ = $dev เช…เช—เซเชฐเชคเชพ 0; เชจเซ€เชคเชฟเชฎเชพเช‚ เช˜เชŸเชพเชกเซ‹; } } # nft โ€” define dev="{ eth0, eth1 }" -f test.nft
  • เชจเช•เชถเชพ เชธเซ‚เชšเชฟเชฎเชพเช‚, เชธเชคเชค (เชธเซเชŸเซ‡เชŸเชซเซเชฒ) เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช›เซ‡: เชŸเซ‡เชฌเชฒ เช‡เชจเซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐ { เชจเช•เชถเซ‹ เชชเซ‹เชฐเซเชŸเชฎเซ‡เชช { เชชเซเชฐเช•เชพเชฐ inet_service : เชšเซเช•เชพเชฆเซ‹ เช•เชพเช‰เชจเซเชŸเชฐ เชเชฒเชฟเชฎเซ‡เชจเซเชŸเซเชธ = { 22 เช•เชพเช‰เชจเซเชŸเชฐ เชชเซ‡เช•เซ‡เชŸเซเชธ 0 เชฌเชพเช‡เชŸเซเชธ 0 : เชœเชฎเซเชช ssh_เช‡เชจเชชเซเชŸ, * เช•เชพเช‰เชจเซเชŸเชฐ เชชเซ‡เช•เซ‡เชŸเซเชธ 0 เชฌเชพเช‡เชŸเซเชธ 0 : เชกเซเชฐเซ‹เชช } } เชธเชพเช‚เช•เชณ ssh_input { } เชธเชพเช‚เช•เชณ wan_input { tcp dport vmap @portmap } เชธเชพเช‚เช•เชณ เชชเซเชฐเซ€เชฐเซ‹เชŸเซ€เช‚เช— { เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เชชเซเชฐเซ€เชฐเซ‹เชŸเซ€เช‚เช— เชชเซเชฐเชพเชฏเซ‹เชฐเซ€เชŸเซ€ เชฐเซ‹; เชจเซ€เชคเชฟ เชธเซเชตเซ€เช•เชพเชฐเซ‹; iif vmap { "lo" : เชœเชฎเซเชช wan_input } }
  • เช†เชชเซ‡เชฒ เชชเซ‡เช•เซ‡เชŸ เชซเซ‡เชฎเชฟเชฒเซ€ เชฎเชพเชŸเซ‡ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธเชจเซ€ เชฏเชพเชฆเซ€ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ "เชฒเชฟเชธเซเชŸ เชนเซเช•เซเชธ" เช†เชฆเซ‡เชถ เช‰เชฎเซ‡เชฐเซเชฏเซ‹: # nft เชฒเชฟเชธเซเชŸ เชนเซเช•เซเชธ ip เช‰เชชเช•เชฐเชฃ eth0 เชซเซ‡เชฎเชฟเชฒเซ€ ip { เชนเซ‚เช• เช‡เชจเซเช—เซเชฐเซ‡เชธ { +0000000010 เชšเซ‡เช‡เชจ เชจเซ‡เชŸเชฆเซ‡เชต xy [nf_tables] +0000000300 เชšเซ‡เช‡เชจ เช‡เชจเซ‡เชŸ mw [nf_tables in] { -0000000100 เชธเชพเช‚เช•เชณ ip ab [nf_tables] +0000000300 เชธเชพเช‚เช•เชณ inet mz [nf_tables] } เชนเซ‚เช• เชซเซ‹เชฐเชตเชฐเซเชก { -0000000225 selinux_ipv4_forward 0000000000 เชธเชพเช‚เช•เชณ ip ac [nf_tables }0000000225_4 เชฌเชนเชพเชฐ เชชเชพเชกเซ‹ 0000000225_เช†เช‰เชŸเชชเซเชŸ } เชนเซ‚เช• เชชเซ‹เชธเซเชŸเชฐเซ‹เชŸเซ€เช‚เช— { +4 XNUMX selinux_ipvXNUMX_postroute } }
  • เช•เชคเชพเชฐ เชฌเซเชฒเซ‹เช•เซเชธ jhash, symhash เช…เชจเซ‡ numgen เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“เชจเซ‡ เชฏเซเชเชฐ เชธเซเชชเซ‡เชธเชฎเชพเช‚ เช•เชคเชพเชฐเซ‹เชฎเชพเช‚ เชชเซ‡เช•เซ‡เชŸเซ‹ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเซ‹เชกเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. โ€ฆ เช•เชคเชพเชฐ เชฅเซ€ เชธเชฟเชฎเชนเชพเชถ เชฎเซ‹เชก 65536 โ€ฆ เช•เชคเชพเชฐ เชซเซเชฒเซ‡เช—เซเชธ เชฌเชพเชฏเชชเชพเชธ เชŸเซ เชจเชฎเชœเซ‡เชจ inc เชฎเซ‹เชก 65536 โ€ฆ เช•เชคเชพเชฐ เชฅเซ€ เชเชถ เช“เช‡เชเชซ . เชฎเซ‡เชŸเชพ เชฎเชพเชฐเซเช• เชฎเซ‹เชก 32 "เช•เชคเชพเชฐ" เชจเซ‡ เชจเช•เชถเชพเชจเซ€ เชฏเชพเชฆเซ€เช“ เชธเชพเชฅเซ‡ เชชเชฃ เชœเซ‹เชกเซ€ เชถเช•เชพเชฏ เช›เซ‡ เชœเซ‡เชฅเซ€ เช†เชฐเซเชฌเชฟเชŸเชฐเซ€ เช•เซ€เชจเชพ เช†เชงเชพเชฐเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชœเช—เซเชฏเชพเชฎเชพเช‚ เช•เชคเชพเชฐ เชชเชธเช‚เชฆ เช•เชฐเซ€ เชถเช•เชพเชฏ. ... เช•เชคเชพเชฐ เชซเซเชฒเซ‡เช—เซเชธ oifname เชจเช•เชถเชพเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ { "eth0" : 0, "pp0" : 2, "eth1" : 2 }
  • เชตเชฟเชตเชฟเชง เชจเช•เชถเชพเช“เชฎเชพเช‚ เชธเชฎเซ‚เชน เชธเซ‚เชšเชฟเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เช•เชฐเชคเชพ เชšเชฒเซ‹เชจเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เช›เซ‡. เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‹ = { eth0, eth1 } เช•เซ‹เชทเซเชŸเช• ip x { เชธเชพเช‚เช•เชณ y { เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เช‡เชจเชชเซเชŸ เชชเซเชฐเชพเชงเชพเชจเซเชฏเชคเชพ 0; เชจเซ€เชคเชฟ เชธเซเชตเซ€เช•เชพเชฐเซ‹; iifname vmap { lo : เชธเซเชตเซ€เช•เชพเชฐเซ‹, $ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ : เชกเซเชฐเซ‹เชช } } } # nft -f x.nft # nft เชธเซ‚เชšเชฟ เชจเชฟเชฏเชฎเซ‹ เชธเซ‡เชŸ เชŸเซ‡เชฌเชฒ ip x { เชธเชพเช‚เช•เชณ y { เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เช‡เชจเชชเซเชŸ เชชเซเชฐเชพเชงเชพเชจเซเชฏเชคเชพ 0; เชจเซ€เชคเชฟ เชธเซเชตเซ€เช•เชพเชฐเซ‹; iifname vmap { "lo" : เชธเซเชตเซ€เช•เชพเชฐเซ‹, "eth0" : เชกเซเชฐเซ‹เชช, "eth1" : เชกเซเชฐเซ‹เชช } }
  • เช…เช‚เชคเชฐเชพเชฒเซ‹ เชชเชฐ vmaps (เชšเซเช•เชพเชฆเซ‹ เชจเช•เชถเซ‹) เชœเซ‹เชกเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช›เซ‡: # nft เชจเชฟเชฏเชฎ xy tcp dport เช‰เชฎเซ‡เชฐเซ‹. ip saddr vmap { 1025-65535 . 192.168.10.2 : เชธเซเชตเซ€เช•เชพเชฐเซ‹ }
  • NAT เชฎเซ‡เชชเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชธเชฐเชณ เชธเชฟเชจเซเชŸเซ‡เช•เซเชธ. เชธเชฐเชจเชพเชฎเชพเช‚ เชฐเซ‡เชจเซเชœเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช›เซ‡: ... snat to ip saddr เชจเช•เชถเซ‹ { 10.141.11.4 : 192.168.2.2-192.168.2.4 } เช…เชฅเชตเชพ เชธเซเชชเชทเซเชŸ IP เชธเชฐเชจเชพเชฎเชพเช‚ เช…เชจเซ‡ เชชเซ‹เชฐเซเชŸเซเชธ: ... dnat to ip saddr เชจเช•เชถเซ‹ { 10.141.11.4. . 192.168.2.3 } เช…เชฅเชตเชพ IP เชฐเซ‡เชจเซเชœ เช…เชจเซ‡ เชชเซ‹เชฐเซเชŸเชจเชพ เชธเช‚เชฏเซ‹เชœเชจเซ‹: ... dnat to ip saddr . tcp เชกเซ€เชชเซ‹เชฐเซเชŸ เชจเช•เชถเซ‹ { 80 . 192.168.1.2: 80-10.141.10.2. 10.141.10.5-8888 }

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

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