Ubuntu 13.10(Saucy)へのアップグレード後に機能しないDNS解決を修正する方法


64

13.10にアップグレードした後、DNS解決が失敗します。DHCP(LAN)で取得したDNSサーバーは使用されていないようです。

を追加することで一時的に問題を解決できnameserver 8.8.8.8ました/etc/resolv.conf。しかし、イントラネットホストはまだ解決できません。

ネットワークインジケータの[ 接続情報 ]メニュー項目をクリックすると、プライマリDNSとセカンダリDNSが正しく設定されます。しかし、私のコンピュータはそれらを使用しないように縫います。

だから私の質問:

  • resolv.confもしあれば、何に入れるべきですか?
  • コンピュータがどのネームサーバーを照会しているかを調べる方法は?
  • DHCPによって受信されたネームサーバーが使用されない理由を調べるために、次にどこを見るか。

2
12.04から14.04にアップグレードするときに同じ問題が発生しました。
-Tarrasch

6
数日前に16.10にアップグレードしてから、毎日DNS障害が発生しました。
WindRider

@WindRiderにも同じ問題があり、以下のdnsmasqのトリックは機能しているようです。
-Suor

Lubuntu 17.04の新規インストールで問題が発生したため、hostsファイルに必要なURLを手動で追加して解決しました:askubuntu.com/a/936972/34298
rubo77

回答:


83

最初に、Ubuntu 12.04以降のUbuntuで名前解決がどのように機能するかについて少し知る必要があります。

StéphaneGraberは、昨年ここでいくつかの情報をブログに書い。知っておくべき最も重要なことは、UbuntuサーバーとUbuntuデスクトップの両方がresolvconfを使用してresolv.confファイルを管理することです。つまり、/etc/resolv.conf直接編集する必要はありません。代わりに、ネットワークインターフェイス設定ユーティリティを設定して、resolvconfに適切な情報を提供する必要があります。Ubuntu Serverの場合、ネットワークインターフェイス設定ユーティリティはifupであり、ファイルによって設定されます/etc/network/interfaces。Ubuntu Desktopの場合、ネットワークインターフェイス設定ユーティリティはNetworkManagerです。これはあなたが使用しているものです。

NetworkManagerは、ネットワークインジケータ>接続の編集によって設定されます。ただし、DHCPで構成されたネットワークインターフェイスでは、通常、設定を手動で変更する必要はありません。通常、(リモート)DHCPサーバーはNetworkManagerにローカルインターフェイスのIPアドレスと使用する(リモート)DNSネームサーバーのアドレスの両方を提供します。NetworkManagerは、127.0.1.1でローカルにリッスンする転送ネームサーバーのインスタンスを開始します。このアドレス127.0.1.1は、以下を入力するresolvconfに送信さnameserver 127.0.1.1れます/etc/resolv.conf。NetworkManagerは、DHCPが提供するDNSネームサーバーの(リモート)IPアドレスを転送ネームサーバーに提供します。したがって、ローカルシステムで実行されているプログラムは、ホスト名をIPアドレスに変換するようにリゾルバーに要求します。リゾルバーは、127.0.1.1でローカル転送ネームサーバーに照会します。フォワーディングネームサーバーは、通知されたリモートネームサーバーにクエリを送信し、回答を受信して​​、チェーンに送信します。

NetworkManagerは、D-Busを介して転送ネームサーバープロセスと通信します。次のコマンドを実行して、NetworkManagerが転送ネームサーバーに伝えたことを確認できます。

nmcli dev list iface eth0 | grep IP4.DNS

コメントから生じる更新:
resolvconfは、実際にはシンボリックリンクとなるファイル/run/resolvconf/resolv.confを書き込むことに注意して/etc/resolv.confください。/etc/resolv.confがシンボリックリンクでない場合は、再作成する必要があります。そのためには、実行することができます

sudo dpkg-reconfigure resolvconf

または

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf        

この情報をありがとうございます。私の場合、コマンドは正しいDNSサーバーを表示します。ただし、resolf.confファイルは更新されません。そこに値を入れたときからのタイムスタンプがあります。そのため、resolvconfがファイルを書き込まない理由を見つける必要があります。
Witek

15
Resolvconfは実際に/run/resolvconf/resolv.confファイルを書き込み、/ etc / resolv.confは/run/resolvconf/resolv.confへのシンボリックリンクであると想定されています。/etc/resolv.confを削除した場合は、シンボリックリンクを削除しました。シンボリックリンクを再作成するには、あなたが実行できるsudo dpkg-reconfigure resolvconfかを行うことができますmv /etc/resolv.conf /run/resolvconf/resolv.conf && ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
jdthood

7
これには「修正」以外のすべてが含まれます。この問題を解決するにはどうすればよいですか?
アマルムラリ14年

5
修正sudo dpkg-reconfigure resolvconfは、回答の最後の部分で提案されているように実行することです。
jdthood 14年

ありがとうございました!!!私のシステムに何が起こったのかはわかりませんが、実行するsudo dpkg-reconfigure resolveconfとうまくいくようです!
meanbunny 14年

49

以下のリンクで提案されている変更を行いました(dnsmasqを無効にします)。これですべてがうまくいきました! http://www.ubuntugeek.com/how-to-disable-dnsmasq-in-ubuntu-12-04precise.html

/etc/NetworkManager/NetworkManager.confファイルを開きます。

sudo gedit /etc/NetworkManager/NetworkManager.conf

次のように行をコメントアウトします。

#dnsmasq deactivated
#dns=dnsmasq

4
dnsmasqをコメント化した後、ネットワークマネージャーを再起動する必要がありますsudo restart network-manager
ドンカークビー

2
私の場合(Xubuntu)のコマンドは次の sudo /etc/init.d/network-manager restart
とおりです。– aviram83

dnsmasqがインストールされておらず、コメントアウトすらするものがないにもかかわらず、このような事態が発生した場合はdns=default[main]セクションに追加してください。NetworkManagerには独自の厄介なdnsmasqプラグインがあり、それ以外では使用します。
dstibbe

1
私は、この再起動を行う必要がありますnetwork-manager-sudo service network-manager restart
Sungam

17.10にアップグレードした後、私のボックスの1つにDNSがなく、/ etc / resolv.confがシンボリックリンクではなかったことがわかりました。それを修正しました。別のボックスではアップグレードが完了せず、ディレクトリに.dpkg-newファイルが見つかりましたが、それらの違いはdnsmasqです。それをコピーし、デーモンを再起動することなく
動作しました-fchen

20

編集2:以前の投稿はモデレートによって正当に削除されました。解決策であることがわかったものを投稿しています。そのために残念。

編集:私はちょうど答えを見つけました、そしてそれはこのまさしくそのページにあります-私のミオピィに申し訳ありません。このページで見つかったRichard Lindstedtの正解を拡大して、調査結果を以下に掲載しました。私は初期のゴロゴロを少し文脈に残しました。リチャードの答えに賛成してください、彼はそれに値します。

実際にはとても簡単です。

interfaces confファイルを開く-> sudo vi / etc / network / interfaces

それは確かにOPを助けなかったし、今私を助けません。静的アドレスは必要ありません。DHCPサーバーから送信されたアドレスを使用します。NetworkManagerはそれらを認識しているように見えますが、Ubuntuははっきりと無視します。

# nmcli dev list iface wlan0 | grep IP4.DNS
IP4.DNS[1]:          10.*.*.*
IP4.DNS[2]:          10.*.*.*
IP4.DNS[3]:          8.8.8.8

しかし...

# dig microsoft.com
; <<>> DiG 9.9.5-4.3-Ubuntu <<>> microsoft.com
;; global options: cmd
;; connection timed out; no servers could be reached

私の/ etc / network / interfacesは次のとおりです。

auto lo
iface lo inet loopback

これは少し奇妙ですが、すべてのインターフェイスがここで宣言されていることを期待します(または何か不足していますか?)。

つまり、要するに:

  • 開始するファイルをいじりませんでした
  • 私はすでに走った dpkg-reconfigure resolvconf
  • 適切なシンボリックリンクがあります
  • NetworkManagerはDHCPから正しいDNSサーバーを取得します
  • Ubuntuはそのようなアドレスを使用しません
  • 回避策は、修正したくない8.8.8.8を/ etc / network / interfacesに配置することです。
  • DHCPが提供するDNSサーバーをありとあらゆる状況で使用したい。

別のスレッドを開いていないのは、14.10を使用していることを除けば正確な問題であるためです(ただし、12.10から13.04にアップグレードして以来、これは私を悩ませています)。

解決

その最後のフレーズは私を正しい軌道に乗せ、リチャードの答えに気づいた。

問題は、競合dnsmasqresolvconfパッケージに関連しているようです。12.10までdnsmasq使用されていました。13.04以降、Ubuntuはdnsmasq / resolvconfハイブリッドに切り替わり、パッケージdnsmasq-baseとをインストールしましたresolvconfが、dnsmasqそれ自体ではありませんでした。

13.04のアップグレードスクリプトのバグなのか、それとも他の何かのバグなのかはわかりません。

問題は、アップグレードスクリプトがのdns=dnsmasq行をコメントアウトできないこと/etc/NetworkManager/NetworkManager.confです。そのため、システムにdnsmasqデーモンがもう存在しない場合でも、/ etc / resolv.confはそれが存在することを期待しています。


これはすごい!
メタディング

1
OMGこれにより、過去3年間に発生したDNSの問題が解決しました。あなたが持っている場合dnsmasqdnsmasq-baseインストール、NMは置く127.0.0.1/etc/resolv.confはなく、127.0.1.1。私は単にアンインストールしてdnsmasq(そしてNMを有効にしました)、すべてがうまく動作します。
user1129682

4
将来のGoogle社員はsudo service network-manager restart、これを有効にするために必要があることに注意する必要があります。
タイムラマー

サービスネットワークマネージャーの再起動の良い点!
エンリケ

7

実際にはとても簡単です。

interfaces confファイルを開く-> sudo vi / etc / network / interfaces

そして、インターフェース(おそらくeth0)の下に、通常の設定がすべて表示されます。

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1

ゲートウェイの後に、「dns-nameservers 8.8.8.8 8.8.8.9」または使用するネームサーバーを追加します。

したがって、設定は次のようになります。

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1
dns-nameservers 8.8.8.8 8.8.8.9

「sudo service networking restart」を実行するだけで準備完了です!

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