🗂

【未解決】resolv.confが上書きされる件

3 min read 2

はじめに

VirtualBox上のサーバでBindの設定を行ったものの、
クライアント側のresolv.confが何ものかに上書きされてしまい、名前解決ができません。
具体的には、手動で①に修正してsystemctl restart networkすると、②になってしまいます。
困ったので、いろいろ試してみます。

/etc/resolv.conf①
# Generated by NetworkManager
search XXXXX.ne.jp example.com
nameserver 10.1.2.4
nameserver XX.XX.XX.XX
/etc/resolv.conf②
# Generated by NetworkManager
search XXXXX.ne.jp example.com
nameserver XX.XX.XX.XX
nameserver 10.1.2.4
  • 便宜上DNSサーバ名をXXXXX.ne.jp、DNSサーバのIPアドレスをXX.XX.XX.XXとしています。

環境

ホストOS:Windows10 Home 21H1
仮想環境:VirtualBox 6.1.22 r144080

  • ゲスト共通
    • OS:CentOS7(CentOS-7-x86_64-DVD-2009.iso利用)
    • アダプター1
      • NIC:enp0s3
      • NAT(仮想サーバとインターネットとの通信用)
      • DHCP
    • アダプター2
      • NIC:enp0s8
      • NATネットワーク(仮想サーバ間の通信用)
      • 固定IP
    • ドメイン名:example.com

  • DNSサーバ
    • ホスト名:dns
    • IPアドレス:10.1.2.4/24

  • クライアント
    • ホスト名:client
    • IPアドレス:10.1.2.5/24

実験

1.enp0s3、enp0s8ともにDNSパラメータの自動取得を無効にした場合

numtuiコマンドから各NICの設定を変更。
enp0s3:[×] Ignore automatically obtained DNS parameters
enp0s8:[×] Ignore automatically obtained DNS parameters

systemctl restart networkでネットワークを再起動。

/etc/resolv.confの設定を確認。

/etc/resolv.conf
# Generated by NetworkManager
search XXXXX.ne.jp example.com
nameserver 10.1.2.4

→良さそうです。

④名前解決してみる。

# nslookup dns.example.com
;; connection timed out; no servers could be reached

→名前解決できませんでした。

2.enp0s3だけDNSパラメータの自動取得を無効にした場合

numtuiコマンドから各NICの設定を変更。
enp0s3:[×] Ignore automatically obtained DNS parameters
enp0s8:[ ] Ignore automatically obtained DNS parameters

systemctl restart networkでネットワークを再起動。

/etc/resolv.confの設定を確認。

/etc/resolv.conf
# Generated by NetworkManager
search XXXXX.ne.jp example.com
nameserver 10.1.2.4

→1つ目と同様です。

④名前解決してみる。

# nslookup dns.example.com
;; connection timed out; no servers could be reached

→これもだめでした。

3.enp0s8だけDNSパラメータの自動取得を無効にした場合

numtuiコマンドから各NICの設定を変更。
enp0s3:[ ] Ignore automatically obtained DNS parameters
enp0s8:[×] Ignore automatically obtained DNS parameters

systemctl restart networkでネットワークを再起動。

/etc/resolv.confの設定を確認。

/etc/resolv.conf
# Generated by NetworkManager
search XXXXX.ne.jp example.com
nameserver XX.XX.XX.XX
nameserver 10.1.2.4

→「はじめに」と同じ状況になりました。

④名前解決してみる。

# nslookup dns.example.com
Server:    XX.XX.XX.XX
Address:   XX.XX.XX.XX#53

** server can't find dns.example.com: NXDOMAIN

→振り出しに戻った状態です。

4.NetworkManagerの設定を変更した場合

numtuiコマンドの各NICの設定を元に戻し、下記ページを参考にNetworkManagerの設定を変更しました。

【参考】resolv.confが上書きされる事象について(CentOSの場合)
「ケース2:NetworkManagerによるもの(CentO S7.2で確認)」の「対処方法② (推奨)」

/etc/NetworkManager/NetworkManager.conf
[main]
dns=none 

この場合も、systemctl restart networkでネットワークを再起動すると、resolve.confは元に戻ってしまいました。

おわりに

環境構築の練習なので、とりあえずnetworkを再起動しないという力技で進めています。
解決方法をご存じの方がいらっしゃいましたら、コメントを頂けると嬉しいです。

Discussion

/etc/resolv.conf は systemd-resolved によって上書きされます。 /run/systemd/resolve/resolv.conf といったファイルがあると思うので、そのファイルを編集して使います。

Arch Linux の説明ですが詳細が書かれています systemd-resolved - ArchWiki

コメントありがとうございます。
当該環境には /run/systemd/resolve/resolv.conf がなかったので何もできませんでした…
(/run/systemd/以下にresolveディレクトリがありませんでした。)

ログインするとコメントできます