web-dev-qa-db-ja.com

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

マシンに独自の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 -u127.0.1.1に戻ります!この住所はどこから来たのですか?

60
Mehran

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

ローカル転送ネームサーバーを使用したくない場合は、dnsmasqインスタンスを開始せず、そのアドレスを挿入しないようにNetworkManagerを構成します。 /etc/NetworkManager/NetworkManager.confdns=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
100
2707974

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にあります。 dns=dnsmasq行をコメントアウトすることにより、NetworkManager制御のローカル転送ネームサーバーを無効にすることは合理的な選択です。

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

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

Sudo reboot
11
jdthood

私の場合、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
1
Valery Markov