UbuntuとDebianで永続的なDNSネームサーバーを設定する方法


/etc/resolv.confは、DNSネームリゾルバーライブラリのメイン構成ファイルです。リゾルバーは、インターネットドメインネームシステム(DNS)へのアクセスを提供するCライブラリの関数のセットです。これらの関数は、/ etc/hostsファイルまたは複数のDNSネームサーバーのエントリをチェックするように、またはネットワーク情報サービス(NIS)のホストのデータベースを使用するように構成されています。

systemd(システムおよびサービスマネージャー)を使用する最新のLinuxシステムでは、DNSまたは名前解決サービスがsystemd-resolvedサービスを介してローカルアプリケーションに提供されます。デフォルトでは、このサービスにはドメイン名解決を処理するための4つの異なるモードがあり、デフォルトの操作モードでsystemd DNSスタブファイル(/run/systemd/resolve/stub-resolv.conf)を使用します。

DNSスタブファイルには、唯一のDNSサーバーとしてローカルスタブ127.0.0.53が含まれており、システムで使用されるネームサーバーを追加するために使用された/etc/resolv.confファイルにリダイレクトされます。

/etc/resolv.confで次のlsコマンドを実行すると、このファイルが/run/systemd/resolve/stub-resolv.confファイルへのシンボリックリンクであることがわかります。

$ ls -l /etc/resolv.conf

lrwxrwxrwx 1 root root 39 Feb 15  2019 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

残念ながら、/ etc /resolv.confはsystemd-resolvedサービスによって間接的に管理され、場合によってはネットワークサービスによって(initscriptsまたはNetworkManagerを使用して)管理されるため、ユーザーが手動で行った変更を永続的に保存することはできません。しばらく続きます。

この記事では、resolvconfプログラムをインストールして使用し、DebianおよびUbuntuLinuxディストリビューションの/etc/resolv.confファイルに永続的なDNSネームサーバーを設定する方法を示します。

/etc/resolv.confファイルを編集する理由

主な理由は、システムのDNS設定が正しく構成されていないか、特定のネームサーバーまたは独自のネームサーバーを使用することを好むためである可能性があります。次のcatコマンドは、Ubuntuシステムの/etc/resolv.confファイルにあるデフォルトのネームサーバーを示しています。

$ cat /etc/resolv.conf

この場合、APTパッケージマネージャーなどのローカルアプリケーションがローカルネットワーク上のFQDN(完全修飾ドメイン名)にアクセスしようとすると、次のスクリーンショットに示すように、「名前解決の一時的な失敗」エラーが発生します。

pingコマンドを実行したときにも同じことが起こります。

$ ping google.com

そのため、ユーザーがネームサーバーを手動で設定しようとすると、変更が長く続くことはなく、再起動後に取り消されます。これを解決するには、reolvconfユーティリティをインストールして使用し、変更を永続的にします。

次のセクションに示すようにresolvconfパッケージをインストールするには、まず/etc/resolv.confファイルに次のネームサーバーを手動で設定して、インターネット上のUbuntuリポジトリサーバーのFQDMにアクセスできるようにする必要があります。

nameserver 8.8.4.4
nameserver 8.8.8.8

UbuntuとDebianにresolvconfをインストールする

まず、システムソフトウェアパッケージを更新してから、次のコマンドを実行して、公式リポジトリからresolvconfをインストールします。

$ sudo apt update
$ sudo apt install resolvconf

resolvconfのインストールが完了すると、systemdはresolvconf.serviceをトリガーして自動的に開始し、有効にします。稼働しているかどうかを確認するには、次のコマンドを発行します。

$ sudo systemctl status resolvconf.service

何らかの理由でサービスが自動的に開始および有効化されない場合は、次の方法でサービスを開始および有効化できます。

$ sudo systemctl start resolvconf.service
$ sudo systemctl enable resolvconf.service
$ sudo systemctl status resolvconf.service

次に、/ etc/resolveconf/resolve.conf.d/head構成ファイルを開きます。

$ sudo nano /etc/resolvconf/resolv.conf.d/head

その中に次の行を追加します。

nameserver 8.8.8.8 
nameserver 8.8.4.4

変更を保存してresolvconf.serviceを再起動するか、システムを再起動します。

$ sudo systemctl start resolvconf.service

/etc/resolv.confファイルを確認すると、ネームサーバーのエントリが永続的に保存されているはずです。今後は、システムでの名前解決に関する問題に直面することはありません。

この簡単な記事が、UbuntuおよびDebianシステムで永続的なDNSネームサーバーを設定するのに役立つことを願っています。ご質問やご提案がございましたら、下のコメントセクションでお知らせください。