如何在 macOS 上配置 DNS over HTTPS
本指南將幫助您在 macOS 系統上設置和配置 DNS over HTTPS (DoH),提供從基本設置到高級配置的完整說明。
前提條件
- macOS 10.15 (Catalina) 或更高版本
- 管理員權限
- 穩定的網絡連接
- 基本的命令行知識
系統級配置
步驟 1:使用系統設置
- 點擊 Apple 選單
- 選擇「系統設置」(或「系統偏好設定」)
- 點擊「網絡」
- 選擇當前網絡連接
- 點擊「詳細資訊…」
- 選擇「DNS」標籤
步驟 2:配置 DNS 服務器
- 點擊「+」按鈕添加 DNS 服務器
- 輸入以下服務器地址:
1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001
步驟 3:終端機配置
打開終端機並運行以下命令:
# 查看當前 DNS 設置
scutil --dns
# 配置 DNS 服務器
networksetup -setdnsservers Wi-Fi 1.1.1.1 1.0.0.1
# 驗證設置
networksetup -getdnsservers Wi-Fi
使用第三方客戶端
DNSCrypt-Proxy
- 安裝
# 使用 Homebrew 安裝
brew install dnscrypt-proxy
# 或手動安裝
curl -L https://github.com/DNSCrypt/dnscrypt-proxy/releases/latest/download/dnscrypt-proxy-macos-amd64.tar.gz | tar xz
- 配置
編輯 dnscrypt-proxy.toml
文件:
listen_addresses = ['127.0.0.1:53']
server_names = ['cloudflare', 'google']
doh_servers = true
require_dnssec = true
require_nolog = true
require_nofilter = true
force_tcp = false
timeout = 2500
keepalive = 30
- 啟動服務
# 安裝服務
sudo brew services start dnscrypt-proxy
# 或手動啟動
sudo dnscrypt-proxy -service install
sudo dnscrypt-proxy -service start
加密 DNS 配置描述檔
- 創建配置描述檔
創建 .mobileconfig
文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>DNSSettings</key>
<dict>
<key>DNSProtocol</key>
<string>HTTPS</string>
<key>ServerURL</key>
<string>https://cloudflare-dns.com/dns-query</string>
</dict>
<key>PayloadDescription</key>
<string>配置 DNS over HTTPS</string>
<key>PayloadDisplayName</key>
<string>DNS 設置</string>
<key>PayloadIdentifier</key>
<string>com.example.dns</string>
<key>PayloadType</key>
<string>com.apple.dnsSettings.managed</string>
<key>PayloadUUID</key>
<string>A1B2C3D4-E5F6-G7H8-I9J0-K1L2M3N4O5P6</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</array>
<key>PayloadDescription</key>
<string>DNS over HTTPS 配置</string>
<key>PayloadDisplayName</key>
<string>DoH 配置</string>
<key>PayloadIdentifier</key>
<string>com.example.doh</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>Q1R2S3T4-U5V6-W7X8-Y9Z0-A1B2C3D4E5F6</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
- 安裝描述檔
- 雙擊配置文件
- 按照系統提示安裝
- 在系統設置中驗證
驗證配置
方法 1:使用終端機
# 測試 DNS 解析
dig example.com @127.0.0.1
# 檢查 DNSSEC
dig example.com @127.0.0.1 +dnssec
# 驗證 DoH 服務器
dig whoami.cloudflare CH TXT @127.0.0.1
方法 2:使用系統工具
- 打開「網絡工具」
- 選擇「查找」
- 輸入域名進行測試
- 檢查解析結果
方法 3:在線測試
- 訪問 DNS 洩漏測試網站
- 運行標準測試
- 驗證 DNS 請求路由
故障排除
常見問題
-
DNS 解析失敗
- 檢查網絡連接
- 驗證 DNS 設置
- 重啟網絡服務
- 清除 DNS 緩存
-
性能問題
- 選擇最近的服務器
- 優化緩存設置
- 監控響應時間
- 檢查系統資源
-
配置描述檔問題
- 驗證文件格式
- 檢查權限設置
- 重新安裝配置
- 更新系統版本
系統診斷
- 網絡診斷
# 測試網絡連接
ping 1.1.1.1
# 檢查路由
traceroute 1.1.1.1
# 查看網絡狀態
networksetup -listallnetworkservices
- DNS 診斷
# 清除 DNS 緩存
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
# 查看 DNS 配置
scutil --dns
# 測試 DNS 解析
dig +trace example.com
最佳實踐
-
提供商選擇
- 評估隱私政策
- 檢查服務可用性
- 考慮地理位置
- 測試連接速度
-
安全建議
- 啟用 DNSSEC
- 使用可信提供商
- 定期系統更新
- 監控網絡活動
-
性能優化
- 選擇最近的服務器
- 優化緩存設置
- 監控性能指標
- 定期維護
企業部署
MDM 配置
-
創建配置文件
- 設置 DNS 參數
- 配置安全選項
- 定義部署範圍
- 準備簽名證書
-
部署策略
- 推送配置描述檔
- 監控部署狀態
- 處理錯誤報告
- 更新配置
自動化配置
- 使用腳本
#!/bin/bash
# 配置 DoH
configure_doh() {
# 安裝必要工具
brew install dnscrypt-proxy
# 備份配置
cp /usr/local/etc/dnscrypt-proxy.toml /usr/local/etc/dnscrypt-proxy.toml.bak
# 啟動服務
brew services start dnscrypt-proxy
}
- 使用配置管理工具
# Ansible 示例
- name: Configure DNS over HTTPS
hosts: macos_clients
tasks:
- name: Install dnscrypt-proxy
homebrew:
name: dnscrypt-proxy
state: present
- name: Configure dnscrypt-proxy
template:
src: dnscrypt-proxy.toml.j2
dest: /usr/local/etc/dnscrypt-proxy.toml
其他資源
重要注意事項
-
系統兼容性
- 檢查系統版本
- 驗證硬件要求
- 測試軟件兼容性
- 評估性能影響
-
網絡影響
- 監控網絡延遲
- 評估帶寬使用
- 考慮故障轉移選項
- 優化路由設置
-
安全考慮
- 保護配置文件
- 限制訪問權限
- 監控系統日誌
- 定期安全審計
-
維護建議
- 定期軟件更新
- 備份配置
- 監控系統狀態
- 制定應急計劃