Ubuntu環境でローカルDNSサーバーや特定のDNSサーバーを設定しようとすると、/etc/resolv.conf ファイルを直接編集しても変更が反映されなかったり、再起動後に元に戻ってしまったりする問題に直面することがあります。これは、systemd-resolved サービスがDNS設定を管理しているためです。
systemd-resolved が管理している環境でDNSサーバーを設定するには、いくつかの方法があります。
1. /etc/resolv.conf のシンボリックリンクを解除し、直接編集する
最も直接的な方法ですが、systemd-resolved の管理から外れるため、注意が必要です。
まず、/etc/resolv.conf が systemd-resolved によって管理されているシンボリックリンクであることを確認します。
| |
シンボリックリンクを解除し、新しいファイルを作成します。
| |
nano エディタでファイルが開かれるので、以下のようにDNSサーバーのIPアドレスを記述します。
| |
ファイルを保存してエディタを終了します。
2. netplan を使用してDNSサーバーを設定する(推奨)
Ubuntu 18.04 LTS以降では、ネットワーク設定の管理に netplan が推奨されています。netplan を使用すると、YAML形式の設定ファイルでネットワークインターフェースやDNSサーバーなどを一元的に管理できます。
netplan の設定ファイルは通常 /etc/netplan/ ディレクトリにあります(例: 01-network-manager-all.yaml や 50-cloud-init.yaml)。既存のファイルを編集するか、新しいファイルを作成します。
| |
ファイルの内容を以下のように記述します。ethernets の下のインターフェース名(例: enp0s3 や eth0)は、ご自身の環境に合わせて変更してください。
| |
設定ファイルを保存したら、以下のコマンドで設定を適用します。
| |
これにより、systemd-resolved が netplan の設定を読み込み、DNSサーバーが正しく設定されます。
3. systemd-resolved の設定ファイルを編集する
systemd-resolved の設定ファイル /etc/systemd/resolved.conf を編集する方法もあります。
| |
以下の行のコメントを解除し、設定したいDNSサーバーのIPアドレスを記述します。
| |
変更を保存したら、systemd-resolved サービスを再起動します。
| |
これらの方法のいずれかを使用することで、Ubuntu環境でローカルDNSサーバーを適切に設定することができます。通常は netplan を使用する方法が推奨されます。