resolv.confのネームサーバー127.0.1.1は消えません!


60

マシンに独自のDNSサーバーがある場合にのみnameserver 127.0.1.1/etc/resolv.confファイルに含める必要があることを読みました。そうではないので、持っていると問題が発生します。しかし、私が何をしても、それを取り除くことはできません!

これまでに行ったことは次のとおりです。

  1. ファイルに追加nameserver 192.168.1.3してい/etc/resolvconf/resolv.conf.d/baseます。(192.168.1.3はネットワークのDNSです)。
  2. 実行中:sudo resolvconf --enable-updates
  3. 実行中:sudo resolvconf -u
  4. 実行中:(sudo service network-manager restart念のため)。

それでも、/etc/resolv.confファイルを開くと次のように表示されますnameserver 127.0.1.1。誰が何が間違っているのか考えていますか?

実際にあることに注意してください127.0.1.1!そして、なぜそうではないのか分かりません127.0.0.1

/etc/resolv.conf手動で更新して他の何かに変更した場合でも、sudo resolvconf -u元に戻し127.0.1.1ます!この住所はどこから来たのですか?

回答:


100

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

ローカル転送ネームサーバーを使用したくない場合は、dnsmasqインスタンスを開始せず、そのアドレスを挿入しないようにNetworkManagerを構成します。で/etc/NetworkManager/NetworkManager.confラインアウトコメントdns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

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

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

sudo service network-manager restart

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

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

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

# Content of static resolv.conf
nameserver 8.8.4.4
nameserver 8.8.8.8

DNSが3つあり、dnsmasqを無効にした場合、クエリは3番目に到達しません。Googleに問い合わせてから、イントラネットDNSに問い合わせたい。ありがとう
-JorgeeFG

3
restart network-managerupialの代わりにsystemdを使用するため、Xenialでは機能しません。試してくださいsystemctl restart network-manager
マティアスワイラー

私の質問は、dnsmasqプログラムがどのDNSサーバーを尋ねるのですか?DHCPのDNSサーバーにホストIPアドレスのクエリを要求しますか?
時計ZHONG

11

resolvconfの設定が間違っている可能性があります。これは、resolvconfとNetworkManagerの仕組みを実際に理解せずに構成ファイルをいじくり回している場合に特に起こります。

背景情報については、resolvconfのドキュメントとStéphaneGraberのブログ投稿をご覧ください。

https://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

最初に、デフォルトでUbuntu DesktopとUbuntu Serverの両方にresolvconfがインストールおよびアクティブ化されていることを知っておく必要があります。Resolvconfは、/ etc / resolv.confファイルを規則的かつ可逆的に動的に更新するためのフレームワークを提供します。

次に、UbuntuデスクトップにはデフォルトでNetworkManagerがインストールおよびアクティブ化されていることを知っておく必要があります。デフォルトでは、NetworkManagerはdnsmasqのインスタンスを起動して、ローカル転送ネームサーバーとして機能します。このNetworkManager制御のdnsmasqインスタンスは、127.0.1.1でクエリをリッスンします。NetworkManagerがdnsmasqインスタンスを起動すると、resolvconfにアドレス127.0.1.1をresolv.conf に挿入するよう指示します。別の回答で述べたように、ローカル転送ネームサーバーインスタンスを起動しないようにNetworkManagerを設定すると、ローカル転送ネームサーバーインスタンスを起動せず、resolvconfにアドレス127.0.1.1をresolv.conf に挿入するよう指示しません。

このデフォルト構成は正常に機能するため、状況が特別でない限り、デフォルト構成を復元する必要があります。

デフォルト設定を復元するには、次のことを参照してください。

  • /etc/resolvconf/resolv.conf.d/headには、#文字で始まる2行で構成されるresolvconfヘッダーテキストのみが含まれます
  • /etc/resolvconf/resolv.conf.d/baseは空のファイルです
  • /etc/resolvconf/resolv.conf.d/tailは空のファイルです
  • /etc/resolv.confはコンテンツを含むシンボリックリンクです ../run/resolvconf/resolv.conf

これを実現するには、次のコマンドを実行します。

sudo su
dpkg-reconfigure resolvconf   # And answer `Yes` to agree to dynamic updates
cd /etc/resolvconf/resolv.conf.d
echo '# 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' > head
rm -f base tail original
:> base
:> tail

NetworkManagerの元の構成は、

[main]
...
dns=dnsmasq
...

/etc/NetworkManager/NetworkManager.confにあります。NetworkManagerが制御するローカルフォワーディングネームサーバーをdns=dnsmasq行をコメント化して無効にすることは合理的な選択です。

[main]
...
#dns=dnsmasq
...

これをすべて行った後、古いネームサーバー情報レコードを消去するためにマシンを再起動することをお勧めします。

sudo reboot

1

私の場合dns=dnsmasq/etc/NetworkManager/NetworkManager.confファイルに行はなく/etc/resolv.conf、Network Managerによって上書きされ、nameserver 127.0.1.1

修正は、適切な更新のためにシンボリックリンクを復元することでした:

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.