如何在 macOS 上配置 DNS over HTTPS

本指南將幫助您在 macOS 系統上設置和配置 DNS over HTTPS (DoH),提供從基本設置到高級配置的完整說明。

前提條件

  • macOS 10.15 (Catalina) 或更高版本
  • 管理員權限
  • 穩定的網絡連接
  • 基本的命令行知識

系統級配置

步驟 1:使用系統設置

  1. 點擊 Apple 選單
  2. 選擇「系統設置」(或「系統偏好設定」)
  3. 點擊「網絡」
  4. 選擇當前網絡連接
  5. 點擊「詳細資訊…」
  6. 選擇「DNS」標籤

步驟 2:配置 DNS 服務器

  1. 點擊「+」按鈕添加 DNS 服務器
  2. 輸入以下服務器地址:
    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

  1. 安裝
# 使用 Homebrew 安裝
brew install dnscrypt-proxy

# 或手動安裝
curl -L https://github.com/DNSCrypt/dnscrypt-proxy/releases/latest/download/dnscrypt-proxy-macos-amd64.tar.gz | tar xz
  1. 配置

編輯 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
  1. 啟動服務
# 安裝服務
sudo brew services start dnscrypt-proxy

# 或手動啟動
sudo dnscrypt-proxy -service install
sudo dnscrypt-proxy -service start

加密 DNS 配置描述檔

  1. 創建配置描述檔

創建 .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. 安裝描述檔
    • 雙擊配置文件
    • 按照系統提示安裝
    • 在系統設置中驗證

驗證配置

方法 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:使用系統工具

  1. 打開「網絡工具」
  2. 選擇「查找」
  3. 輸入域名進行測試
  4. 檢查解析結果

方法 3:在線測試

  1. 訪問 DNS 洩漏測試網站
  2. 運行標準測試
  3. 驗證 DNS 請求路由

故障排除

常見問題

  1. DNS 解析失敗

    • 檢查網絡連接
    • 驗證 DNS 設置
    • 重啟網絡服務
    • 清除 DNS 緩存
  2. 性能問題

    • 選擇最近的服務器
    • 優化緩存設置
    • 監控響應時間
    • 檢查系統資源
  3. 配置描述檔問題

    • 驗證文件格式
    • 檢查權限設置
    • 重新安裝配置
    • 更新系統版本

系統診斷

  1. 網絡診斷
# 測試網絡連接
ping 1.1.1.1

# 檢查路由
traceroute 1.1.1.1

# 查看網絡狀態
networksetup -listallnetworkservices
  1. DNS 診斷
# 清除 DNS 緩存
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# 查看 DNS 配置
scutil --dns

# 測試 DNS 解析
dig +trace example.com

最佳實踐

  1. 提供商選擇

    • 評估隱私政策
    • 檢查服務可用性
    • 考慮地理位置
    • 測試連接速度
  2. 安全建議

    • 啟用 DNSSEC
    • 使用可信提供商
    • 定期系統更新
    • 監控網絡活動
  3. 性能優化

    • 選擇最近的服務器
    • 優化緩存設置
    • 監控性能指標
    • 定期維護

企業部署

MDM 配置

  1. 創建配置文件

    • 設置 DNS 參數
    • 配置安全選項
    • 定義部署範圍
    • 準備簽名證書
  2. 部署策略

    • 推送配置描述檔
    • 監控部署狀態
    • 處理錯誤報告
    • 更新配置

自動化配置

  1. 使用腳本
#!/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
}
  1. 使用配置管理工具
# 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

其他資源

重要注意事項

  1. 系統兼容性

    • 檢查系統版本
    • 驗證硬件要求
    • 測試軟件兼容性
    • 評估性能影響
  2. 網絡影響

    • 監控網絡延遲
    • 評估帶寬使用
    • 考慮故障轉移選項
    • 優化路由設置
  3. 安全考慮

    • 保護配置文件
    • 限制訪問權限
    • 監控系統日誌
    • 定期安全審計
  4. 維護建議

    • 定期軟件更新
    • 備份配置
    • 監控系統狀態
    • 制定應急計劃

下一步