間違ったDNS問題を修正するために、resolv.confファイルを編集する必要がありますか?


35

Ubuntuマシンが間違ったDNSサーバーを使用するという問題があります。何らかの理由で、マシンlocalhostはDNS情報を照会します。

ネットワーク設定GUIにDNSサーバーを追加しましたが、DNSサーバーアドレスとして/etc/resolv.confまだ含ま127.0.0.1れています。今、私は自分でファイルを編集するだけでいいと思ったが、手作業でファイルを編集するべきではないと明示的に言っている。

ここで、ネットワーク設定GUIが正しい設定でファイルを生成しなかったため、新しいresolv.confファイルを自分で生成するにはどうすればよいですか?


1
あなたがUbuntuのサーバ12.04 LTSを使用している場合は、単に自分で行う大賛成と編集/etc/resolvconf/resolv.conf.d/headあなたが見にあなたのレガシーはresolv.confをしたいだけのように直接。総当たりで解決するまで、リゾルバの問題しかありませんでした。

回答:


40

これまでに投稿された回答のどれも対処していないのは、ローカルネームサーバーが実行されていると仮定すると、質問者が持っnameserver 127.0.0.1ていること/etc/resolv.confが正しいことを理解できないという外観です。また、Ubuntu 12.04デスクトップでは、デフォルトでローカルネームサーバーが実行されています。つまり、dnsmasqをリッスンするNetworkManagerによって制御されるプロセス127.0.0.1です。Ubuntu 12.10では、リスンアドレスがに変更されました127.0.1.1

したがって、解決策はに変更を加えないことresolv.confです。質問者がローカルのネームサーバーを使用したいと仮定すると、それは正しいです。

ネームサービスが機能していない場合、ローカルネームサーバーに正しい転送アドレスが与えられていないか、他のネットワークの問題があります。

質問者は「ネットワーク設定GUI」を使用して「正しい設定でファイルを生成」しようとしましたが、これは機能しませんでした。これが何を意味するのか正確にはわかりませんが、ネームサーバーアドレスを入力resolv.confして正しいタイミングで入力する正しい方法を次に示します。質問者はインターフェースを設定するために使用しているのNetworkManagerではなくifup、使用していると想定しています。

ほとんどの場合、インターフェイスはDHCPプロトコルを使用して構成されます。その場合、ローカルシステムで何も設定する必要はありません。DHCPサーバーは、クライアントが使用するネームサーバーアドレスを認識し、この情報をDHCPクライアントに送信します。DHCPクライアントはそれをNetworkManagerに送信し、NetworkManagerはそれをresolvconfに送信しresolv.confます。したがって、この場合、構成が必要なのはDHCPサーバーです。

ローカルマシンのネットワークインターフェースが静的に設定されている場合、正しいネームサーバーアドレスをNetworkManagerに入力する必要があります(例:ネットワークインジケーター| 接続を編集... | ワイヤレス| myconnection | 編集... | IPv4設定| 追加のDNSサーバー。

ローカルネームサーバーが正しく機能していない可能性があります。その場合、質問者は編集する必要があります/etc/NetworkManager/NetworkManager.conf

sudo gedit /etc/NetworkManager/NetworkManager.conf

行をコメントアウトします

dns=dnsmasq

「[main]」セクション。行をコメントアウトするには、行#の先頭にa を付けてからファイルを保存します。次に、network-managerを再起動します。

sudo restart network-manager

この後resolv.conf、127。*アドレスの代わりに、非ローカルネームサーバーアドレスが入力されます。

質問者がifupNetworkManagerではなくネットワークインターフェイスの設定に使用している場合、jmartin2279の答えは正しいです。jmartin2279の説明に従って、ネームサーバーアドレスを/ etc / network / interfacesに追加する必要があります。

他のいくつかの答えが助言するものとは反対に、一般に、ファイルに、またはオプションを追加しないでくださいnameserverdomainsearch/etc/resolvconf/resolv.conf.d/。それらの答えに対する私のコメントをご覧ください。


1
「DHCPサーバーは、クライアントが使用するネームサーバーアドレスを認識しています」— DHCPサーバーを制御できない場合(パブリックWiFiホットスポットを考えて)、使用されているネームサーバーをオーバーライドする場合を除き...接続ごとに同じ構成を設定する基本-接続するWiFiホットスポットごとに何度も-は解決策ではありません。
テオハンフイ

最終的に到着するdhclient変更(nameserver行)を実行する必要があるようetc/resolv.confです。Xubuntu 14.04のカスタマイズされたライブを実行しています(おそらくそれが理由です)。
ソパラホデアリエレス

DNSMasqを無効にすることのデメリットは、jdthoodでしょうか?もちろん、名前解決とインターネットはそれを行った後でもうまくいくようです。
ソパラホデアリエレス

bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/1003842、たとえば私のコメント#60を参照してください。
jdthood

127.0.0.1ネットワークマネージャーが他のネームサーバーを持っているにもかかわらず、resolv.confが変化し続ける+ dnsmasqがコメントアウトされている+リブートされている+ dnsmasqが(まだ開始されているので)殺された+ネットワークが再起動された:/
一部のユーザー

17

ifupを使用してインターフェースを静的に設定している場合は、/ etc / network / interfacesファイルに追加できます。

ターミナルを開き、次を入力します。

sudo gedit /etc/network/interface*

次のように表示されるはずです。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

編集先:

auto eth0
iface eth1 inet static
address 192.168.1.10 
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8

独自のネットワーク情報を使用します。これにより、DNSを設定できます。ここで複数のDNSサーバーを使用できます。

dns-nameservers 8.8.8.8 8.8.4.4

これを実行した後、実行します

ifdown eth0
ifup eth0

あなたの場合、これは解決策です:「ifupを使用してインターフェイスを静的に構成している場合....」
angelcervera

これもテストしましたか?ifdown: interface eth0 not configured
セリン14

3
sshを介して接続している場合、ifdown / ifupは使用できません。代わりにsudo /etc/init.d/networking restart
TD_Nijboer

11

Ubuntu 12.04では、resolv.confの処理が変更されました。

あなたがあなた自身のネームサーバのアドレスを追加したい場合は、ファイル/etc/resolvconf/resolv.conf.d/編集頭を

sudo nano /etc/resolvconf/resolv.conf.d/head

そこにネームサーバーを追加します(例:Google open dns)

nameserver 8.8.8.8

ファイルを保存してから実行する

sudo resolvconf -u

再起動などはありません。たぶん、ネットワークマネージャーを再起動する必要があります

sudo service network-manager restart

できた

コマンドでテストできます

nslookup www.google.com

結果は次のようになります

Server: 8.8.8.8
Address: 8.8.8.8#53

4
「ネームサーバー」行を/etc/resolvconf/resolv.conf.d/headに追加すると、簡単なハックとして機能する場合がありますが、これは問題の正しい解決策ではありません。これを行うと、リゾルバーはすべての状況でそのネームサーバーアドレスを使用しますが、使用するネームサーバーは状況に依存します。たとえば、(おそらくVPNを介して)LANに接続している場合、通常はLAN上のプライベート名を解決できるようにLANネームサーバーを使用する必要があります。また、現在のケースでは、システムはローカルキャッシングネームサーバーを実行しているように見えますが、「ネームサーバー8.8.8.8」を追加するだけでバイパスされます。
-jdthood

@jdthood-問題を指摘しました。解決策を提供しますか?
TJビドル

@TJそれがあなたが意味するものである場合、私はすでに主要な質問への回答を投稿しました(「resolv.confファイルを編集するにはどうすればよいですか?」)。
jdthood

1
これはお勧めしないでください。で、非常にファイルの先頭、「手でDO NOT EDIT THISファイル-変更内容は上書きされます」。
セリン14

/etc/resolv.confを手動で編集すると再起動時に変更が上書きされることを指摘したいと思いますが、/ etc / resolvconf / resolv.conf.d / headを手動で編集しても再起動時に変更は上書きされません。 resolvconfのインストール。これはおそらく警告が表示される理由です。
ケン

1

にエントリを追加するには/etc/resolv.conf、を作成します/etc/resolvconf/resolv.conf.d/tailファイルをてそこに追加します。

ただし、を/etc/resolv.conf含む場合127.0.0.1、エントリを追加して/etc/resolvconf/resolv.conf.d/tailも何も変更されません。DNSサーバーアドレスをNetworkManagerで静的に設定する必要があります。NetworkManagerはDNSサーバーアドレスをリッスンするdnsmasqに送信します。127.0.0.1

静的インターフェイスのDNS設定は、「dns-nameservers」、「dns-search」、および「dns-domain」エントリとして適切なifaceスタンザに追加する必要があります/etc/network/interfaces

詳細についてはこちらをお読みください。

`さらに:

gnome-network-adminDNSを設定するGUIツールをインストールできます。それを試してみてください :

sudo apt-get install gnome-network-admin

3
(1)いいえ、「ネームサーバー」オプションを/etc/resolvconf/resolv.conf.d/tailに追加しないでください。それは効果的ではなく(他の「ネームサーバー」オプションが優先されるため)、最適ではありません(静的な構成であるため、構成はネットワーク環境を反映する必要があります)。(2)いいえ、gnome-network-adminを使用しないでください。resolvconfでは正常に動作しません。バグ#60518(bugs.launchpad.net/ubuntu/+source/gnome-system-tools/+bug/60518)を参照してください。
jdthood
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.