2012-06-04 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/interfacesにdns-nameservers ...とかdns-searchとか書けて、/etc/resolv.confを自動更新してくれるらしい。
以前から設定ファイルが散っていて編集がわずらわしかったのでresolvconfを使うことにした。
注意しないといけない点がふたつある。
ひとつめはNetworkManagerが有効になっていると、そちらの設定をいっしょに/etc/resolv.confに追記してしまう。たとえば/etc/network/interfacesにはdns-nameservers 192.168.1.3と書いていても、/etc/resolv.confにnameserver 127.0.0.1などと記録されたりする。
対策としてNetworkManagerを止めて、それについての設定を削除した。NetworkManagerは止めるとGUIでの設定ができなくなるので注意が要る。
$ sudo service network-manager stop
$ sudo resolvconf -d NetworkManager
ちなみにresolvconfの設定類は/etc/resolvconf/*とか/run/resolvconf/*あたりに保存される。
ふたつめはifdownやifupコマンドを実行しないと/etc/resolv.confに反映されないということ。/etc/network/interfacesに追記して、すぐに/etc/resolv.confを開いても反映されていない。ifdownやifupでインタフェースを再起動すると、そのタイミングで反映される。
$ sudo ifdown eth0
$ sudo ifup eth0
英語が読めないのでよく分からないけど、すぐに反映もできそうなんだけどなあ。めんどうなので現状に妥協する。
22 min.
DHCPサーバーを立てる方がずっと良いです。