เข้ารหัส Pi-hole Upstream DNS บน Ubuntu Server 24.04

ในตัวอย่างนี้ 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; เวอร์ชันของแพ็กเกจจะแตกต่างกันไปตามสถาปัตยกรรมและอาจเปลี่ยนแปลงได้เมื่อมีการเผยแพร่การอัปเดต

พิมพ์คำสั่ง sudo apt install dnscrypt-proxy ลงในช่องป้อนคำสั่งของเทอร์มินัล Ubuntu Server
คำสั่งในเทอร์มินัลของ 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 เอง

โปรแกรมแก้ไข Nano แสดงการตั้งค่าซ็อกเก็ต systemd ที่ผูกกับ 127.0.0.1 บนพอร์ต 5053
การกำหนดค่าซ็อกเก็ตใหม่โดยล้างตัวรับฟังทั้ง 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สำหรับการตั้งค่าโฮสต์เดียวกันนี้ เพราะจะทำให้พร็อกซีถูกเปิดเผยบนอินเทอร์เฟซเครือข่ายทุกตัว

โปรแกรมแก้ไข Nano แสดงการตั้งค่า dnscrypt-proxy ด้วยการเปิดใช้งานซ็อกเก็ตและตัวแก้ไข cloudflare-security
การตั้งค่า 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บันทึกการบริการก่อนดำเนินการต่อ

หน้าต่างเทอร์มินัลของ Ubuntu แสดงคำสั่ง Pi-hole เพื่อตั้งค่า 127.0.0.1 พอร์ต 5053 เป็น DNS ต้นทาง
คำสั่ง 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 ไปใช้พร็อกซีจนกว่าการทดสอบการสอบถามภายในเครื่องจะสำเร็จ

ฝากความเห็น

แก้ไขข้อผิดพลาดลายเซ็น APT โดยการซ่อมแซมคีย์ที่เก็บข้อมูล

แก้ไขข้อผิดพลาดลายเซ็น APT โดยการซ่อมแซมคีย์ที่เก็บข้อมูล

แก้ไขคำเตือนการตรวจสอบลายเซ็น APT ของ Ubuntu อย่างปลอดภัย โดยการระบุแหล่งที่มาที่ล้มเหลว รีเฟรชคีย์ที่ได้รับการตรวจสอบแล้ว และตรวจสอบผลลัพธ์โดยไม่ต้องปิดใช้งานระบบรักษาความปลอดภัย

วิธีการแปลงค่าแรงดันไฟฟ้าสามเฟส กระแสไฟฟ้า กำลังไฟฟ้า (kW) กำลังไฟฟ้าแรงสูง (kVA) และตัวประกอบกำลัง

วิธีการแปลงค่าแรงดันไฟฟ้าสามเฟส กระแสไฟฟ้า กำลังไฟฟ้า (kW) กำลังไฟฟ้าแรงสูง (kVA) และตัวประกอบกำลัง

เรียนรู้สูตรสมดุลสามเฟสและวิธีการแปลงแรงดัน กระแส กำลังไฟฟ้า (kW) กำลังไฟฟ้าแรงสูง (kVA) และตัวประกอบกำลังทีละขั้นตอน พร้อมตัวอย่างการคำนวณและข้อจำกัดที่ต้องตรวจสอบ

จำกัดการใช้งาน CPU และหน่วยความจำของคำสั่งด้วย cgroups ใน Ubuntu

จำกัดการใช้งาน CPU และหน่วยความจำของคำสั่งด้วย cgroups ใน Ubuntu

เรียกใช้งานเวิร์กโหลดภายในขอบเขต systemd ด้วย CPUQuota และ MemoryMax จากนั้นตรวจสอบขีดจำกัดผ่าน cgroup v2

เข้ารหัส Pi-hole Upstream DNS บน Ubuntu Server 24.04

เข้ารหัส Pi-hole Upstream DNS บน Ubuntu Server 24.04

ตั้งค่า dnscrypt-proxy เป็นบริดจ์ DoH ในเครื่องของ Pi-hole บน Ubuntu 24.04 โดยกำหนดให้รับฟังเฉพาะ localhost เลือกตัวแก้ไข และตรวจสอบก่อนเปลี่ยน DNS

วิธีใช้งานท่าทางสัมผัสบนทัชแพดใน Ubuntu 24.04 บน Wayland

วิธีใช้งานท่าทางสัมผัสบนทัชแพดใน Ubuntu 24.04 บน Wayland

ตรวจสอบการตั้งค่าทัชแพดของ Ubuntu ยืนยันการใช้งาน Wayland และทดสอบการปัดนิ้วในตัวของ GNOME ก่อนที่จะแก้ไขปัญหาแอปหรือฮาร์ดแวร์

สร้าง RAID 1 Mirror สำหรับ Debian 12 โดยใช้ mdadm

สร้าง RAID 1 Mirror สำหรับ Debian 12 โดยใช้ mdadm

สร้างและตรวจสอบความถูกต้องของอาร์เรย์ข้อมูล RAID 1 สองดิสก์สำหรับ Debian 12 ฟอร์แมตอย่างปลอดภัย และกำหนดค่าให้ประกอบและเมานต์หลังจากรีบูต

เข้ารหัส Swap ของ Debian 12 ด้วยคีย์ใหม่ทุกครั้งที่บูตเครื่อง

เข้ารหัส Swap ของ Debian 12 ด้วยคีย์ใหม่ทุกครั้งที่บูตเครื่อง

ตั้งค่าการเข้ารหัสแบบสุ่มคีย์สำหรับพาร์ติชัน swap ที่มีอยู่ของ Debian 12 ตรวจสอบการแมป dm-crypt ที่ใช้งานอยู่ และทำความเข้าใจข้อดีข้อเสียของการจำศีล

วิธีจำกัดสิทธิ์การเข้าถึง SSH ให้กับผู้ใช้เฉพาะในไดเร็กทอรีที่กำหนดบน Ubuntu 24.04 (คู่มือ SFTP Chroot)

วิธีจำกัดสิทธิ์การเข้าถึง SSH ให้กับผู้ใช้เฉพาะในไดเร็กทอรีที่กำหนดบน Ubuntu 24.04 (คู่มือ SFTP Chroot)

จำกัดการเข้าถึงบัญชี SSH ของ Ubuntu 24.04 ให้เฉพาะโฟลเดอร์ SFTP ที่กำหนดไว้ โดยใช้ chroot, สิทธิ์การเข้าถึงที่เหมาะสม, กฎการจับคู่ และการทดสอบที่ปลอดภัย โดยไม่ให้สิทธิ์การเข้าถึงเชลล์

ปลดล็อก APT ของ Ubuntu อย่างปลอดภัยและทำการอัปเดตให้เสร็จสมบูรณ์

ปลดล็อก APT ของ Ubuntu อย่างปลอดภัยและทำการอัปเดตให้เสร็จสมบูรณ์

ค้นหาว่ากระบวนการใดเป็นเจ้าของไฟล์ล็อกส่วนหน้าของ dpkg ใน Ubuntu ปล่อยให้การติดตั้งแพ็กเกจเสร็จสมบูรณ์ และซ่อมแซมการติดตั้งที่หยุดชะงักโดยไม่ต้องลบไฟล์ล็อก

วิธีตั้งค่าการสร้างสแนปช็อต Btrfs อัตโนมัติบน Ubuntu Desktop

วิธีตั้งค่าการสร้างสแนปช็อต Btrfs อัตโนมัติบน Ubuntu Desktop

ตั้งค่าการสร้างสแนปช็อตระบบ Btrfs ตามกำหนดเวลาบน Ubuntu Desktop ด้วย Timeshift ตรวจสอบโครงสร้างซับโวลุ่มของ Ubuntu เลือกช่วงเวลาการเก็บรักษา และทำความเข้าใจว่าสแนปช็อตไม่สามารถปกป้องอะไรได้บ้าง