web-dev-qa-db-ja.com

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

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

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

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

だから私の質問:

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

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

StéphaneGraberが昨年それについていくつかの情報をブログに書いた here 。知っておくべき最も重要なことは、Ubuntu ServerとUbuntu Desktopの両方が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は、nameserver 127.0.1.1/etc/resolv.confに入れるresolvconfに送信されます。 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        
83
jdthood

以下のリンクで提案されている変更を行いました(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
49

EDIT 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はそのようなアドレスを使用しません
  • 回避策は、/ etc/network/interfacesに修正された8.8.8.8を配置することです。
  • DHCPが提供するDNSサーバーをありとあらゆる状況で使用したい。

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

ソリューション

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

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

13.04のアップグレードスクリプトのバグなのか、他の何かのバグなのかはわかりません。resolvconfをアップグレードすると(フレッシュインストールなど)、dnsmasq-baseがアップグレードされ、dnsmasqが(正しく)アンインストールされるためです。

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

20
Henrique

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

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」を実行するだけで準備完了です!

7
sprut