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 เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจฆเจพ เจนเจฟเฉฑเจธเจพ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจ•เจฐเจจเจฒ เจชเฉฑเจงเจฐ 'เจคเฉ‡, เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจ†เจฎ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ-เจธเฉเจคเฉฐเจคเจฐ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเฉ‹ เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจคเฉ‹เจ‚ เจกเจพเจŸเจพ เจ•เฉฑเจขเจฃ, เจกเฉ‡เจŸเจพ 'เจคเฉ‡ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจ•เจฐเจจ, เจ…เจคเฉ‡ เจชเฉเจฐเจตเจพเจน เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจซเฉฐเจ•เจธเจผเจจ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจซเจฟเจฒเจŸเจฐเจฟเฉฐเจ— เจจเจฟเจฏเจฎ เจ–เฉเจฆ เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ-เจตเจฟเจธเจผเฉ‡เจธเจผ เจนเฉˆเจ‚เจกเจฒเจฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ-เจธเจชเฉ‡เจธ เจฌเจพเจˆเจŸเจ•เฉ‹เจก เจตเจฟเฉฑเจš เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ‡เจธ เจฌเจพเจˆเจŸเจ•เฉ‹เจก เจจเฉ‚เฉฐ เจจเฉˆเฉฑเจŸเจฒเจฟเฉฐเจ• เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เจฐเจจเจฒ เจตเจฟเฉฑเจš เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ 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" : เจœเฉฐเจช เจตเฉˆเจจ_เจ‡เจจเจชเฉเจŸ } }
  • เจฆเจฟเฉฑเจคเฉ‡ เจ—เจ เจชเฉˆเจ•เฉ‡เจŸ เจซเฉˆเจฎเจฟเจฒเฉ€ เจฒเจˆ เจนเฉˆเจ‚เจกเจฒเจฐเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ "เจฒเจฟเจธเจŸ เจนเฉเฉฑเจ•เจธ" เจ•เจฎเจพเจ‚เจก เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ€ เจ—เจˆ: # nft เจธเฉ‚เจšเฉ€ เจนเฉเฉฑเจ•เจธ ip เจกเจฟเจตเจพเจˆเจธ eth0 เจซเฉˆเจฎเจฟเจฒเฉ€ ip { เจนเฉเฉฑเจ• เจ‡เจจเจ—เฉเจฐเฉ‡เจธ { +0000000010 เจšเฉ‡เจจ เจจเฉˆเฉฑเจŸเจฆเฉ‡เจต xy [nf_tables] +0000000300 เจšเฉ‡เจจ inet 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 เจšเฉ‡เจจ เจ†เจˆเจชเฉ€ เจเจธเฉ€ [nf_tables] 0000000225_4 เจšเฉ‡เจจ เจ†เจ‰เจŸ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ } เจนเฉเฉฑเจ• เจชเฉ‹เจธเจŸเจฐเฉ‚เจŸเจฟเฉฐเจ— { +XNUMX XNUMX selinux_ipvXNUMX_postroute } }
  • เจ•เจคเจพเจฐ เจฌเจฒเจพเจ• เจฏเฉ‚เจœเจผเจฐ เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจ•เจคเจพเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉˆเจ•เฉ‡เจŸ เจตเฉฐเจกเจฃ เจฒเจˆ jhash, symhash, เจ…เจคเฉ‡ numgen เจธเจฎเฉ€เจ•เจฐเจจเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจเฅค โ€ฆ symhash เจฎเจพเจก 65536 เจคเฉฑเจ• เจ•เจคเจพเจฐ โ€ฆ numgen inc mod 65536 เจจเฉ‚เฉฐ เจฌเจพเจˆเจชเจพเจธ โ€ฆ jhash oif เจฒเจˆ เจ•เจคเจพเจฐ . เจฎเฉˆเจŸเจพ เจฎเจพเจฐเจ• เจฎเฉ‹เจก 32 "เจ•เจฟเจŠ" เจจเฉ‚เฉฐ เจ†เจฐเจฌเจฟเจŸเจฐเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ•เจคเจพเจฐ เจšเฉเจฃเจจ เจฒเจˆ เจจเจ•เจธเจผเฉ‡ เจธเฉ‚เจšเฉ€เจ†เจ‚ เจจเจพเจฒ เจตเฉ€ เจœเฉ‹เฉœเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค ... oifname เจจเจ•เจธเจผเฉ‡ เจจเฉ‚เฉฐ เจฌเจพเจˆเจชเจพเจธ เจ•เจฐเจจ เจฒเจˆ เจ•เจคเจพเจฐ เจซเจฒเฉˆเจ— { "eth0" : 0, "pp0" : 2, "eth1" : 2 }
  • เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจฆเจพ เจตเจฟเจธเจคเจพเจฐ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ•เจˆ เจจเจ•เจธเจผเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจธเฉ‚เจšเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเฉ‹ = { eth0, eth1 } เจŸเฉ‡เจฌเจฒ ip x { เจšเฉ‡เจจ y { เจŸเจพเจˆเจช เจซเจฟเจฒเจŸเจฐ เจนเฉเฉฑเจ• เจ‡เฉฐเจชเฉเฉฑเจŸ เจคเจฐเจœเฉ€เจน 0; เจจเฉ€เจคเฉ€ เจธเจตเฉ€เจ•เจพเจฐ; iifname vmap { lo : accept, $interfaces : drop } } } # nft -f x.nft # nft เจธเฉ‚เจšเฉ€ เจจเจฟเจฏเจฎ เจธเจพเจฐเจฃเฉ€ ip x { เจšเฉ‡เจจ y { เจŸเจพเจˆเจช เจซเจฟเจฒเจŸเจฐ เจนเฉเฉฑเจ• เจ‡เฉฐเจชเฉเฉฑเจŸ เจคเจฐเจœเฉ€เจน 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 เจคเฉ‹เจ‚ ip saddr . tcp dport เจจเจ•เจธเจผเจพ { 192.168.1.2 . 80: 10.141.10.2-10.141.10.5. 8888-8999 }

เจธเจฐเฉ‹เจค: opennet.ru

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹