resolv.confが更新される
当然なのですが、IP情報をDHCPサーバから貰っちゃうと「/etc/resolve.conf」のDNSサーバ情報が勝手に更新されてしまいます。通常はそれで問題ないのですが、DNSサーバは自分で決めたものを使いたいという場合の方法です。
私の場合は、複数のNICがついたサーバで、DHCPでIP貰うNICと、固定でIP設定をしているNICが混在している場合などに設定しています。(この設定を追加するのを忘れてサービス止めたこともありました・・・)
resolv.confを更新させないためには
dhcpクライアント側のNIC設定ファイルに少し設定を追加・変更することで、「/etc/resolv.conf」のDNSサーバ情報が更新されなくなります。
今回は設定ファイルを編集する方法と、CentOS7からですが、「nmcli」コマンドを使用することでも設定を変更出来るので、その2通りの設定方法をまとめました。
NICの設定ファイルを編集する方法
設定ファイルについて
まず、NICの設定ファイルについてですが、CentOS6までとCentOS7からはファイル名が若干変わっています。
- CentOS6までは「/etc/sysconfig/network-scripts/ifcfg-ethx」(xの部分はNICにより異なります。)
- CentOS7からは「/etc/sysconfig/network-scripts/ifcfg-NIC名」
ちなみに私のCentOS7の環境では、こんなファイル名でした。
「/etc/sysconfig/network-scripts/ifcfg-eno33554984」
設定項目
DHCPでIP情報を貰う際に、「resolv.conf」のDNSサーバ情報を更新されない用にするには、以下の設定をNICの設定ファイルに行います。
PEERDNS=no
※PEERDNS=yesとなっている場合はPEERDNS=noに変更します。
設定反映
ネットワークサービスの再起動を行うことで設定が反映されます。
ただし、「resolv.conf」の「namaserver」の内容がすでにDHCPにより更新されている場合は、自分が使用したいDNSサーバに設定を変更してから、ネットワークサービスを再起動してください。
CentOS6までの方法
# service network restart
CentOS7からの方法
# systemctl restart network
動作確認
ネットワークサービスの再起動後「resolve.conf」を確認しDHCPによって「nameserve」の部分が更新されていないかを確認します。(可能ならば、サーバの再起動試験も行ったほうが安心だと思います。)
(おまけ)DHCPサーバからDNSサーバ情報を貰いたい場合
「PEERDNS=no」から「PEERDNS=yes」に設定を変更し、ネットワークサービスを再起動することで、DHCPからDNSサーバの情報を得ることができるようになり、「/etc/resolv.conf」が自動的に更新されるようになります。
CentOS7でnmcliコマンドを使用する方法
CentOS7でNetworkManagerの「nmcli」コマンドを使用し設定する場合は、以下のようなコマンドで設定できます。
nmcliコマンド書式
nmcli c modify [nic名] ipv4.ingore-auto-dns "yes"nmcli c modify [nic名] ipv4.ignore-auto-dns "yes"
※2015.10.22 コマンドに間違いがありましたので修正しました。
私のCentOS7環境では、DNCPでIP情報を貰うNIC名が「eno33554984」だったので、以下のようなコマンドを実行することとなりました。
# nmcli c modify eno33554984 ipv4.ignore-auto-dns "yes"
このコマンドを実行することで、NICの設定ファイルに「PEERDNS=no」が設定されます。
設定反映
ネットワークサービスの再起動を行うことで、設定を反映させることが出来ます。
「/etc/resolve.conf」の「nameserver」がDCHPによってすでに更新されている場合は、ネットワークサービスを再起動する前に、「nameserver」使いたいDNSサーバへ変更してから、ネットワークサービスを再起動します。
# systemctl restart network
動作確認
ネットワークサービスの再起動後「resolve.conf」を確認しDHCPによって「nameserve」の部分が更新されていないかを確認します。
(おまけ)DHCPサーバからDNSサーバ情報を貰いたい場合
下記のコマンドでNICの設定ファイルに「PEERDNS=yes」が設定されるので、コマンド実行後ネットワークサービスを再起動します。
nmcliコマンド書式
# nmcli c modify [nic名] ipv4.ignore-auto-dns "no"
私の環境であれば、このように実行しました。
# nmcli c modify eno33554984 ipv4.ignore-auto-dns "no" # systemctl restart network
以上です。
コメント
いつも有益な情報ありがとうございます。
一箇所 typo がありましたのでお知らせします。
s/ingore-auto-dns/ignore-auto-dns/
Michi HOTTA さん
typoのご指摘ありがとうございます。
該当箇所を修正させて頂きました。
これからも、よろしくお願いいたします。