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サーバーを立てる方がずっと良いです。