2021-03-01に更新

【CentOS7】DHCPで取得したDNSサーバのアドレスを一時的に消そうとして少しハマった話

やりたかったこと

とある検証のため、CentOS7マシンで一時的に「DNSの名前解決ができない」状況を作ろうとしました。

動作確認済み環境

  • CentOS 7.6

試したこと

単純にDNSサーバの設定を一時的に消せばいいのかなと考え、特に下調べもせずにnmcliコマンドを使って「DHCPサーバから取得している、DNSサーバのアドレスを消す」ことをすればいいのかと思ったら、うまくいきませんでした。
とりあえず、「/etc/resolv.conf」を直接いじることで、やりたかったことは実現できました

  • 設定変更前の状態
[root@centos7 ~]# nmcli d show | grep DNS
IP4.DNS[1]:                             1.1.1.1
IP4.DNS[2]:                             8.8.8.8
  • DHCPサーバから取得したDNSサーバのアドレスを設定しないようにして、ネットワークを再起動
[root@centos7 ~]# nmcli connection modify ens160 ipv4.ignore-auto-dns yes
[root@centos7 ~]# systemctl restart network
  • 設定変更後の状態
[root@centos7 ~]# nmcli d show | grep DNS
[root@centos7 ~]#

お、DNSサーバのアドレスが消えた!

  • 名前解決のテスト
[root@centos7 ~]# host yahoo.co.jp
yahoo.co.jp has address 183.79.135.206
yahoo.co.jp has address 182.22.59.229

あれれ、DNSサーバのアドレスが消えたけど何故か名前解決できてる??

  • /etc/resolv.confを確認してみる
[root@centos7 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search hoge.test
nameserver 1.1.1.1
nameserver 8.8.8.8

んんー、消えてないじゃん。。。
挙動について調べてませんが、/etc/resolv.confに既にDNSサーバのアドレスが書かれていても、nmcliさんは消してくれない模様

やりたかったことの解決策

  • sed使って/etc/resolv.confを直接編集
[root@centos7 ~]# sed -i '/^nameserver/d' /etc/resolv.conf

とりあえず調べる気力もなかったのでnmcliは一旦諦めてこの方法にしてます
sedした直後から、名前解決ができなくなります。
個人的には、直接設定ファイルを弄りたくはないんですけど...
ヒマができたら、nmcliでやる方法を調べてみようと思います。

  • 元に戻す(DNSサーバから取得したアドレスを設定する)場合はこれ
[root@centos7 ~]# systemctl restart network
ツイッターでシェア
みんなに共有、忘れないようにメモ

arohajiro

しがない元インフラエンジニアです

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント