Linux で DNS over HTTPS を設定する方法
このガイドでは、Linux システムで DNS over HTTPS (DoH) を設定する方法を、複数の設定方法とベストプラクティスを含めて説明します。
前提条件
- Linux オペレーティングシステム
- 管理者(root)権限
- 基本的なコマンドライン知識
- 安定したネットワーク接続
systemd-resolved の使用
ステップ 1: systemd-resolved のバージョン確認
systemctl --version
systemd-resolve --version
バージョンが 247 以上であることを確認してください。これらのバージョンは DoH をサポートしています。
ステップ 2: resolved.conf の設定
/etc/systemd/resolved.conf
を編集します:
[Resolve]
DNS=1.1.1.1 1.0.0.1
DNSOverTLS=yes
DNSSEC=yes
Cache=yes
DNSStubListener=yes
DoH の場合は、以下の設定を追加します:
[Resolve]
DNS=https://cloudflare-dns.com/dns-query
https://dns.google/dns-query
DNSOverTLS=no
DNSSEC=yes
Cache=yes
DNSStubListener=yes
ステップ 3: サービスの再起動
sudo systemctl restart systemd-resolved
sudo systemctl status systemd-resolved
NetworkManager の使用
ステップ 1: NetworkManager のバージョン確認
nmcli --version
バージョンが DoH 機能をサポートしていることを確認してください。
ステップ 2: 接続の設定
nmcli を使用して DoH を設定します:
# 現在の接続を一覧表示
nmcli connection show
# 指定した接続を変更
sudo nmcli connection modify "接続名" ipv4.dns "1.1.1.1,1.0.0.1" ipv4.dns-over-tls yes
sudo nmcli connection modify "接続名" ipv6.dns "2606:4700:4700::1111,2606:4700:4700::1001" ipv6.dns-over-tls yes
ステップ 3: 変更の適用
sudo nmcli connection up "接続名"
スタンドアロンクライアントの使用
dnscrypt-proxy
- インストール
# Debian/Ubuntu
sudo apt install dnscrypt-proxy
# Fedora
sudo dnf install dnscrypt-proxy
# Arch Linux
sudo pacman -S dnscrypt-proxy
- 設定
/etc/dnscrypt-proxy/dnscrypt-proxy.toml
を編集します:
server_names = ['cloudflare', 'google']
listen_addresses = ['127.0.0.1:53']
max_clients = 250
ipv4_servers = true
ipv6_servers = true
dnscrypt_servers = true
doh_servers = true
require_dnssec = true
require_nolog = true
require_nofilter = true
force_tcp = false
timeout = 2500
keepalive = 30
- サービスの開始
sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy
sudo systemctl status dnscrypt-proxy
Stubby
- インストール
# Debian/Ubuntu
sudo apt install stubby
# Fedora
sudo dnf install stubby
# Arch Linux
sudo pacman -S stubby
- 設定
/etc/stubby/stubby.yml
を編集します:
resolution_type: GETDNS_RESOLUTION_STUB
dns_transport_list:
- GETDNS_TRANSPORT_TLS
tls_authentication: GETDNS_AUTHENTICATION_REQUIRED
tls_query_padding_blocksize: 128
edns_client_subnet_private: 1
round_robin_upstreams: 1
idle_timeout: 10000
listen_addresses:
- 127.0.0.1@53
- 0::1@53
upstream_recursive_servers:
- address_data: 1.1.1.1
tls_auth_name: "cloudflare-dns.com"
- address_data: 1.0.0.1
tls_auth_name: "cloudflare-dns.com"
- サービスの開始
sudo systemctl enable stubby
sudo systemctl start stubby
sudo systemctl status stubby
設定の確認
方法 1: dig の使用
# DNS 解決をテスト
dig @127.0.0.1 example.com
# DNSSEC を確認
dig @127.0.0.1 example.com +dnssec
# DoH サーバーを検証
dig @127.0.0.1 whoami.cloudflare CH TXT
方法 2: resolvectl の使用
# 現在の DNS 設定を表示
resolvectl status
# DNS 解決をテスト
resolvectl query example.com
# DNSSEC を確認
resolvectl query --dnssec example.com
方法 3: オンラインテスト
- DNS リークテストウェブサイトにアクセス
- 包括的テストを実行
- DNS リクエストのルーティングを確認
トラブルシューティング
一般的な問題
-
解決エラー
- ネットワーク接続を確認
- 設定ファイルを確認
- サービスのステータスを確認
- システムログを確認
-
パフォーマンスの問題
- 最寄りのサーバーを選択
- キャッシュ設定を最適化
- 応答時間を監視
- システムリソースを確認
-
互換性の問題
- パッケージを更新
- 依存関係を確認
- システム要件を確認
- 代替設定をテスト
ログ分析
- システムログ
# systemd-resolved のログを表示
journalctl -u systemd-resolved
# NetworkManager のログを確認
journalctl -u NetworkManager
# dnscrypt-proxy のログを表示
journalctl -u dnscrypt-proxy
- ネットワーク診断
# ネットワーク接続をテスト
ping 1.1.1.1
# DNS 解決を確認
nslookup example.com
# DNSSEC を検証
dig example.com +dnssec
ベストプラクティス
-
プロバイダの選択
- プライバシーポリシーを評価
- サービスの可用性を確認
- 地理的位置を考慮
- 接続速度をテスト
-
セキュリティの推奨事項
- 信頼できるプロバイダを使用
- DNSSEC を有効化
- 定期的なシステム更新
- ネットワーク活動を監視
-
パフォーマンスの最適化
- 最寄りのサーバーを選択
- キャッシュ設定を最適化
- パフォーマンス指標を監視
- 定期的なメンテナンス
企業導入
システム全体の設定
-
設定ファイルの作成
- systemd-resolved のセットアップ
- NetworkManager の設定
- クライアントソフトウェアの展開
-
展開戦略
- 構成管理の使用
- モニタリングの実装
- メンテナンス期間の計画
-
メンテナンス管理
- 定期的な更新
- パフォーマンスモニタリング
- 問題追跡
- バックアップ手順
次のステップ
- サーバーリスト - 利用可能な DoH プロバイダを閲覧
- セキュリティガイド - セキュリティ設定について詳しく学ぶ
- パフォーマンス最適化 - DNS パフォーマンスを向上
- よくある質問 - さらなるヘルプを入手