ในตัวอย่างนี้ Linh ใช้ Pi-hole บน Ubuntu Server 24.04 และต้องการเข้ารหัสคำขอ DNS ที่ Pi-hole ส่งไปยังเซิร์ฟเวอร์ต้นทาง ติดตั้ง Pi-hole dnscrypt-proxy, ผูกกับ IP address 127.0.0.1:5053, เลือกตัวแก้ไข DNS-over-HTTPS (DoH) ทดสอบพร็อกซีภายในเครื่อง และจากนั้นชี้ Pi-hole ไปยังพร็อกซีดังกล่าว คำแนะนำนี้สมมติว่า Pi-hole ได้รับการติดตั้งและใช้งานได้แล้ว Linh เป็นเพียงตัวอย่างสมมติ ไม่ใช่การติดตั้งจริงหรือรายงานการทดสอบ
เลือกวิธีการ DoH ปัจจุบัน
Pi-hole ไม่ได้สื่อสารแบบ DoH กับตัวแก้ไข DNS ต้นทางโดยตรง โดยปกติแล้วมันจะส่งต่อ DNS ไปยังที่อยู่ IP และพอร์ต พร็อกซีภายในเครื่องจะทำหน้าที่เชื่อมต่อโปรโตคอลทั้งสอง: Pi-hole จะส่ง DNS มาตรฐานไปยังตัวรับฟังภายในเครื่องที่เป็นส่วนตัว และพร็อกซีจะส่งคำขอที่เข้ารหัสไปยังตัวแก้ไขที่เลือกไว้ ในตัวอย่างนี้ Linh ใช้ Pi-hole dnscrypt-proxyบนเซิร์ฟเวอร์เดียวกันและตั้งค่าตัวรับฟังไว้ที่โหมด loopback เพื่อไม่ให้อุปกรณ์อื่นเชื่อมต่อกับพร็อกซีนั้นได้โดยตรง
หลีกเลี่ยงการเริ่มต้นการติดตั้งใหม่ด้วยcloudflared proxy-dnsสูตรเก่า หน้าเว็บ cloudflared ปัจจุบันของ Pi-hole ระบุว่าฟีเจอร์นี้ถูกยกเลิกโดย Cloudflare ในเดือนพฤศจิกายน 2025 และไม่แนะนำให้ติดตั้งใหม่โดยใช้ฟีเจอร์นี้ คำแนะนำ dnscrypt-proxy ของ Pi-hole นำเสนอทางเลือกที่ได้รับการดูแลรักษาอย่างดี รายการแพ็กเกจ Ubuntu Noble ในปัจจุบันประกอบด้วยdnscrypt-proxy; เวอร์ชันของแพ็กเกจจะแตกต่างกันไปตามสถาปัตยกรรมและอาจเปลี่ยนแปลงได้เมื่อมีการเผยแพร่การอัปเดต
คำสั่งในเทอร์มินัลของ Ubuntu สำหรับติดตั้ง dnscrypt-proxy จากคลังแพ็กเกจ Noble
1. ติดตั้งแพ็คเกจ Ubuntu
อัปเดตรายการแพ็กเกจของ APT และติดตั้งแพ็กเกจจากที่เก็บ Noble:
sudo apt update
sudo apt install dnscrypt-proxy
แพ็กเกจนี้อยู่ในส่วนประกอบ Universe ของ Ubuntu หาก APT หาไม่พบ ให้ตรวจสอบว่า Universe เปิดใช้งานอยู่หรือไม่ แล้วลองรันใหม่อีกครั้งsudo apt updateอย่าดาวน์โหลดเวอร์ชันจากผู้พัฒนาภายนอกแบบสุ่มเพื่อแก้ไขปัญหาการกำหนดค่าของที่เก็บแพ็กเกจ
ก่อนดำเนินการต่อ โปรดตรวจสอบให้แน่ใจว่า Ubuntu ได้ติดตั้งหน่วยซ็อกเก็ต systemd ที่ใช้ในขั้นตอน Pi-hole แล้ว:
systemctl list-unit-files dnscrypt-proxy.socket
รายการไฟล์แพ็กเกจ Ubuntu Noble ประกอบด้วยdnscrypt-proxy.socketและคำแนะนำของ Pi-hole ใช้ซ็อกเก็ตนั้นเพื่อให้บริการตัวรับฟัง DNS ในพื้นที่โดยไม่แย่งทรัพยากรกับบริการพอร์ต 53 ของ Pi-hole เอง
การกำหนดค่าซ็อกเก็ตใหม่โดยล้างตัวรับฟังทั้ง TCP และ UDP แล้วผูกใหม่กับ localhost บนพอร์ต 5053
2. ผูกพร็อกซีกับ localhost พอร์ต 5053
บริการ DNS FTL ของ Pi-hole โดยปกติจะใช้พอร์ต 53 ให้กำหนดพอร์ตอื่นให้กับ dnscrypt-proxy และผูกกับเซิร์ฟเวอร์นั้นโดยตรง สร้างการตั้งค่าแบบกำหนดเองใน systemd:
sudo systemctl edit dnscrypt-proxy.socket
เพิ่มบรรทัดเหล่านี้ลงในไฟล์ override ที่ว่างเปล่า บันทึก และออกจากไฟล์:
[Socket]
ListenStream=
ListenDatagram=
ListenStream=127.0.0.1:5053
ListenDatagram=127.0.0.1:5053
การกำหนดค่าว่างจะล้างตัวรับฟังพอร์ต 53 เดิมของหน่วยซ็อกเก็ตก่อนที่จะเพิ่มที่อยู่ใหม่ การคงตัวรับฟังไว้ที่เดิมนั้น127.0.0.1สำคัญมาก: อย่าเปลี่ยนเป็น0.0.0.0สำหรับการตั้งค่าโฮสต์เดียวกันนี้ เพราะจะทำให้พร็อกซีถูกเปิดเผยบนอินเทอร์เฟซเครือข่ายทุกตัว
การตั้งค่า TOML ของ dnscrypt-proxy ที่ใช้การเปิดใช้งานซ็อกเก็ต systemd และเลือกตัวแก้ไขความปลอดภัยของ Cloudflare
3. เลือกตัวแก้ไข DoH
เปิดไฟล์การกำหนดค่าแพ็กเกจ:
sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
ตั้งค่าต่อไปนี้ โดยคงการตั้งค่าส่วนที่เหลือของแพ็กเกจไว้เหมือนเดิม:
listen_addresses = []
server_names = ['cloudflare-security']
รายการ ว่างเปล่าlisten_addressesจะบอกให้ dnscrypt-proxy ใช้การเปิดใช้งานซ็อกเก็ต systemd ตัวแก้ไข Cloudflare Security ที่ระบุชื่อไว้เป็นตัวอย่างที่ใช้ในคู่มือ dnscrypt-proxy ของ Pi-hole โดยจะใช้การกรองมัลแวร์ของตัวแก้ไขเพิ่มเติมจากรายการบล็อกของ Pi-hole เอง หากคุณต้องการผู้ให้บริการรายอื่นหรือไม่มีการกรองความปลอดภัยเพิ่มเติม ให้เลือกตัวแก้ไข DoH ปัจจุบันจากรายการตัวแก้ไขสาธารณะที่ได้รับการดูแลรักษา และใช้ชื่อเซิร์ฟเวอร์ที่ถูกต้อง ชื่อที่มีอยู่และนโยบายตัวแก้ไขอาจเปลี่ยนแปลงได้ ดังนั้นโปรดตรวจสอบรายการปัจจุบันแทนที่จะคัดลอกชื่อที่ล้าสมัยจากโพสต์เก่า
รีสตาร์ทซ็อกเก็ตและบริการเพื่อให้การตั้งค่าแบบกำหนดเองและการตั้งค่า TOML มีผล:
sudo systemctl restart dnscrypt-proxy.socket
sudo systemctl restart dnscrypt-proxy.service
จากนั้นทดสอบตัวรับฟังในเครื่องก่อนที่จะเปลี่ยนอัปสตรีมของ Pi-hole:
dig @127.0.0.1 -p 5053 example.com
คำตอบ DNS และสถานะการออกเป็นศูนย์แสดงว่าพร็อกซีภายในเครื่องได้ตอบคำถามแล้ว เพื่อยืนยันว่าอัปสตรีมที่เลือกใช้งาน DoH ให้ตรวจสอบข้อความบริการล่าสุดและมองหาตัวแก้ไขที่ทำเครื่องหมายไว้ว่าOK (DoH):
sudo journalctl -u dnscrypt-proxy.service -n 50 --no-pager
หาก
digยังไม่ได้ติดตั้ง ให้ติดตั้ง
dnsutilsแพ็กเกจของ Ubuntu หากการสอบถามหมดเวลาหรือบันทึกไม่แสดงตัวแก้ไข DoH ให้ตรวจสอบ
sudo systemctl status dnscrypt-proxy.socket dnscrypt-proxy.serviceบันทึกการบริการก่อนดำเนินการต่อ
คำสั่ง CLI ของ Pi-hole สำหรับตั้งค่าพร็อกซี DNS เข้ารหัสภายในเครื่องให้เป็นตัวแก้ไขต้นทาง (upstream resolver)
4. ตั้งค่า Pi-hole ให้ชี้ไปยังพร็อกซีในเครื่อง
หลังจากที่การทดสอบในเครื่องทำงานได้แล้ว ให้แทนที่รายการอัปสตรีมของ Pi-hole ด้วยรายการรับฟังในเครื่อง:
sudo pihole-FTL --config dns.upstreams '["127.0.0.1#5053"]'
sudo systemctl restart pihole-FTL.service
ค่านี้ใช้รูปแบบอัปสตรีมแบบกำหนดเองของ Pi-hole: 127.0.0.1คือโฮสต์ภายในเครื่อง และ#5053ระบุพอร์ต DNS ที่ไม่ใช่มาตรฐาน คุณยังสามารถป้อนค่านี้ได้127.0.0.1#5053ที่การตั้งค่า > DNS > เซิร์ฟเวอร์ DNS อัปสตรีมแบบกำหนดเองในอินเทอร์เฟซผู้ดูแลระบบของ Pi-hole ยกเลิกการเลือกอัปสตรีมสาธารณะที่ตั้งไว้ล่วงหน้าแล้วบันทึก มิฉะนั้น Pi-hole อาจส่งคำขอไปยังอัปสตรีมเหล่านั้นโดยตรงโดยไม่ใช้ DoH
ตรวจสอบเส้นทางแบบเต็ม
สอบถามข้อมูลจาก Pi-hole โดยตรง โดยใช้ที่อยู่ LAN ของ Pi-hole แทนที่PIHOLE_IP:
dig @PIHOLE_IP example.com
ยืนยันว่าการค้นหาสำเร็จ บันทึกการสอบถามของ Pi-hole แสดงคำขอของไคลเอ็นต์ และสถานะบริการหรือบันทึกของ dnscrypt-proxy แสดงว่าสามารถเข้าถึงอัปสตรีมที่เลือกได้ เส้นทางที่ได้ควรเป็นไคลเอ็นต์ไปยัง Pi-hole ผ่าน LAN ของคุณ จากนั้น Pi-hole ไปยังพร็อกซี localhost จากนั้นพร็อกซีไปยังตัวแก้ไข DoH การเข้ารหัสนี้จะเข้ารหัสส่วนการเชื่อมต่อระหว่างเซิร์ฟเวอร์และตัวแก้ไข แต่จะไม่เข้ารหัสการรับส่งข้อมูล DNS ปกติระหว่างไคลเอ็นต์และ Pi-hole บน LAN ซ่อนการสอบถามจากตัวแก้ไขที่เลือก หรือเปลี่ยน Pi-hole ให้เป็น VPN
สำหรับรายละเอียดคำสั่งและเวอร์ชัน โปรดดูคู่มือ Pi-hole dnscrypt-proxy (ลงวันที่ 16 กุมภาพันธ์ 2026) ประกาศการเลิกใช้งานบน cloudflared (ลงวันที่ 12 กุมภาพันธ์ 2026) บันทึกแพ็กเกจ Noble dnscrypt-proxyของ Ubuntu และรายการตัวแก้ไข DoH และ DNSCrypt สาธารณะปัจจุบันหากบริการใดไม่ทำงาน อย่าเปลี่ยน Pi-hole ไปใช้พร็อกซีจนกว่าการทดสอบการสอบถามภายในเครื่องจะสำเร็จ