LoginSignup
1
1

定時帰る術-DNS設定が有効にならないけど、なぜ

Last updated at Posted at 2024-01-23

最近、まだ面白いことが発見したので、投稿させてもらう。
記事タイトルの通り、「/etc/resolv.conf」をいじっても、OSが再起動されたら、設定が戻ってしまうことが分かった。
早速見てみよう

作業流れ

ご覧の通り、「vi」で「/etc/resolv.conf」の中身を変更して、OSを再起動したら、「/etc/resolv.conf」の設定が元に戻った

[root@rasp ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]# cp -pv /etc/resolv.conf /etc/resolv.conf_0123
'/etc/resolv.conf' -> '/etc/resolv.conf_0123'
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]# ll /etc/resolv.conf*
-rw-r--r-- 1 root root 53  6月 22  2018 /etc/resolv.conf
-rw-r--r-- 1 root root 53  6月 22  2018 /etc/resolv.conf_0123
[root@rasp ~]# vi /etc/resolv.conf
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]# reboot
Last login: Tue Jan 23 07:09:54 2024 from 192.168.1.67
[root@rasp ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.
[root@rasp ~]#

犯人さがす

「/etc/resolv.conf」に「# Generated by NetworkManager」が記載されているのが気になって、「NetworkManager」経由での変更する方法を調べてみました。
「nmcli」で変更できるなんて知らなかった。

やってみよう

「nmcli」でやってみると、うまくいけた。

[root@rasp ~]# nmcli c mod eth0 ipv4.dns 8.8.8.8
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]# nmcli c u eth0
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
Last login: Tue Jan 23 07:16:56 2024 from 192.168.1.67
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8

原因(推測)

①デフォルトの場合は、「/etc/resolv.conf」が「NetworkManager」より管理されている
②「nmcli c mod eth0 ipv4.dns 8.8.8.8」で実行することで、「/run/NetworkManager/resolv.conf」が更新される。
③「nmcli c u eth0」で、「cp -p /run/NetworkManager/resolv.conf /etc/resolv.conf」のような処理が実行される

「vi」で変更した対応方法

「/etc/resolv.conf」を「NetworkManager」の管理から外す

「/run/NetworkManager/resolv.con」が更新されたが、「/etc/resolv.conf」が更新されないことがかくにんできたので、「原因(推測)」の「③」があっているきがする。
この状態で、「vi」で「/etc/resolv.conf」を変更すれば、「原因(推測)」の「③」が実行されないので、OSが再起動されても、「vi」での設定がそのままになる。

[root@rasp ~]# vi /etc/NetworkManager/conf.d/90-dns-none.conf
[root@rasp ~]# cat /etc/NetworkManager/conf.d/90-dns-none.conf
[main]
dns=none
[root@rasp ~]# systemctl reload NetworkManager
[root@rasp ~]#
[root@rasp ~]# NetworkManager --print-config | grep dns | grep -v "#"
dns=none
[root@rasp ~]#
[root@rasp ~]#  nmcli c mod eth0 ipv4.dns 1.1.1.1
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]# nmcli c u eth0
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@rasp ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]# cat /run/NetworkManager/resolv.conf
# Generated by NetworkManager
nameserver 1.1.1.1

## リンクをはる
「/etc/resolv.conf」がリンクになっている場合、↑と同じく「原因(推測)」の「③」が実行されなくなり、「vi」での変更が保存される。

[root@rasp ~]# mv -v /etc/resolv.conf /etc/resolv.conf.manually-configured
renamed '/etc/resolv.conf' -> '/etc/resolv.conf.manually-configured'
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]# ln -s /etc/resolv.conf.manually-configured /etc/resolv.conf
[root@rasp ~]# rm -rf /etc/NetworkManager/conf.d/90-dns-none.conf
[root@rasp ~]# systemctl reload NetworkManager
[root@rasp ~]# NetworkManager --print-config | grep dns | grep -v "#"
[root@rasp ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
[root@rasp ~]#  nmcli c mod eth0 ipv4.dns 1.1.1.2
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]#
[root@rasp ~]# nmcli c u eth0
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@rasp ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
[root@rasp ~]# cat /run/NetworkManager/resolv.conf
# Generated by NetworkManager
nameserver 1.1.1.2

最後

DNS変更方法

「vi」で「/etc/resolv.conf」を変更したい場合は、↓の「①」も「②」も公式の方法となり、どっちでも使えると思われる。そもそも「nmcli」でもいいかきがする。
(nmcliで設定変更を実施する場合、NICをアップする必要があるので、少し面倒くさいかもしれない。)
①「NetworkManager」の管理から外す
②リンクをはる

トラブルシューティング

■「vi」で「/etc/resolv.conf」を変更して、有効にならない場合は、↓を確認した方がいいでしょう。
①「NetworkManager」に「dns=none」がちゃんと設定されるのか

[root@rasp ~]# NetworkManager --print-config | grep dns | grep -v "#"
dns=none

②「/etc/resolv.conf」がリンクになっているのか

[root@rasp ~]# ll /etc/resolv.conf
lrwxrwxrwx 1 root root 36  1月 23 07:45 /etc/resolv.conf -> /etc/resolv.conf.manually-configured

■「/run/NetworkManager/resolv.conf」も認識して、困ったら見てみよう

以上

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1