Dhclient が /etc/resolv.conf を更新しない

Dhclient が /etc/resolv.conf を更新しない

Linux Mint でファイルを表示すると、/etc/resolv.conf最初のコメントに/etc/resolv.confファイルが によって生成されたことが記載されていますresolvconf(8)

~ $ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

man ページを言い換えると次のようになりますresolvconf(8):

resolvconfプログラムはdhclientなどのDHCPクライアントによって実行される。

走るdhclient wlan0

~ $ dhclient wlan0

Dhclient によりresolvconfプログラムが更新されます/etc/resolv.conf。この/var/lib/dhcp/dhclient.leasesファイルは、ネームサーバーの IP アドレス (192.168.0.6) をリースできることを確認します。

~ $ cat /var/lib/dhcp/dhclient.leases 
lease {
  interface "wlan0";
  . . .
  option domain-name-servers 192.168.0.6;
  . . .
}

ただし、/etc/resolv.confファイルは更新されません。/etc/resolv.confファイルのネームサーバーは 127.0.1.1 です。

~ $ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
search software.eng.apl

にネームサーバーがリストされていません/etc/network/interfaces

~ $ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

/etc/resolv.confDHCP サーバーからリースされているネームサーバーを使用してファイルを更新するために、ここで何が欠けているかわかりません。DHCP サーバーは、DHCPD を使用する Linux CentOS マシンです。

答え1

Mint やその他の最新のディストリビューションにはmdns、デフォルトで、通常のパブリック DNS をローカルの「分散型」ラッパーでラップし、ローカル ネットワークの zeroconf サポートを有効にする機能が搭載されています。基本的に、ローカル DNS サーバーは、検出したローカル ネットワーク内の名前を解決し、パブリック インターネットの解決、つまりローカル ネットワーク外の名前については、(プロキシ化された) パブリック DNS にフォールバックします。

言い換えれば、あなたのはresolv.conf正しく、このシナリオに適切であり、mdnsISPのネームサーバーにアクセスできない場合は、内部を確認する必要があります。その構成 - もちろん、zeroconf サポートを気にしない場合は、無効にすることでmdns(おそらく Avahi も無効にすることで)resolv.conf従来の方法で管理できます。

以下も参照https://help.ubuntu.com/community/HowToZeroconf

答え2

/etc/dhcp/dhclient.conf コメントを解除することで行を編集できます#prepend domain-name-server

答え3

OP で説明されているのと同じ問題がありましたが、これまでの回答はどれもうまくいきませんでした。Linux Mint 18 を実行していますが、docker コンテナ内でネットワーク機能を使用しようとしたときにこの問題を発見しました。Docker は からの DNS 値を解決しようとしていました/etc/resolv.conf。しかし、リストされている唯一のネームサーバーが 127.0.1.1 であったため、docker ネットワークは失敗しました。

私は見つけた別の解決策askubuntu ではうまくいきました。誰かの役に立つかもしれないので、相互参照としてここに投稿します。


NetworkManager は、resolvconf ユーティリティを介してアドレス 127.0.1.1 を resolv.conf に挿入するプログラムです。NetworkManager は、ローカル転送ネームサーバーとして機能する dnsmasq プログラムのインスタンスを起動するように設定されている場合にのみ、そのアドレスを挿入します。その dnsmasq インスタンスは、アドレス 127.0.1.1 でクエリをリッスンします。

ローカル転送ネームサーバを使用しない場合は、NetworkManagerがdnsmasqインスタンスを起動せず、そのアドレスを挿入しないように設定します。/etc/NetworkManager/NetworkManager.conf次の行をコメントアウトします。dns=dnsmasq

sudo vim /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

NetworkManager サービスを再起動します。

sudo service network-manager restart

このモードでは、NetworkManager は (resolvconf 経由で) /etc/resolv.conf を更新し、NetworkManager がアクティブな接続用に持つネームサーバー アドレスを含めます。

resolv.conf を更新するための resolvconf メカニズムを無効にして、静的な resolv.conf ファイルのみを使用する場合は、次の手順を実行します。

sudo rm -f /etc/resolv.conf  # Delete the symbolic link
sudo vim /etc/resolv.conf   # Create static file

関連情報