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: DNS over HTTPS を設定
  hosts: macos_clients
  tasks:
    - name: dnscrypt-proxy をインストール
      homebrew:
        name: dnscrypt-proxy
        state: present

    - name: dnscrypt-proxy を設定
      template:
        src: dnscrypt-proxy.toml.j2
        dest: /usr/local/etc/dnscrypt-proxy.toml

追加リソース

重要な注意事項

  1. システム互換性

    • システムバージョンを確認
    • ハードウェア要件を確認
    • ソフトウェア互換性をテスト
    • パフォーマンス影響を評価
  2. ネットワークへの影響

    • ネットワーク遅延を監視
    • 帯域幅使用量を評価
    • フェイルオーバーオプションを検討
    • ルーティング設定を最適化
  3. セキュリティに関する考慮事項

    • 構成ファイルを保護
    • アクセス権限を制限
    • システムログを監視
    • 定期的なセキュリティ監査
  4. メンテナンスの推奨事項

    • 定期的なソフトウェア更新
    • 構成のバックアップ
    • システム状態の監視
    • 緊急時計画の策定

次のステップ