DNS DoH DoT AdGuard Home 網路安全 VPS

DNS 還在明文傳輸?用 AdGuard Home 在 VPS 上自架加密 DNS 伺服器

傳統 DNS 查詢完全明文,ISP 和中間路由器都能看到你在查什麼網域。本文說明 DoH、DoT 的原理差異,以及如何在 VPS 上用 Docker 部署 AdGuard Home,讓所有裝置的 DNS 查詢都走加密通道。

你的 HTTPS 流量是加密的,但 DNS 查詢不是。

每次你的裝置要連到某個網站,它必須先查詢 DNS 把網域名稱解析成 IP 位址。這個查詢預設走 UDP port 53,完全明文,路徑上的每個路由器、你的 ISP、乃至公共 Wi-Fi 的管理者,都能看到你在查哪些網域。對一般瀏覽者來說是隱私問題,對企業和開發者來說還有資安風險。

DNS-over-HTTPS(DoH)和 DNS-over-TLS(DoT)就是為了解決這個問題而設計的。兩者都把 DNS 查詢包在加密連線裡,讓中間節點看不到內容。

DoH 和 DoT 的差異

兩個協定都解決同一個問題,但方式不同:

DoT(DNS-over-TLS) 在 TCP port 853 上跑,把 DNS 查詢包在 TLS 連線裡。優點是明確可識別——防火牆可以直接針對 port 853 做管理策略,不會跟其他流量混在一起。缺點也一樣,防火牆也可以直接封鎖 853 就把 DoT 擋掉。

DoH(DNS-over-HTTPS) 把 DNS 查詢包在標準的 HTTPS 請求裡,走 port 443,從外部看起來跟普通的 HTTPS 流量沒有區別。穿透能力更強,幾乎不可能被選擇性封鎖。代價是對中間設備的可控性較低。

對個人和小團隊的自架場景,兩者效果相近。如果你的網路環境會封鎖非標準 port,選 DoH。如果需要在網路設備層面做清晰的流量分類,選 DoT。

為什麼 Pi-hole + cloudflared 的組合已經過時

過去常見的做法是 Pi-hole + cloudflared,讓 Pi-hole 的上游 DNS 查詢走 DoH。但 Cloudflare 已在 2025 年 11 月宣布棄用 cloudflared 的 proxy-dns 功能,2026 年 2 月起更新後即失效。這條路徑已正式走入歷史。

AdGuard Home 原生支援 DoH、DoT 和 DoQ(DNS-over-QUIC),不需要任何額外的 proxy daemon,設定比以前的組合乾淨許多。

在 VPS 上部署 AdGuard Home

用 Docker Compose 是最好維護的方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# /opt/adguard/compose.yaml
services:
adguard:
image: adguard/adguardhome:latest
restart: unless-stopped
volumes:
- ./work:/opt/adguardhome/work
- ./conf:/opt/adguardhome/conf
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp" # 初始設定介面(設定完可關掉)
- "443:443/tcp" # DoH / 管理介面 HTTPS
- "443:443/udp" # DoQ (QUIC)
- "853:853/tcp" # DoT
- "3000:3000/tcp" # 初始設定 wizard
1
2
cd /opt/adguard
docker compose up -d

第一次啟動後,瀏覽 http://你的IP:3000 進行初始設定 wizard:設定管理員帳號密碼、選擇 DNS 監聽介面。完成後管理介面在 port 80(或你設定的 HTTPS port)。

一定要釘定版本號,不要用 latest。AdGuard Home 更新快,偶爾有 breaking change,生產環境用 adguard/adguardhome:v0.107.x

設定加密上游 DNS

在管理介面的「設定 → DNS 設定 → 上游 DNS 伺服器」,把 ISP 的 DNS 改成加密的:

1
2
3
4
5
6
7
8
# Cloudflare DoH
https://dns.cloudflare.com/dns-query

# Quad9 DoT(注重隱私,會過濾惡意網域)
tls://dns.quad9.net

# Google DoH(速度快,但 Google 會看到你的查詢)
https://dns.google/dns-query

可以同時填多個,AdGuard Home 會平行查詢,取最快回應。臺灣用戶用 Cloudflare(1.1.1.1 的 DoH/DoT)通常延遲最低。

「Bootstrap DNS 伺服器」是用來解析上游 DoH 伺服器的網域名稱本身(因為要先知道 dns.cloudflare.com 的 IP 才能建立 DoH 連線),填 1.1.1.18.8.8.8 即可,這個查詢還是明文,但只有一次。

讓 AdGuard Home 自己處理 HTTPS 憑證

要讓 DoH 和 DoT 正常運作,需要有效的 TLS 憑證。在「設定 → 加密設定」裡填入:

  • 伺服器名稱:你的 DNS 伺服器網域(例如 dns.yourdomain.com
  • 憑證路徑和私鑰路徑

搭配 Certbot 或 Caddy 取得 Let’s Encrypt 憑證。如果用 Nginx 反代,把 AdGuard Home 的 HTTPS port 改到非 443,讓 Nginx 處理 TLS termination:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# /etc/nginx/sites-available/dns
server {
listen 443 ssl http2;
server_name dns.yourdomain.com;

ssl_certificate /etc/letsencrypt/live/dns.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dns.yourdomain.com/privkey.pem;

# DoH 走 /dns-query
location /dns-query {
proxy_pass https://127.0.0.1:4443/dns-query;
proxy_ssl_verify off;
}

# 管理介面只允許特定 IP
location / {
allow 203.0.113.10; # 你的管理 IP
deny all;
proxy_pass https://127.0.0.1:4443/;
proxy_ssl_verify off;
}
}

這樣 DoH 的 /dns-query 路徑對外開放,管理介面只有特定 IP 能存取,兩者不衝突。

在裝置上啟用加密 DNS

iOS / macOS:設定 → Wi-Fi → DNS → 設定為 DoH 或 DoT(需要從 iOS 14 / macOS 11 起)。或在「一般 → VPN 與裝置管理」安裝設定描述檔。

Android(9+):設定 → 網路 → 進階 → 私密 DNS → 填入 dns.yourdomain.com(這走的是 DoT)。

Windows 11:設定 → 網路 → 乙太網路 / Wi-Fi → DNS 伺服器 → 手動設定 → 填入 DoH 伺服器位址 → 加密選擇「僅限加密」。

Linux(systemd-resolved)

1
2
3
4
# /etc/systemd/resolved.conf
[Resolve]
DNS=你的VPS_IP
DNSOverTLS=yes

廣告攔截與 DNS 過濾是附加功能

AdGuard Home 本質上是一個 DNS 解析器,廣告攔截是透過維護一份「已知廣告和追蹤器網域」的封鎖清單來實現的。在「過濾器」裡可以訂閱社群維護的清單:

  • AdGuard DNS filter:官方預設,涵蓋廣告和追蹤器
  • OISD Blocklist:高品質、誤封少,推薦作為補充
  • HaGeZi Multi Pro:較積極,誤封率稍高但覆蓋更廣

注意:這種方式只能封鎖「已知的廣告網域」,YouTube 廣告因為跟影片內容走同一個網域,DNS 層無法封鎖。不要對這個功能期望過高。

確認 DNS 確實走加密通道

dnsleak.com1.1.1.1/help 確認你看到的 DNS 伺服器是你自己的 VPS,而不是 ISP 的 DNS。

dig 直接測試 DoH:

1
dig @https://dns.yourdomain.com/dns-query example.com

或用 kdig(KNOT DNS 工具集,支援 DoT):

1
kdig -d @dns.yourdomain.com +tls-ca example.com

NCSE Network 提供臺灣本地機房的 VPS,IP Transit 服務從 10M 到 100G,適合自架需要低延遲 DNS 服務的基礎設施需求。詳情見 ncse.tw

需要高品質的網路服務?

NCSE Network 提供 IP Transit、IP Tunnel 及 BGP 路由規劃,10M~100G 彈性頻寬,多上游備援確保穩定。

了解網路服務 →