Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。
長く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プロジェクトもあります。
マニュアルを読んでも解らないこともあります。更に検索するヒントもありますから、あれ?と思ったらターミナルで一度コマンドを叩いてみてください。
■Pi 5は8GBモデルがオススメ
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レッド




