5.3. カスタムの起動可能な ISO を使用して eDNS が有効な RHEL をインストールする
厳格な強制ポリシーを使用して暗号化 DNS (eDNS) が有効な RHEL をインストールするために、カスタムの起動可能な ISO を作成します。この方法により、インストール中からインストール後まで、すべての DNS トラフィックがプライベートかつセキュアな状態になります。
カスタムの CA 証明書バンドルが必要な場合は、キックスタートファイルの %certificate セクションを使用してバンドルをインストールする必要があります。その後、スクリプトでこのキックスタートファイルを参照して、厳格な DoT ポリシーを適用するためのカーネル引数を含む新しい ISO をビルドします。暗号化されていない DNS へのフォールバックをサポートするように環境が設定されている場合は、標準の RHEL インストールを実行し、その後で eDNS を設定できます。
前提条件
-
sudoまたは root ユーザーアクセス権によって提供される管理者特権。これは先頭にコマンドプロンプト#が付いているコマンドに必要です。sudoアクセス権を設定する方法については、非特権ユーザーが特定のコマンドを実行できるようにする を参照してください。 - Product Downloads ページから最小インストール用の Boot ISO イメージをダウンロードした。
-
%certificateセクションを含むキックスタートファイルがある (カスタム CA バンドルが必要な場合)。 -
loraxパッケージがインストールされている。
手順
オプション:
%certificateセクションを含むキックスタートファイルを作成します。証明書がtls-ca-bundle.pemという名前のファイルに保存されていることを確認します。%certificate --dir /etc/pki/dns/extracted/pem/ --filename tls-ca-bundle.pem -----BEGIN CERTIFICATE----- <Base64-encoded_certificate_content> -----END CERTIFICATE----- %endキックスタートファイルとカーネル引数を ISO に追加します。
次のスクリプト例は、eDNS が有効なカスタムの起動可能な ISO を作成する方法を示しています。このプロセスを自動化するには、スクリプトファイルを作成する必要があります。
#!/bin/bash set -ex KERNELARGS="" # Enable network KERNELARGS+="ip=dhcp " # Set DoT DNS server KERNELARGS+="rd.net.dns=dns+tls://_<server_ip>_#_<dns_server_hostname>_ " # Set to 'exclusive' to disable fallback to unencrypted DNS. Other values: 'backup', 'prefer'. KERNELARGS+="rd.net.dns-resolve-mode=exclusive " # Set the dnsconfd plugin for NetworkManager KERNELARGS+="rd.net.dns-backend=dnsconfd " # Remove any existing ISO to prevent conflicts with the new build rm -f _<output_iso_filename>_ # Create a new bootable ISO with the Kickstart config file and kernel arguments mkksiso --ks _<kickstart_file>_ --cmdline "$KERNELARGS" _<input_iso_filename>_ _<output_iso_filename>_スクリプトを実行します。
sh <script_filename>- カスタマイズした ISO ファイルを使用して RHEL をインストールします。
検証
eDNS 設定を確認します。
$ dnsconfd status想定される出力:
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 } ]nslookupを使用して DNS サーバーが応答することを確認します。$ nslookup <domain_name><domain_name>は、照会するドメインに置き換えます。
トラブルシューティング
unboundで詳細なロギングを有効にします。# unbound-control verbosity 5関連するサービスのログを確認します。
$ journalctl -xe -u <service_name><service_name>は、NetworkManager、dnsconfd、またはunboundに置き換えます。