5.2. 既存の RHEL インストールにおける eDNS の有効化
既存の RHEL インストールで暗号化された DNS (eDNS) を有効にして、DNS-over-TLS を使用してすべての DNS トラフィックを処理できます。
前提条件
-
sudo
または root ユーザーアクセス権によって提供される管理者特権。これは先頭にコマンドプロンプト#
が付いているコマンドに必要です。sudo アクセス権を設定する方法については、非特権ユーザーが特定のコマンドを実行できるようにする を参照してください。
- 既存の RHEL インストールがある。
次のパッケージがシステムにインストールされている。
-
dnsconfd
-
dnsconfd-dracut
-
grubby
-
-
IBM Z システムの場合は、
zipl
ユーティリティーがインストールされている。
手順
/etc/NetworkManager/conf.d/global-dot.conf
ファイルで NetworkManager を設定します。[main] dns=dnsconfd [global-dns] resolve-mode=exclusive [global-dns-domain-*] servers=dns+tls://<server_ip_1><dns_server_hostname_1>,dns+tls://<server_ip_2><dns_server_hostname_2>
[main] dns=dnsconfd [global-dns] resolve-mode=exclusive [global-dns-domain-*] servers=dns+tls://<server_ip_1><dns_server_hostname_1>,dns+tls://<server_ip_2><dns_server_hostname_2>
Copy to Clipboard Copied! オプション: アップストリームの DoT サーバーを検証するためにカスタム CA バンドルを使用するには、PEM 形式のファイルを
/etc/pki/dns/extracted/pem/tls-ca-bundle.pem
ファイルにコピーします。注記/etc/pki/dns/extracted/pem
で証明書を追加または削除したら、変更を適用するためにdnsconfd
サービスを再起動してください。dnsconfd
サービスを有効にします。systemctl enable --now dnsconfd
# systemctl enable --now dnsconfd
Copy to Clipboard Copied! NetworkManager をリロードします。
systemctl reload NetworkManager
# systemctl reload NetworkManager
Copy to Clipboard Copied! dnsconfd
とその設定が含まれるように、すべてのインストール済みカーネルのinitramfs
を再生成します。for kernel in `rpm -q kernel --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n'`; do
# for kernel in `rpm -q kernel --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n'`; do dracut -f --kver="$kernel" done
Copy to Clipboard Copied! カーネル引数を、現在のカーネルバージョンと新しくインストールされたカーネルバージョンに設定します。
grubby --args="rd.net.dns=dns+tls://<server_ip>#<dns_server_hostname> rd.net.dns-resolve-mode=exclusive rd.net.dns-backend=dnsconfd" --update-kernel=ALL
# grubby --args="rd.net.dns=dns+tls://<server_ip>#<dns_server_hostname> rd.net.dns-resolve-mode=exclusive rd.net.dns-backend=dnsconfd" --update-kernel=ALL
Copy to Clipboard Copied! IBM Z の場合は、ブートメニューを更新します。
zipl
# zipl
Copy to Clipboard Copied!
検証
eDNS 設定を確認します。
dnsconfd status
$ dnsconfd status
Copy to Clipboard Copied! 想定される出力:
Running cache service: unbound Resolving mode: exclusive Config present in service: { ".": [ "dns+tls://198.51.100.143#dot.dns.example.com" ] } State of Dnsconfd: RUNNING Info about servers: [ { "address": "198.51.100.143", "port": 853, "name": "dot.dns.example.com", "routing_domains": [ "." ], "search_domains": [], "interface": null, "protocol": "dns+tls", "dnssec": true, "networks": [], "firewall_zone": null } ]
Running cache service: unbound Resolving mode: exclusive Config present in service: { ".": [ "dns+tls://198.51.100.143#dot.dns.example.com" ] } State of Dnsconfd: RUNNING Info about servers: [ { "address": "198.51.100.143", "port": 853, "name": "dot.dns.example.com", "routing_domains": [ "." ], "search_domains": [], "interface": null, "protocol": "dns+tls", "dnssec": true, "networks": [], "firewall_zone": null } ]
Copy to Clipboard Copied! nslookup
を使用して DNS サーバーが応答することを確認します。nslookup <domain_name>
$ nslookup <domain_name>
Copy to Clipboard Copied! <domain_name>
は、照会するドメインに置き換えます。
トラブルシューティング
unbound
で詳細なロギングを有効にします。unbound-control verbosity 5
# unbound-control verbosity 5
Copy to Clipboard Copied! 関連するサービスのログを確認します。
journalctl -xe -u <service_name>
$ journalctl -xe -u <service_name>
Copy to Clipboard Copied! <service_name>
は、NetworkManager
、dnsconfd
、またはunbound
に置き換えます。