13.10にアップグレードした後、DNS解決が失敗します。 DHCP(LAN)で取得したDNSサーバーは使用されていないようです。
nameserver 8.8.8.8
を/etc/resolv.conf
に追加することで、一時的に問題を解決できました。しかし、イントラネットホストはまだ解決できません。
ネットワークインジケータの接続情報メニュー項目をクリックすると、プライマリDNSとセカンダリDNSが正しく設定されます。しかし、私のコンピュータはそれらを使用しないように縫います。
だから私の質問:
resolv.conf
に何を入れるべきですか?最初に、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
以下のリンクで提案されている変更を行いました(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
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
を実行しています別のスレッドを開いていないのは、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はそれが存在することを期待しています。
実際にはとても簡単です。
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」を実行するだけで準備完了です!