\ 年に1度のブラックフライデーセール! /

ラズパイのネット接続エラー「名前解決に一時的に失敗しました」で確認したいresolv.conf

長くRaspberry Pi OSを使っていると遭遇することが、sudo apt updateコマンドでのエラー。ソース先が問題がある場合もありますが、ほとんどが自分のネット接続設定や環境だったりします。

今回それが起きまして、もしかしてdhcpからNetworkManagerに変更したからではないか?と思いました。ネットに接続していたのに、突然のように繋がらなくなったからです。

先日のOSバージョンアップでNetworkManagerに変更した後、この日にdhcpに戻したんです。そうしたらハマった。

明確には検証はできていません。一応は復旧したのと、お陰で知らないことが分かりました。

何かの役に立つと思うので残しておきます。

最終的にNetworkManagerに戻して接続は問題なくなりました。

この記事の主な流れ

/etc/resolv.conf

エラーの内容は名前解決できないということなので、真っ先に/etc/resolv.confを疑いました。その時に調べていて分かったことがあります。

今回インターネット接続で出た「名前解決に一時的に失敗しました」の解消としては、やはりresolv.confの影響だったと結論付けました。

ネットに繋がっていないかネームサーバのエラー

Raspberry Piのアップデートで同じような名前解決できないエラーが出て、ソース先のURLに問題が無い場合に限り、次の通り確認してみてください。

resolv.conf

resolv.confには「namaeserver=ネームサーバのアドレス」が記載できます。

よく、GoogleのパブリックDNSサーバアドレス8.8.8.8を記載とかあるけど、編集するconfファイルはそこじゃないことがあると知りました。

Raspberry Pi OSでは/etc/resolv.confを直接編集しちゃイケない

どうやら、/etc/resolv.confは、resolvのサービス側が作成しているからみたい。(#Generated by resolvconf)書き換えても元に戻ってしまうという情報をネットで目にしました。あるタイミングでresolvconfが書き換えるからです。

では、その場合はどこでnamaeserverを書いたらいいのか?

resolvconf.conf

resolv.confに追記したい内容は、resolvconf.confに書きます。

/etc/resolvconf.confに追記する

記述する書式は次の通りで、resolv.confに書かれている書式と違います。

name_servers=DNSサーバのアドレス

OSに依るらしいけど、Raspberry Pi OSには同じ場所にresolvconf.confがあった。

resolvconf.confに書いた物はresolv.confに書き込まれ、resolvパッケージプログラムが管理して、resolved.serviceで実行されています。

ややこしいけど、そういう仕様です。

name_servers=で使うDNSサーバアドレスは、一般的な家庭ならルーターのアドレスと一緒です。(敢えてDNSサーバを設置していない場合)

適用を反映するのにifconfigコマンドでdownとupし直し適用します。

sudo ifconfig wlan0 down && sudo ifconfig wlan0 up

これで念のためルーターも再起動して解決しました。

resolv.confにはIPv4とIPv6の両方のアドレスが記載されるのですけど、IPv6が無かったのが原因だったと思います。IPv6はNetworkManagerなどのGUI設定でもデフォルトで自動となっていて、resolvが書き込むので、dhcpに戻した時に記載が無くなっていたことが原因だと推察しました。

これもバグなのか分かりませんが、NetworkManagerからdhcpに再び戻すことがあったら気にしてみてください。

manページ

Linuxにはマニュアルとしてmanコマンドがあります。

今回のresolvconf.confなども調べてみてください。(man コマンド名やファイル名)

man resolvconf.conf

このmanに表示される内容は、オンラインでもあります。

また、日本語で翻訳されているJMプロジェクトもあります。

マニュアルを読んでも解らないこともあります。更に検索するヒントもありますから、あれ?と思ったらターミナルで一度コマンドを叩いてみてください。

Pingコマンドで確認

通信ができているのか確かめるのに、一番簡単なのはpingが通るかどうかです。

それに名前解決できていないならドメイン名では通りません。

ping www.yahoo.co.jp

ローカルのIPアドレスへはPingが通っても、インターネット接続が無ければ当然ながら届きません。

基本中の基本ですが、確認も含めてpingも実行したいですね。

pingを途中で終了するには Ctrl + C

dhcpかNetworkManagerか

先日のOSバージョンアップでネット接続の設定が選べるようになっています。これまで通りのdhcpかNetworkManagerかです。

Raspberry Pi OSではdhcpがこれまで通りなので、ラズパイダの過去の記事、インターネットにある他のブログも参考にしてください。

例えば、固定IP化するなら、dhcpcd.confに追記したりするやり方です。

interface wlan0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

このときに名前解決用のネームサーバも記載しています。一般的な家庭ならルーターのアドレスです。

どうやらNetworkManagerだと、インターフェイス名がSSID名になるのが基本のようです。

SSID SSID名
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
static domein_search=

接続情報はwpa_supplicant.conf

Wi-Fiのパスワードなどを記した接続情報は、これまで通りwpa_supplicant.confに書かれています。

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

詳しくは次の記事も参考にしてください。

GUIで設定可能

これら一連の設定は、Raspberry Pi OSのデスクトップ上ネットワークアイコンから編集が可能です。

dhcpなら右クリックメニューから
NetworkManagerなら左クリックのアドバンスオプションから

ルーターが大丈夫か他のPCで確認しておこう

名前解決にはsystemd-resolved.serviceが動作して対応しています。でも、ネットに繋がらない時は、サービスも止まっています。再起動してもネット接続できなければまた止まる。

$ sudo systemctl status systemd-resolved.service

今回のトラブルのケースでは、ここで気が付いたのですけど、有線LANケーブルで繋いだ別のPCはネットに接続していました。この瞬間はWi-Fi接続だけが駄目でした。

あれ? これはルーターが問題ではないか。その時はスマホもダメだった。

ルーターの設定をイジった場合など、ルーターの管理画面から再起動をしたら直ることがありますから、最初にルーターの設定を見直したり再起動をしてから対処した方が話が早い場合もあります。

ルーターが原因では無かったのですが、最初にルーターがダメなら意味もないので、先に確認しておきたいですね。

ラズパイで名前解決に困ったら、一度確認しておきたいresolv.confとresolvconf.confでした。

Rレッド

GoogleのパブリックDNSサーバアドレス8.8.8.8は使用していません

シェアする
  • URLをコピーしました!

Raspberry Pi 4、400、Zero2W

販売価格は、必ず販売サイトで確認してください。

\年に1度のブラックフライデーセール!/
Amazonで詳しくみる
\年に1度のブラックフライデーセール!/
Amazonで詳しくみる
RaspberryPi
¥15,987 (2022/11/29 14:24時点 | Amazon調べ)
\年に1度のブラックフライデーセール!/
Amazonで詳しくみる

この記事のコメント(承認後に公開)

コメントする

コメントは日本語で入力してください。名前は表示されます。メールアドレスは表示されません。

CAPTCHA

この記事の主な流れ