マシンに独自のDNSサーバーがある場合にのみ、nameserver 127.0.1.1
ファイルに/etc/resolv.conf
を含める必要があることを読みました。そうではないので、持っていると問題が発生します。しかし、私が何をしても、私はそれを取り除くことはできません!
これまでに行ったことは次のとおりです。
nameserver 192.168.1.3
を/etc/resolvconf/resolv.conf.d/base
ファイルに追加しています。 (192.168.1.3はネットワークのDNSです)。Sudo resolvconf --enable-updates
。Sudo resolvconf -u
。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
に戻ります!この住所はどこから来たのですか?
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
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に挿入するよう指示しません。
このデフォルト構成は適切に機能するため、状況が特別でない限り、デフォルト構成を復元する必要があります。
デフォルト構成を復元するには、次のことを参照してください。
#
文字で始まる2行で構成されるresolvconfヘッダーテキストのみが含まれます../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
私の場合、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