[技術]resolv.confが勝手に書き換わる問題

さくらインターネットからレンタルしているサーバ(VPS)で
ワードプレスを構築し、このブログを書いています。

突然外部のサーバにアクセスできなかったり、プラグインの
検索や更新ができなくなったりして若干はまったので
その対応の備忘録。

同様の現象が起きた方、参考にしていただければと。
※現象が発生したOSは CentOS 6 でした。

結論は /etc/resolv.conf の内容が勝手に書き換わって
いたため、DNS(Domain Name Server)へアクセスできず
名前解決できなくなっていたからでした。
どのDNSへアクセスするかを制御しているのが resolv.conf となります。

名前解決とは、ドメイン(goole.comやyahoo.co.jpなど)から
IPアドレス(192.168.XXX.XXX 的な数字)を割り出すことをいいます。
ネットワークの世界ではこの数字を元に、URLのアクセスを行います。
(ざっくりいうと)


発生したエラー内容は以下。(正確な文言はメモしてませんでした)

「プラグインの検索ができませんでした。サーバ上の設定に問題が
あると思われるので、ホスティング会社に問い合わせしてみてください」

早速、さくらインターネットに問い合わせ。
回答は、VPSなので詳細調査はできないが
・resolv.conf を書き換えることはしない。
・NetworkManagerデーモンが起動していれば勝手に
 書き換わる可能性があるので確認してみてください

とのこと。結局自分で調べることに(泣)
Name or service not known というメッセージもでていたので
NetworkManagerデーモン含め、DNS周りからの調査。

まずはNetworkManagerデーモン起動チェック

chkconfig --list NetworkManager
NetworkManager  0:off   1:off   2:off   3:on    4:on    5:off   6:off

3:on 4:on の設定・・・起動している。。。
なので、停止を実行

chkconfig NetworkManager off
NetworkManager  0:off   1:off   2:off   3:off   4:off    5:off   6:off

次にresolv.confの確認

vi /etc/resolv.conf
# Generated by NetworkManager
search com

# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com

DNS1、DNS2、DOMAINの設定がない!!

resov.conf の設定はファイルを更新してもネットワークを
再起動すればもとに戻ってしまうので、このファイルを
生成するスクリプトファイルを修正

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"                                                           
IPADDR="XXX.XXX.XXX.XXX"
NETMASK="XXX.XXX.XXX.XXX"
GATEWAY="XXX.XXX.XXX.XXX"
ONBOOT="yes"
TYPE="Ethernet"
IPV6INIT="yes"
IPV6_ROUTER="no"
IPV6ADDR="XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX/64"
DOMAIN="XXXXXXXX"
DNS1="XXX.XXX.XXX.XXX"
DNS2="XXX.XXX.XXX.XXX"

DOMAINに借りているサーバに設定しているドメイン
DNS1、DNS2は使用するDNSサーバのIPアドレス
をそれぞれ入力。
私の場合、さくらインターネットのDNSのIPアドレスを入力。

設定反映のため、ネットワーク(eth0)を再起動
※環境によって、ネットワークは異なります(eth1、eth2など)

service network restart

resolv.conf の再確認

vi /etc/resolv.conf
# Generated by NetworkManager                                           
search hlis-toproad.com com
nameserver XXX.XXX.XXX.XXX
nameserver XXX.XXX.XXX.XXX

searchには検索するドメイン
nameserverには上で設定したDNS1/DNS2のIPアドレスが
表示されていれば設定完了。

無事、プラグインの検索/更新と
外部サーバへのアクセスができました。

○参考記事
http://easyramble.com/ping-test-and-delete-networkmanager.html
http://demosite.jpaccess.net/wiki/index.php?Vine5%2Fresolv.conf%A4%C8ifcfg-eth0