title_blog2.gif

Home
'07.12.03 OpenVZ VEのDNS参照 プリント

LINUXの場合、名前解決のために使うサーバー名(IP)を /etc/resolv.conf に書かれたDNSを順次探すことになっている。
/etc/resolv.confの変更時は特にネットワーク系のリフレッシュも必要なく、直接このファイルを書き換えるだけで、検索するDNSを変更できるわけだが、OpenVZのバーチャルサーバーは事が違うようだ。

バーチャルサーバーの中にも/etc/resolv.conf はあるが、VEの場合は/etc/resolv.conf を直接編集しても、全く反応してくれないのである。
バーチャルサーバーの場合は、「vzctl set」コマンドでnameserverを登録するか、/etc/vz/conf/xxxx.confの「NAMESERVER=」部分を直接編集するかして、その後VEを再起動する必要がある。

再起動すると

# vzctl set 101 nameserver xxx.xxx.xxx.xxx
# vzctl restart 101
Restarting VE
Stopping VE ...
VE was stopped
VE is unmounted
Starting VE ...
VE is mounted
Adding IP address(es): xxx.xxx.xxx.xxx
Setting CPU units: 1000
Set hostname: xxx
File resolv.conf was modified
VE start in progress...



「File resolv.conf was modified」といった VEの /etc/resolv.conf が書き換えられたというメッセージが出ている。


先日、社のグローバルIPを変更した際、VEの /etc/resolv.conf をすべて手で変更したのであるが、VEのネットワークはvenetインタフェースにてコントロールされているため、VE内の個別の設定はどうも無視されて しまい、一時的に名前解決が遅延する現象が起きてしまった。
これは、VEの /etc/resolv.conf であっても、名前解決のたびにresolv.confを参照するものだとばかり思い込んでわけで、「下手な思い込みはミスを誘ってしまうなぁ」と改めて反省させられた。

ただ、/etc/vz/conf/xxxx.conf にNAMESERVEの情報を設定しなかった場合は、VEのリブート時にも、 /etc/resolv.conf を上書きすることがないので、もしかすることこの場合は、VE内の /etc/resolv.conf を直接参照するのかもしれない。 定かではないので、後日確かめてみることとしよう。