คำตอบแบบสั้น
ฉันจะรันตัวแก้ไข DNS ส่วนตัวด้วย Unbound บน VPS ได้อย่างไร?
หากต้องการรันตัวแก้ไข DNS ส่วนตัวด้วย Unbound ให้ติดตั้งแพ็กเกจ unbound ระบุที่อยู่ที่มันจะฟัง อนุญาตเฉพาะเครือข่ายของคุณด้วย access-control และทดสอบด้วย dig แพ็กเกจ Ember ของ Gloamport ที่ 1 vCPU, 1 GB RAM, 20 GB NVMe, 1 TB traffic ต่อเดือนเมื่อสมัคร 12 เดือน ($3.74) เพียงพอสำหรับคำถามของคนคนเดียว
การตั้งค่า Unbound ใดทำให้ตัวแก้ไขเป็นส่วนตัว?
| การตั้งค่า | ค่าที่ใช้ในคู่มือนี้ | เอกสาร Unbound ระบุว่า |
|---|---|---|
| interface | 127.0.0.1 และที่อยู่ของทางเชื่อมของคุณ | ที่อยู่ที่ไคลเอนต์สอบถามได้ หากไม่ระบุค่าใด Unbound จะฟังที่ localhost |
| access-control | อนุญาตเครือข่ายทางเชื่อมของคุณ | netblock ที่เจาะจงที่สุดจะถูกใช้ และไคลเอนต์ที่ไม่ตรงกับอะไรเลยจะถูกปฏิเสธ |
| hide-identity | ใช่ | คำถาม id.server และ hostname.bind จะได้รับ REFUSED |
| hide-version | ใช่ | คำถาม version.server และ version.bind จะได้รับ REFUSED |
| qname-minimisation | ใช่ | ส่งข้อมูลให้เซิร์ฟเวอร์ต้นทางน้อยที่สุดเท่าที่จำเป็น |
harden-dnssec-stripped | ใช่ | โซนที่มี trust anchor แต่ไม่มีข้อมูล DNSSEC จะถือว่าไม่ถูกต้อง |
| prefetch | ใช่ | รีเฟรชรายการที่ถูกเรียกใช้ในช่วง 10% สุดท้ายของ TTL ทำให้มีการรับส่งเพิ่มประมาณ 10% |
| private-address | ช่วงที่อยู่ส่วนตัวของคุณ | คำตอบเหล่านั้นจะถูกลบสำหรับชื่อสาธารณะ ซึ่งช่วยป้องกัน DNS rebinding |
ตรวจสอบราคาเมื่อ
ตัวแก้ไขส่วนตัวเปลี่ยนอะไร และไม่เปลี่ยนอะไร?
ตัวแก้ไขส่วนตัวเปลี่ยนว่าใครเป็นผู้ตอบคำถาม DNS ของคุณ และใครเห็นคำถามเหล่านั้นจากเครือข่าย Unbound แก้ชื่อด้วยตัวเอง โดยถามเซิร์ฟเวอร์ root แล้วจึงถามเซิร์ฟเวอร์ของแต่ละโซน แทนการส่งต่อไปยังผู้ให้บริการ DNS สาธารณะ อุปกรณ์ของคุณส่งคำถามไปยัง VPS เท่านั้น และเซิร์ฟเวอร์ของโซนจะเห็นที่อยู่ของ VPS ไม่ใช่ของคุณ
มันไม่ได้ซ่อนการท่องเว็บของคุณ เว็บไซต์ที่คุณเข้ายังถูกเข้าถึงด้วยที่อยู่ของมัน และผู้ให้บริการ VPS ยังส่งคำถามของคุณไปยัง VPS DNS แบบธรรมดาระหว่างอุปกรณ์ของคุณกับ VPS ไม่ได้ถูกเข้ารหัส นั่นคือเหตุผลที่ที่ปลอดภัยที่สุดในการฟังคือภายในอุโมงค์ เช่น WireGuard บน VPS เดียวกัน อย่าเปิดพอร์ต 53 ให้อินเทอร์เน็ตทั้งหมด: resolver แบบเปิดคือสิ่งที่คนอื่นจะใช้ และบรรทัด access-control ด้านล่างจะปฏิเสธพวกเขา
วิธีรัน Unbound เป็นตัวแก้ไข DNS ส่วนตัว
คำสั่งเหล่านี้สำหรับ Debian 13 และ Ubuntu 24.04 ตัวอย่างสมมติว่ามีอุโมงค์ WireGuard โดย VPS อยู่ที่ 10.8.0.1
ติดตั้ง Unbound และเครื่องมือทดสอบ DNS
รัน apt install unbound bind9-dnsutils แพ็กเกจที่สองให้ dig สำหรับทดสอบ ทั้ง Debian 13 และ Ubuntu 24.04 มีแพ็กเกจทั้งสองให้
เขียนการตั้งค่า
สร้างไฟล์ใน /etc/unbound/unbound.conf.d/ ด้วยส่วน server จากบล็อกโค้ดแรก แทนที่ 10.8.0.1 และ 10.8.0.0/24 ด้วยที่อยู่และเครือข่ายอุโมงค์ของคุณ หรือใช้เพียง 127.0.0.1 หากคุณสอบถามจาก VPS เอง
ตรวจไฟล์
รัน unbound-checkconf คู่มือระบุว่าคำสั่งนี้ตรวจ unbound.conf ก่อนใช้งาน และรายงานไฟล์กับบรรทัดของข้อผิดพลาด
รีสตาร์ตและดูตัวรับฟัง
รีสตาร์ตบริการ แล้วรัน ss ด้วย -lunt และ grep หา :53 คุณควรเห็นเพียงที่อยู่ที่คุณระบุ ไม่ใช่ 0.0.0.0
ทดสอบการสอบถาม
จาก VPS รัน dig @127.0.0.1 example.org จากอุปกรณ์ในอุโมงค์ รัน dig @10.8.0.1 example.org การตอบกลับ refused จากเครือข่ายที่ไม่ได้รับอนุญาตคือผลลัพธ์ที่ถูกต้อง
ชี้อุปกรณ์ของคุณไปที่มัน
ตั้งเซิร์ฟเวอร์ DNS ในการตั้งค่าอุโมงค์บนอุปกรณ์ของคุณให้เป็นที่อยู่อุโมงค์ของ VPS และปิดพอร์ต 53 บนอินเทอร์เฟซสาธารณะในไฟร์วอลล์
server:
interface: 127.0.0.1
interface: 10.8.0.1
access-control: 127.0.0.0/8 allow
access-control: 10.8.0.0/24 allow
hide-identity: yes
hide-version: yes
qname-minimisation: yes
harden-glue: yes
harden-dnssec-stripped: yes
prefetch: yes
private-address: 10.0.0.0/8
private-address: 172.16.0.0/12
private-address: 192.168.0.0/16sudo apt install unbound bind9-dnsutils
sudo unbound-checkconf
sudo systemctl restart unbound
sudo ss -lunt | grep :53
dig @127.0.0.1 example.org
dig @10.8.0.1 example.orgทำไมต้องจำกัด Unbound ด้วย access-control?
เพราะ resolver ที่ตอบทุกคนจะถูกคนแปลกหน้าค้นพบและใช้งาน คู่มือ Unbound ระบุว่าเมื่อใช้ access-control จะใช้ netblock ที่ตรงที่สุด และไคลเอนต์ที่ไม่ตรงกับอะไรเลยจะถูกปฏิเสธ ระบุเฉพาะเครือข่ายที่คุณเป็นเจ้าของ แล้วทุกอย่างที่เหลือจะถูกปฏิเสธเป็นค่าเริ่มต้น
มีค่าเริ่มต้นสองอย่างที่ช่วยได้ หากไม่มีบรรทัด interface Unbound จะฟังเฉพาะ localhost และ do-not-query-localhost มีค่าเป็น yes โดยค่าเริ่มต้น ดังนั้นมันจะไม่ส่งคำสอบถามต้นทางของตัวเองไปยังที่อยู่ localhost เพิ่มบรรทัด private-address สำหรับช่วงภายในของคุณ เพื่อไม่ให้ชื่อสาธารณะชี้อุปกรณ์ของคุณไปยังเครือข่ายภายในของคุณเอง
แพ็กเกจใดของ Gloamport เพียงพอสำหรับ DNS resolver?
แพ็กเกจที่เล็กที่สุดรองรับ resolver ส่วนตัวได้ และการใช้ร่วมกับ VPN บนเซิร์ฟเวอร์เดียวกันคือการตั้งค่าที่พบบ่อย Ember, 1 vCPU, 1 GB RAM, 20 GB NVMe, 1 TB traffic, มีราคา $3.74 ต่อเดือนในสัญญา 12 เดือน และ $7.48 สำหรับรายเดือนเดียว และ Gloamport ระบุว่าเหมาะกับ VPN WireGuard สำหรับอุปกรณ์ไม่กี่เครื่อง resolver กับ WireGuard ทำงานบน Ember ร่วมกันได้ เรายังไม่ได้ทดสอบประสิทธิภาพของ Unbound หากคุณให้บริการอุปกรณ์จำนวนมาก Dusk ที่ $5.25 ต่อเดือนในสัญญา 12 เดือน เพิ่มหน่วยความจำอีก 1 GB (2 GB)
สิ่งที่คุณปรับได้คือแคช คู่มือระบุว่า cache-min-ttl ซึ่งปิดอยู่โดยค่าเริ่มต้น อาจก่อปัญหาเมื่อตั้งสูงกว่าประมาณหนึ่งชั่วโมง จึงควรปล่อยไว้หากคุณไม่รู้เหตุผลที่ต้องการ
การรัน resolver เองดีกว่าผู้ให้บริการ DNS สาธารณะหรือไม่?
ขึ้นอยู่กับว่าคุณเลือกไว้วางใจใครกับบันทึกการสอบถามของคุณ การรันเองตัดหนึ่งฝ่ายออกไป ผู้ให้บริการ DNS สาธารณะเห็นทุกชื่อที่อุปกรณ์ของคุณค้นหา แต่เมื่อใช้ Unbound บน VPS ของคุณเอง ที่เดียวที่รวบรวมคำสอบถามเหล่านี้คือเซิร์ฟเวอร์ที่คุณควบคุม เซิร์ฟเวอร์ที่มีอำนาจของโซนที่คุณถามยังเห็นคำสอบถามจากที่อยู่ของ VPS
ตามการสำรวจของ Gloamport เกี่ยวกับ 10 พฤศจิกายน 2569 มี 28 จาก 49 ผู้ให้บริการที่ระบุไว้ไม่ขอเอกสารยืนยันตัวตนตอนสมัคร ดังนั้น VPS ที่รันมันจึงใช้ได้โดยไม่ต้องส่งเอกสาร สำหรับภาพรวมของตัวเลือกอุโมงค์ทั้งหมด อ่าน VPN ที่โฮสต์เองบน VPS ดีกว่าบริการ VPN หรือไม่? และรักษาความปลอดภัยโฮสต์ด้วย วิธีทำให้ SSH แข็งแรงบน VPS ใหม่?
สรุป
- ติดตั้ง unbound และ bind9-dnsutils ตั้งค่าใน /etc/unbound/unbound.conf.d/
- ใช้ interface และ access-control เพื่อให้เฉพาะเครือข่ายของคุณสอบถามได้
- ไคลเอนต์ที่ไม่ตรงกับ netblock ใด ๆ ของ access-control จะถูกปฏิเสธ
- hide-identity และ hide-version ทำให้คำถามเกี่ยวกับตัวตนและเวอร์ชันได้รับ REFUSED
- รัน unbound-checkconf ก่อนรีสตาร์ตทุกครั้ง
- ใส่ไว้ในอุโมงค์ WireGuard DNS ธรรมดาไม่ได้ถูกเข้ารหัส
- Ember, $3.74 ต่อเดือนเมื่อสมัคร 12 เดือน รันมัน
Unbound resolver ส่วนตัว: คำถามที่พบบ่อย
Unbound ตรวจ DNSSEC หรือไม่?
Unbound เป็น resolver ที่ตรวจสอบความถูกต้องได้ และคู่มือของมันอธิบายตัวเลือก trust-anchor และ harden-dnssec-stripped ตรวจการติดตั้งของคุณด้วย dig +dnssec และมองหาแฟล็ก ad ในคำตอบ
ฉันส่งต่อคำสอบถามไปยังผู้ให้บริการ DNS อื่นแทนได้ไหม?
ได้ Unbound รองรับการส่งต่อ แต่ผู้ให้บริการนั้นจะเห็นคำสอบถามของคุณ คู่มือนี้แก้ชื่อแบบ recursive จึงไม่มีผู้ให้บริการรายเดียวเห็นทุกอย่าง
ทำไม unbound-checkconf ล้มเหลว?
มันรายงานไฟล์และบรรทัดของข้อผิดพลาดแรก สาเหตุทั่วไปคือคำสำคัญพิมพ์ผิดหรือขาดเครื่องหมายโคลอน แก้ไขแล้วรันคำสั่งอีกครั้งก่อนรีสตาร์ตบริการ
ฉันต้องเปิดพอร์ต 53 ในไฟร์วอลล์หรือไม่?
เฉพาะบนอินเทอร์เฟซอุโมงค์ ปิดไว้บนอินเทอร์เฟซสาธารณะ และจำกัดรายการ access-control ไว้เฉพาะเครือข่ายของคุณ
prefetch ทำอะไร?
เมื่อ prefetch ตั้งเป็น yes การเรียกใช้แคชในช่วง 10 เปอร์เซ็นต์สุดท้ายของอายุรายการจะกระตุ้นการรีเฟรชเบื้องหลัง คู่มือระบุว่าสิ่งนี้เพิ่มการรับส่งและภาระประมาณ 10 เปอร์เซ็นต์
แหล่งข้อมูล (1)
- คู่มือ unbound.conf(5): ตัวเลือกของ server — NLnet Labs (checked 2026-11-10)