bouzuya.hatenablog.com

ぼうずやのにっき

resolvconfを使う

いつからそうなっていたのかは分からないのだけれど、/etc/resolv.confシンボリックリンクになっていた。Ubuntu 12.04 LTSにバージョンアップしたときに変わったのかもしれない。編集しようと開くとコメントにこんなことが書いてある。

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

resolvconf(8)によって生成されるファイルだから手で編集するんじゃねーぞ」とそんな感じの内容である。

man 8 resolvconfしてみると、resolvconfを使えば/etc/network/interfacesdns-nameservers ...とかdns-searchとか書けて、/etc/resolv.confを自動更新してくれるらしい。

以前から設定ファイルが散っていて編集がわずらわしかったのでresolvconfを使うことにした。

注意しないといけない点がふたつある。

ひとつめはNetworkManagerが有効になっていると、そちらの設定をいっしょに/etc/resolv.confに追記してしまう。たとえば/etc/network/interfacesにはdns-nameservers 192.168.1.3と書いていても、/etc/resolv.confnameserver 127.0.0.1などと記録されたりする。

対策としてNetworkManagerを止めて、それについての設定を削除した。NetworkManagerは止めるとGUIでの設定ができなくなるので注意が要る。

$ sudo service network-manager stop
$ sudo resolvconf -d NetworkManager

ちなみにresolvconfの設定類は/etc/resolvconf/*とか/run/resolvconf/*あたりに保存される。

ふたつめはifdownifupコマンドを実行しないと/etc/resolv.confに反映されないということ。/etc/network/interfacesに追記して、すぐに/etc/resolv.confを開いても反映されていない。ifdownifupでインタフェースを再起動すると、そのタイミングで反映される。

$ sudo ifdown eth0
$ sudo ifup eth0

英語が読めないのでよく分からないけど、すぐに反映もできそうなんだけどなあ。めんどうなので現状に妥協する。

22 min.