快速開始¶
本頁帶你以最短路徑把 ShadowDNS 跑起來:從原始碼編譯、準備 GeoIP 資料庫、到啟動服務。
前置條件¶
- Go 1.26+
- MaxMind GeoLite2 資料庫(Country + ASN,見步驟 3 —— 僅在 view 使用
geoip規則時需要) - 既有的 BIND 設定(
named.conf與 zone file)
1. 取得原始碼¶
2. 編譯¶
產出的 binary 位於 bin/shadowdns-<GOOS>-<GOARCH>(例如 Linux/amd64 上是 bin/shadowdns-linux-amd64,Apple Silicon 上是 bin/shadowdns-darwin-arm64)。
3. 準備 GeoIP 資料庫¶
ShadowDNS 從 named.conf 的 geoip-directory 選項讀取 mmdb 目錄(例如 /usr/local/share/GeoIP/)。有設定 geoip-directory 時,以下兩個檔案必須存在,缺一就拒絕啟動:
請從 MaxMind 下載。若沒有任何 view 使用 geoip country / geoip asnum 規則,可不設定 geoip-directory 並跳過此步驟 —— ShadowDNS 會在沒有任何 mmdb 的情況下直接啟動。詳見 GeoIP 資料庫。
4. 啟動 ShadowDNS¶
使用步驟 2 產出的 binary(以下範例假設 linux/amd64):
ShadowDNS 預設監聽 :53(UDP 與 TCP),可用 --listen 覆寫。
shadowdns.yaml 的內容與格式請見 shadowdns.yaml 設定。
5. 用 --dry-run 驗證設定¶
正式啟動前,建議先以 --dry-run 驗證所有 zone file 都能正確解析、GeoIP 資料庫可讀取:
./bin/shadowdns-linux-amd64 \
--named-conf /etc/bind/named.conf \
--config /etc/bind/shadowdns.yaml \
--dry-run
--dry-run 會載入設定與 zone、輸出摘要後直接結束,不開啟任何 listener。Exit code 為 0 即代表設定有效。