NetworkManager の nmcli コマンドで、DHCPにより設定されたDNSサーバを削除できないため、参照先のDNSサーバを変更できない場合があります。これはコマンドを1行打てば回避できます。ついでに NetworkManager が /etc/resolv.conf を書換える挙動を少し調べてみましたので、メモしておきました。
対応方法
まず対応方法から、DHCPでのDNSサーバ設定を無効にして、新たなDNSサーバを設定するのみです。※NetworkManager の再起動を忘れずに!
nmcli con mod enp0s3 ipv4.dns 8.8.8.8
systemctl restart NetworkManager
nmcli コマンドで DNSサーバを削除できない!
CentOS をインストールした場合、デフォルトのネットワーク設定では、DHCPを参照するようになっています。
この場合、インターフェースを有効にしたタイミングで、DHCPから取得した DNSサーバのIPアドレスが /etc/resolv.conf に設定されます。
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1 ← DHCPにより設定されたDNSサーバ
この状態で、新たなDNSサーバを設定しても、DHCPにより設定されたDNSサーバは残ってしまい、しかも設定が上にあるため、この残ったDNSサーバが優先されて使われます。
systemctl restart NetworkManager
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1 ←設定が残り、この設定が優先される
nameserver 8.8.8.8
さらに困ったことに、DHCPにより設定されたDNSサーバを削除しようとすると、エラーが発生して削除することができません。
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サーバ設定を無視します→「いいえ」)
(略)
ipv4.ignore-auto-dns: no
そこで、DHCPでのDNSサーバ設定を無効にします。
NetworkManager を再起動します。
無事に、DHCPにより設定されたDNSサーバが削除され、参照先のDNSサーバを変更できました。(^^)
# Generated by NetworkManager
nameserver 8.8.8.8
終わりに
以前は NetworkManager を無効にして、ifcfg ファイルを直接書き換えていましたが(^^;) 最近のCentOSでは、ネットワーク関連の設定を変更する場合、NetworkManager の nmcli または nmtui コマンドを使うことが推奨されているようです。
コメント
[…] nmcli コマンドで DNSサーバを変更できない時の対応方法(CentOS7) | あぱーブログ […]
設定していないはずのDNS設定が1つ消えなくて涙目でした。
凄く助かりました!
感謝です!!
>匿名さん
コメントありがとうございます。
この記事がお役にたったみたいでよかったです!