Ubuntu 12.04 アップグレードでネット接続不能

5/4にアップデートマネージャーでUbuntu 12.04LTSにアップグレードしてみた。
サーバーではなく、デスクトップの方です。
2時間くらいかかったかな。


再起動して、ネットに接続してみたら、以下のように表示され接続できない。

このウェブページにアクセスできません
DNS ルックアップでエラーが発生したため、www.google.co.jp にあるサーバーを見つけることができません。DNS は、ウェブサイトの名前をインターネット アドレスに変換するためのウェブ サービスです。このエラーはほとんどの場合、インターネットに接続されていないか、ネットワークの設定が間違っていることが原因です。ただし、DNS サーバーの応答がない、ファイアウォールによって Chromium からのネットワーク アクセスがブロックされている、などの原因で発生する場合もあります。
ヒント:
このウェブページを後で読み込んでください。
インターネット接続を確認し、使用しているネットワーク デバイス(ルーター、モデムなど)を再起動してください。
DNS 設定を確認してください。確認方法がわからない場合はネットワーク管理者までお問い合わせください。
ネットワーク予測を無効にする手順は次のとおりです。ツール メニューの [設定]、[高度な設定] を順にクリックし、[ネットワーク動作を予測してページの表示速度を向上させる] のチェックボックスをオフにします。 このオプションを無効にしても問題が解決しない場合は、再度有効にしてページの表示速度を向上させてください。
ファイアウォールまたはウイルス対策ソフトウェアの設定で、 Chromium を許可されたプログラムとして追加してください。 許可されたプログラムとして既に追加されている場合は、リストからいったん削除してから再度追加してください。
プロキシ サーバーを使用している場合は、プロキシの設定を確認するか、ネットワーク管理者にプロキシ サーバーが正常に動作しているかどうかを確認してください。プロキシ サーバーを使用していない場合は、次のプロキシ設定を編集してください: ツールメニューの [設定]、[高度な設定]、[プロキシ設定の変更…] を順にクリックして、設定が [プロキシなし] または [直接] になっていることを確認してください。
エラー 105 (net::ERR_NAME_NOT_RESOLVED): サーバーの DNS アドレスを解決できません。

問題回避

原因は、resolv.conf が以下のように、空白になっており、名前解決ができないためのようだ。

/etc/resolv.conf
# 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

DO NOT EDITとは、書かれているが強引に/etc/resolv.conf に以下のルーターのアドレス 192.168.0.1を追記してみると、無事に名前解決ができてネット接続ができるようになる。
nameserver 192.168.0.1

しかし、再起動すると再びresolv.confが消されてしまい、名前解決ができなくなる。起動の度にOVERWRITTENしているようだ。
調べてみると、/etc/resolvconf/resolv.conf.d/base に以下を追記し、
nameserver 192.168.0.1

$ sudo resolvconf -u
を実行すると消えなくなる。

しかし、以下の「参考」によると、/etc/network/interfacesにdns-nameservers 192.168.0.1を追記する方法が正しいようなので、こちらの方を採用した。

参考

12.04LTSでは、DNSレゾルバに関する大きな変更が行われ、/etc/resolv.confは「ユーザーが手動で設定すべきでない,システムが自動生成するファイル」(厳密には,「自動生成するファイルへのシンボリックリンク」)に切り替わりました。
lsコマンドで確認すると、確かにシンボリックリンクになっている。
lrwxrwxrwx 1 root root 29 5月 4 18:44 resolv.conf -> ../run/resolvconf/resolv.conf

具体的な変更点は,以下のようなものです。

○/etc/resolv.confは,resolvconfパッケージによって自動生成されるファイルになります。ユーザーが変更を行っても,resolvconfが実行されると変更内容は破棄されます。

○これまで/etc/resolv.confに記載していたネームサーバー関連の情報は,/etc/network/interfacesにdns-nameservers・dns-search・dns-domainとして記載するか,NetworkManager経由での設定に切り替える必要があります。

○dnsmasqプロセスが暗黙で起動し,DNS関連の名前解決を行います。このプロセスはNetworkManagerによって制御され,VPNなどの「複数の名前解決サーバーを適切に切り替えて使う必要のある環境」において,適切なサーバー選定を可能にします。

○名前解決の失敗時,これまでのresolv.confに直接nameserver指定を行う方式に比べ,他のDNSサーバーへの問い合わせまでの待ち時間が短くなります。

○「システムが実際に利用しているDNSサーバー」は,/run/nm-dns-dnsmasq.confを見ることで確認できます。

Leave a Reply