リゾルバ固定化について

CentOS 7 では、nmcli コマンドでリゾルバ設定を行うと NetworkManager によって /etc/resolv.conf に自動的に設定が反映されるようになっています。

もし nmcli コマンドでリゾルバ設定をした後 /etc/resolv.conf を直接修正した場合、修正内容は反映されますが、ネットワークサービスを再起動すると NetworkManager によって NIC に設定されているリゾルバ設定で上書きされてしまいます。

場合によっては、このような動きは紛らわしいので、従来通りに手動で /etc/resolv.conf を直接修正するやり方でリゾルバ設定がしたいという要望もあるかと思います。

今回は、NetworkManager によって自動生成されるリゾルバ設定を無効にし、リゾルバ設定を従来の通りに /etc/resolv.conf を直接修正して使えるようにする方法についてご紹介します。

  変更前 変更後
設定方法 NetworkManager /etc/resolv.conf
ネームサーバ 1 100.100.100.100 100.100.100.100
ネームサーバ 2 100.100.200.100 100.100.200.100

Step 1. 現在の設定確認

現在の設定は以下のように NIC ens160 に DNS 設定が入っている状態です。

NIC 設定確認
# nmcli d show
GENERAL.デバイス:                       ens160
GENERAL.タイプ:                         ethernet
GENERAL.ハードウェアアドレス:           00:50:56:95:91:EE
GENERAL.MTU:                            1500
GENERAL.状態:                           100 (接続済み)
GENERAL.接続:                           ens160
GENERAL.CON パス:                       /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.キャリア:              オン
IP4.アドレス[1]:                        10.10.10.2/24
IP4.ゲートウェイ:                       10.10.10.1
IP4.DNS[1]:                             100.100.100.100
IP4.DNS[2]:                             100.100.200.100
IP6.ゲートウェイ:

GENERAL.デバイス:                       lo
GENERAL.タイプ:                         loopback
GENERAL.ハードウェアアドレス:           00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.状態:                           10 (管理無し)
GENERAL.接続:                           --
GENERAL.CON パス:                       --
IP4.アドレス[1]:                        127.0.0.1/8
IP4.ゲートウェイ:
IP6.ゲートウェイ:

Step 2. リゾルバ固定化設定

NetworkManager によって /etc/resolv.conf 設定が上書きされないようにするためには、以下のように NetworkManager.confdns=none を追記し、NetworkManager サービスを再起動します。

/etc/NetworkManager/NetworkManager.confRaw Code(S)Raw Code(T)
[main]
plugins=ifcfg-rh
dns=none    #### 追加
# systemctl restart NetworkManager

Step 3. リゾルバ設定

後は、従来通りに /etc/resolv.conf にネームサーバを設定します。

また、ネットワークサービスを再起動しても NetworkManager によってリゾルバ設定が上書きされず、そのまま残っていることを確認します。

ネットワークサービスを再起動する前に NIC に設定されている既存の DNS 設定をクリアしてください。

/etc/resolv.confRaw Code(S)Raw Code(T)
search my-company.com
nameserver 100.100.100.100
nameserver 100.100.200.100
ネットワーク再起動Raw Code(S)Raw Code(T)
# nmcli c mod ens160 ipv4.dns ""

# systemctl restart network
リゾルバ固定化確認Raw Code(S)Raw Code(T)
# cat /etc/resolv.conf
search my-company.com
nameserver 100.100.100.100
nameserver 100.100.200.100

終わりに

ネットワークサービス再起動後にも上記のように /etc/resolv.conf にリゾルバ設定がそのまま残っていれば大丈夫です。

以上、CentOS 7 リゾルバ固定化 でした。