nmcli コマンドで DNSサーバを変更できない時の対応方法(CentOS7)

nmcli コマンドで DNSサーバを変更できない時の対応方法(CentOS7)
あぱーブログ
2015年8月15日  カテゴリー:Linux  タグ: ,
Pocket
LINEで送る

NetworkManager の nmcli コマンドで、DHCPにより設定されたDNSサーバを削除できないため、参照先のDNSサーバを変更できない場合があります。これはコマンドを1行打てば回避できます。ついでに NetworkManager が /etc/resolv.conf を書換える挙動を少し調べてみましたので、メモしておきました。

対応方法

まず対応方法から、DHCPでのDNSサーバ設定を無効にして、新たなDNSサーバを設定するのみです。※NetworkManager の再起動を忘れずに!

nmcli con mod enp0s3 ipv4.ignore-auto-dns yes
nmcli con mod enp0s3 ipv4.dns 8.8.8.8
systemctl restart NetworkManager

nmcli コマンドで DNSサーバを削除できない!

CentOS をインストールした場合、デフォルトのネットワーク設定では、DHCPを参照するようになっています。

この場合、インターフェースを有効にしたタイミングで、DHCPから取得した DNSサーバのIPアドレスが /etc/resolv.conf に設定されます。

nmcli con mod enp0s3 connection.autoconnect yes
 
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1 ← DHCPにより設定されたDNSサーバ

この状態で、新たなDNSサーバを設定しても、DHCPにより設定されたDNSサーバは残ってしまい、しかも設定が上にあるため、この残ったDNSサーバが優先されて使われます。

nmcli con mod enp0s3 ipv4.dns 8.8.8.8
systemctl restart NetworkManager
 
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1 ←設定が残り、この設定が優先される
nameserver 8.8.8.8

さらに困ったことに、DHCPにより設定されたDNSサーバを削除しようとすると、エラーが発生して削除することができません。

nmcli con mod enp0s3 -ipv4.dns 192.168.1.1
 
Error: failed to remove a value from ipv4.dns: the property doesn't contain DNS server '192.168.1.1'.

DHCPでのDNSサーバ設定を無効にする

インターフェースの設定を確認すると、DHCPによりDNSサーバを設定するようになっています。(設定の意味的には、DHCPでのDNSサーバ設定を無視します→「いいえ」)

nmcli con show enp0s3
(略)
ipv4.ignore-auto-dns: no

そこで、DHCPでのDNSサーバ設定を無効にします。

nmcli con mod enp0s3 ipv4.ignore-auto-dns yes

NetworkManager を再起動します。

systemctl restart NetworkManager

無事に、DHCPにより設定されたDNSサーバが削除され、参照先のDNSサーバを変更できました。(^^)

cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8

終わりに

以前は NetworkManager を無効にして、ifcfg ファイルを直接書き換えていましたが(^^;) 最近のCentOSでは、ネットワーク関連の設定を変更する場合、NetworkManager の nmcli または nmtui コマンドを使うことが推奨されているようです。

スポンサーリンク
Pocket
LINEで送る

nmcli コマンドで DNSサーバを変更できない時の対応方法(CentOS7)」への1件のフィードバック

  1. ピンバック: NetworkManager 備忘録

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です