📖

【Linux】「/etc/resolv.conf」が更新できない場合の対応

2021/03/27に公開

はじめに

今回は、/etc/resolv.confが更新できない場合の対応についてアウトプットしたいと思います。

今回の環境の構成図

  • ネットワーク図

  • 物理構成図

使用しているOS等

項目 説明
PC(ホストOS) MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
仮想化ソフト VirtualBox 6.1.18
ゲストOS CentOS Linux release 7.5.1804 (Core)
確認結果
[root@worker1 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@worker1 ~]#

事象

/etc/resolv.confの更新を実施するが、networkサービスを再起動すると元の設定に戻ってしまう。

事象再現

  • 事前に/etc/resolv.confを確認する。
コマンド
cat /etc/resolv.conf

実行例)

実行例
[root@worker1 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.100.1
[root@worker1 ~]#

nameserver 192.168.100.1はDHCPサーバーから自動で引っ張ってくるDNSサーバーになります。

  • /etc/resolv.confの設定を変更する。

GoogleのDNSサーバ(8.8.8.8/8.8.4.4)を設定する。

コマンド
vi /etc/resolv.conf

ファイル内容変更

変更前)

変更前
# Generated by NetworkManager
nameserver 192.168.100.1

変更後)

変更後
nameserver 8.8.8.8
nameserver 8.8.4.4
  • networkサービスを再起動する。
コマンド
systemctl restart network
  • /etc/resolv.confの内容が元に戻っていることを確認する。
コマンド
cat /etc/resolv.conf

実行例)

実行例
[root@worker1 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.100.1
[root@worker1 ~]#

対策

①NetworkManagerを停止/自動起動停止する。
②インターネットに接続している方のNIC(NAT)の設定に以下を追加する。

PEERDNS=no

対処手順

  • NetworkManager停止/自動起動停止

○設定

NetworkManger停止
systemctl stop NetworkManager
NetworkManger自動起動停止
systemctl disable NetworkManager

○確認

NetworkManger停止確認
systemctl stop NetworkManager

→ステータスが「inactive (dead)」であることを確認。

NetworkManger自動起動停止確認
systemctl is-enabled NetworkManager

→結果が「disabled」であることを確認。

  • /etc/sysconfig/network-scripts/ifcfg-ens0s3PEERDNS=noを追加
コマンド
vi /etc/sysconfig/network-scripts/ifcfg-ens0s3

編集前)

編集前
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="f3293731-ece8-4e5e-a9f8-1aa68f5b14ab"
DEVICE="enp0s3"
ONBOOT="yes"

編集後)

編集後
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="f3293731-ece8-4e5e-a9f8-1aa68f5b14ab"
DEVICE="enp0s3"
ONBOOT="yes"
PEERDNS="no"
  • /etc/resolv.confの設定を変更する。

GoogleのDNSサーバ(8.8.8.8/8.8.4.4)を設定する。

コマンド
vi /etc/resolv.conf

ファイル内容変更

変更前)

変更前
# Generated by NetworkManager
nameserver 192.168.100.1

変更後)

変更後
nameserver 8.8.8.8
nameserver 8.8.4.4
  • networkサービスを再起動する。
コマンド
systemctl restart network
  • /etc/resolv.confの内容がそのままであることを確認する。
コマンド
cat /etc/resolv.conf

実行例)

実行例
[root@worker1 ~]# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
[root@worker1 ~]#

参考記事

resolv.confが上書きされる事象について(CentOSの場合)

Discussion