resolv.confが勝手に書き換わる件に対応した

Posted on

元々gatewayに設定しているルータをそのままDNSサーバとして指定していたが、ルータを書い変えてからしばしば名前解決が出来なくなる事象が起きていた。仕方なくGoogleのDNSを設定したときの備忘録。

環境

$ uname -r
5.7.9-arch1-1
$ nmcli -v
nmcli tool, version 1.26.0-1

やったこと

まず適当に ping 8.8.8.8 とかやって通ることを確認し、 drill google.com はIPが帰ってこないことを確認した。ここで /etc/resolv.conf の状態は以下の通り。

# Generated by resolvconf
nameserver 192.168.11.1

resolvconfが自動生成しているっぽいことが分かったが、とりあえず手動で以下のように書き換えて通るかどうかを確認した。

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
nameserver 8.8.8.8
nameserver 8.8.4.4

これで問題なく名前解決に成功したため /etc/resolv.conf を編集出来れば大丈夫だと判断した。 しかし案の定マシンを再起動すると初期の状態に戻ってしまうため resolvconf について調べてみたところ、 /etc/resolv.conf を設定するためのヘルパーであることが分かった。

最終的にArchWikiに従って /etc/resolvconf.conf に以下を追記し、 resolvconf -u して意図通りの /etc/resolv.conf が生成されることを確認した。

name_servers="2001:4860:4860::8888 2001:4860:4860::8844 8.8.8.8 8.8.4.4"

またNetworkManagerを使っているので、これも書き換えを制御するように /etc/NetworkManager/NetworkManager.conf に以下を追記しておいた。

[main]
dns=none

ここまでやって再起動後の /etc/resolv.conf は以下の状態となり、当初のルータ不調に対応することが出来た。

# Generated by resolvconf
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 192.168.11.1