ネットワーク不調問題解決したかも!
長いこと悩みのタネだったネットワーク不調問題の原因がついにわかったかもしれない。
結論を先に言うと、IP アドレスが重複していたのが原因のようだった。引っ越ししてから問題が起こり始めたので、引越し前と後とで何が違うのかを考えていた。その一つに、BB ユニット (以下、ルータと呼ぶ) で Raspberry Pi の IP アドレスを固定していないことに気がついた。でも、Raspberry Pi 側では IP アドレスを固定するように設定していたので、これは関係ないだろうとずっと思っていた。しかしこれが関係オオアリだった。
ルータ側でも Raspberry Pi の IP アドレスを固定するために、MAC アドレスを調べる必要があった。もちろん MAC アドレスをいちいち覚えているはずもないので、arp-scan
コマンドを使って家の中のすべてのネットワーク機器の IP アドレスと MAC アドレスを調べた。
sudo arp-scan -l --interface en7
Interface: en7, type: EN10MB, MAC: xx:xx:xx:xx:xx:xx, IPv4: 192.168.3.233
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.3.1 xx:xx:xx:xx:xx:xx Hon Hai Precision Ind. Co.,Ltd.
192.168.3.2 dc:a6:32:xx:xx:xx Raspberry Pi Trading Ltd
192.168.3.2 xx:xx:xx:xx:xx:xx ELECOM CO.,LTD. (DUP: 2)
192.168.3.203 xx:xx:xx:xx:xx:xx ASIX ELECTRONICS CORP.
192.168.3.235 xx:xx:xx:xx:xx:xx Luxshare Precision Industry Company Limited
192.168.3.213 xx:xx:xx:xx:xx:xx (Unknown)
192.168.3.222 xx:xx:xx:xx:xx:xx Apple, Inc.
522 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.854 seconds (138.08 hosts/sec). 7 responded
192.168.3.1
はルータの IP アドレス。そして 192.168.3.2
が 2 つある。一つは想定通り Raspberry Pi だが、もう一つある。ELECOM CO.,LTD.
と書かれていて、自宅に Elecom のネットワーク機器は Wi-Fi ルータくらいしかないからおそらくそれだろう。その後ろの (DUP: 2)
というのは、おそらく IP アドレスが重複しているという意味なのだろう。
このコマンドを実行してようやく IP アドレスが重複していることに気がついた。そして次の瞬間、これが今までのネットワーク不調の問題だったと一瞬で悟った。IP アドレスが被っていることには arp-scan
コマンドを実行するまで疑いもしなかったが、それがわかってから、この問題との関連があると気づくまでは本当に一瞬だった。
なぜ今まで IP アドレスが重複しているという疑いを持たなかったのか。今まで DHCP を使ってきてこれが不具合になったことはないので、疑うということを忘れていた。今回も、別に DHCP 機能に問題があったわけではないが、DHCP サーバが自宅で 2 台稼働しているということをすっかり忘れていた。ルータ側の DHCP 機能を『実質的に』無効化しているのを、『完全に』無効化しているものと思い込んでしまっていたのが原因だった。
もう少し詳しく説明しよう。残念ながら SoftBank 光のルータは、DHCP 機能を無効化することができない。しかし、割り当てる IP アドレスの範囲を 192.168.3.2
〜 192.168.3.2
のように設定することにより、1 つの IP アドレス、ひいては 1 台のデバイスにしか DHCP によって IP アドレスを割り振れないようにしていた。そして、この IP アドレスに Raspberry Pi を割り当ててしまえば、あとは Raspberry Pi 側の DHCP (我が家では Dnsmasq を使っている) にすべてを任せることができる。
先ほども書いたように、Raspberry Pi 側でこの IP アドレスで固定するように設定していた。しかし、ルータからみれば、それはあくまで Raspberry Pi 側が『勝手に』設定しているだけに過ぎない、というわけなのだ。だからルータ側が DHCP 機能により 192.168.3.2
に設定した機器が Raspberry Pi ではなかった (Wi-Fi ルータだった) せいで、この IP アドレスが設定された機器が 2 台になってしまい、それが原因でパケットの送受信がうまくいかなくなっていたというわけだ。
思い返せば、それらしい不安定な挙動をみせていた。Raspberry Pi によって IP アドレスや DNS サーバが設定されているデバイスの中でも、有線接続されている Fire TV では問題ないのに、Wi-Fi 接続されている iPhone ではネットワークが不安定になることがあった。これだけみると Raspberry Pi には問題がなく、Wi-Fi ルータになにか問題があるのではないかと疑ってしまう。
ところが、iPhone の DNS 設定を手動に変更し、1.1.1.1
などを追加するとネットワークが安定する。そうなるとやはり Raspberry Pi に問題があるということになる。
ここが今まで謎だった。Raspberry Pi が問題なのか、Wi-Fi ルータが問題なのか。もちろん、両方に問題があるということにも思い当たったのだが、Raspberry Pi と Wi-Fi ルータが両方とも壊れているなんて考えづらかったのだ。だから、この 2 つに問題があるという仮説についてはあまり真剣に考えていなかったわけだ。
しかし、IP アドレスが重複しているのが Raspberry Pi と Wi-Fi ルータだったとわかった今ならこの疑問がすべて説明できる。IP アドレスの重複によりパケットが Raspberry Pi に行ったり Wi-Fi ルータに行ったりするもんだから、同じ時間帯にはどちらか片方しかネットワークにつながっていないことになる。それが不定期で入れ替わるから Raspberry Pi に問題があるようにみえたり Wi-Fi ルータに問題があるようにみえたりしたのだ。たぶんそれらのどちらかがリクエストを受けたあと1しばらくしてそちら側にパケットが飛ぶようになるから、ネットワークが不安定になってしばらくするとまた直る、みたいな現象が発生したのではないかと推測している。
そして、このような IP アドレス重複問題を生んでしまった原因は、ルータ側で Raspberry Pi の IP アドレスを固定していなかったからだと思う。先も書いた通り、Raspberry Pi 側の IP アドレス固定は、ルータ側からみればあくまで勝手に設定しているだけなので、ルータ側が Raspberry Pi にそのアドレスを割り振るとは限らないのだ。今回は Wi-Fi ルータに Raspberry Pi と同じ IP アドレスを、無効化したと思い込んでいた DHCP 機能で割り振っていた。一方で、Raspberry Pi も同じ IP アドレスで固定している上に DHCP サーバからの要求は受け付けないようになっているので他の IP アドレスに変わることはない。その結果、同じ IP アドレスが 2 つの機器に割り振られてしまい、今回の問題が発生した、というわけだ。
原因がわかればあとは簡単だ。ルータの設定ページにアクセスして、DHCP 機能の設定画面の固定割当で 192.168.3.2
に Raspberry Pi の MAC アドレスを設定してルータを再起動すれば解決だ。念のため、Wi-Fi ルータのリセットボタンを押したあと、ルータ、モデム、Wi-Fi ルータ、Raspberry Pi、iPhone、MacBook など、家中のネットワーク機器の電源を一回オフにして、3 分後にルータ、モデム、Wi-Fi ルータの電源を入れたあとにまた 3 分ほど待ってから Raspberry Pi の電源を入れ、さらに 3 分ほど待って iPhone、MacBook の電源を入れた。ここまでやれば設定が反映されていないなどの問題はないだろう。
再起動後に、再び arp-scan
コマンドを実行したところ、IP アドレスは重複していないことを確認した。
sudo arp-scan -l --interface en7
Interface: en7, type: EN10MB, MAC: xx:xx:xx:xx:xx:xx, IPv4: 192.168.3.233
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.3.1 xx:xx:xx:xx:xx:xx Hon Hai Precision Ind. Co.,Ltd.
192.168.3.2 dc:a6:32:xx:xx:xx Raspberry Pi Trading Ltd
192.168.3.217 xx:xx:xx:xx:xx:xx ELECOM CO.,LTD.
192.168.3.235 xx:xx:xx:xx:xx:xx Luxshare Precision Industry Company Limited
192.168.3.239 xx:xx:xx:xx:xx:xx Apple, Inc.
192.168.3.232 xx:xx:xx:xx:xx:xx (Unknown)
192.168.3.213 xx:xx:xx:xx:xx:xx (Unknown)
1567 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.877 seconds (136.39 hosts/sec). 7 responded
その直後にこの日記を書いているので、絶対にこれが原因だったとはまだ言えないが、今までの挙動からしても、これが原因でほぼ間違いないと確信している。
Raspberry Pi が問題なら、OS の中での問題なのかと思いこんでいたが、まさか IP アドレスの重複という、ネットワークの初歩的な問題だったとはね……。いろいろといじっていると、初歩的な部分ほど目に見えなくなるものなのかな。それにしてもこんな単純なことに 1 ヶ月以上も気がつけなかったことが悔しい。
しかし、もとを正せば SoftBank 光のルータが DHCP を無効化できないのが悪い。DHCPv4 も DHCPv6 も Router Advertisement も無効化できないのはどうかしてる。DHCPv4 だけは、割り当てる IP アドレスの範囲を 192.168.3.2
にすることで実質的に無効化できるということを発見したが、まさか IP アドレスの割当を失念するとはね……。
ともあれ、これでようやく安定してインターネットが使えるようになるだろう。Router Advertisement は無効にできないので、原因がわかる前に試行錯誤していた IPv6 の無効化は、相変わらずそのままにせざるを得ないが、安定してインターネットが使えるようになるだけでも万々歳である。IPv6 を無効化しても遅いとは感じないし、別に困っていないから良いんだけどね。
調子が悪い一日だった
ネットワークの調子は回復した(はず)が、今日は自分自身の体調が優れなかった。
朝起きてから夜までずっと、なんとなくダルさがあり、頭も少しだけボーッとして、なんだか気力も湧かなかった。
思い当たるフシがあるとすれば、昨日コンビニで買ったアイスのフタに指の跡で穴が空いていたことに、食べる直前に気づいたがそのまま食べてしまったことだろうか。単純に気持ち悪いし、そこから菌などが入って不衛生でもあるから本当は食べない方が良いよなと思いつつも、楽しみにしていたし、そのまま捨てるのももったいなくて食べてしまった。
コンビニで買う前に気づくべきだったが、まったく気づかなかった。今後は気をつけよう。
とはいえ、これが今日の体調不良と関係があるのかは不明だ。一応、体温計で測ったところ、熱はなかったが、ちょっと不安だ。
使い捨て丼がなかなか便利 🍜
少し前に Amazon で使い捨ての丼を買ったのだが、これがなかなか便利だった。
箸やスプーンを洗うのすらめんどくさいと感じる性格なのに、むしろ今までなぜお皿だけは律儀に洗っていた2のか疑問だが。
50 セットで、電子レンジ可のものだ。素材はポリプロピレンだから、電子レンジで溶けることもなくて安心だ。
大きさもそこそこで、今持っている使い捨てではないお皿よりも容量が多い。冷凍のラーメンや袋に入ったコールスロー、冷凍チャーハンなどをそのお皿で食べたが、サイズはとてもちょうど良かった。冷凍チャーハンに関しては、500 g 全部は入らないかなと思いつつ試してみたのだが、ギリギリ入った。9 分の加熱でも問題なかった。
食べ終わったらそのまま捨てるだけで良いから冷凍食品も手間なく食べられる。そういえば冷凍食品は最近あまり食べていなかったのだが、潜在的に、そのあとお皿を洗うのがめんどうだという意識があったせいなのかもしれない。でもこれでお皿を洗うという面倒な手間も省けるので楽になる。ほんと今までなんでこれを導入していなかったのか不思議だ 🤔
ところで、「丼」って書いて「どんぶり」って読むの初めて知った。「どん」という読み方しかないと思っていた。
「どん」という言葉は「どんぶり」を略したものらしく、さらに「どんぶり」という言葉も「どんぶりばち」を略したものみたい。つまり「どん」というのは略語の略語ということのようだ。
Safari をダークモードに
YouTube や Amazon Prime Video が見られないから、Safari で Nintendo Switch のおすすめゲームを探したりしていたのだが、夜はやはり白い画面だとまぶしい。常にダークモードにしているが、ウェブページの画面は基本的に白い。
PC 版の Chrome だと、試験的な機能(flags)としてダークモード機能があるが、iPhone だと難しいのかなと思っていたら、なんと iOS 15 で追加された Safari の拡張機能を使えばダークモードにできるということをネットで調べて知った。
https://iphone-mania.jp/manual/ios15-new-update-405140/amp/
Noir という拡張機能アプリだ。他にもダークモードにする拡張機能はいろいろあるみたいだが、これがアプリ一覧でもトップにきていたのでとりあえず購入して使ってみた。
https://apps.apple.com/jp/app/noir-dark-mode-for-safari/id1581140954?l=en
軽く設定するだけですぐ使えるようになった。そして、ウェブページがすべて黒画面で表示されるようになった。これは地味に感動した 🎉
しかもかなりきれいにダークになる。ただ画面を反転させるだけではなくて、画像などはもともとの状態を維持しているので、そのウェブページでダークモード機能を提供しているかのような自然なダークモードになる。
おかげで快適にウェブブラウジングができるようになった 😊