www.tsukutarou.net
www.tsukutarou.net
www.tsukutarou.net
こんにちは、つくたろうです。
さっきうっかりブレーカーを落としてしまい、電気復旧後に再起動したメインPCがインターネットに繋がらず、四苦八苦しておりました。
無事解決できたので、自分への備忘録および同じ症状が起こっている人に向けてメモ程度の記事を残しておきます。
(PCのような機器にとって、電源を急に落とすのは厳禁です…!無停電電源装置(UPS)をちゃんと使いましょう…!)
ちなみにUPSなしで電源をいきなり落とすとSSDとか普通に飛びます(飛びました)(実体験)
はじめに
タイトルの通りです。
WindowsのPCにて、「Google関連のサイトだけ繋がるが、他のインターネット接続が全く通らなくなった」という問題が起こりました。
インターネット接続全てが繋がらないわけではなく「Googleだけ繋がる」とはなかなか奇妙な問題です。
ちなみにGoogle検索だけでなく、YouTubeや GmailなどGoogle関連のサービスは全て繋がる状況でした。
Googleだけに繋がる理由
Google系統のみ繋がる理由は簡単でした。
IPv4の接続が出来なくなっていました。
逆に言えば、IPv6の接続は生きていた。
GoogleのサービスはIPv6での接続が可能なので、IPv6だけが繋がる状況でも問題なくアクセスが可能です。なので、Googleだけがアクセスできたんですよね。
ちなみにこれはIPv6でアクセスできるサイトなら別にGoogle以外でも可能です(例えばCloudflareとか)。
日常的に開くサイトでIPv6で繋がるサイトがGoogleぐらいなので、Googleだけ繋がるように見えていただけなんですね。
IPv6とIPv4の接続確認
自分のインターネット環境でのIPv6通信とIPv4通信がそれぞれ生きているかどうかを確認する方法は色々ありますが、手っ取り早い方法を幾つか紹介しておきます。
IPv6とIPv4それぞれにpingを打つ
普段コマンドラインを使っている人ならこれが一番手っ取り早いと思います。
テキトーにコマンドプロンプトあたりを開いて、以下の2種類のコマンドを打つだけです。
IPv6確認:
ping 2606:4700:4700::1111
IPv4確認:
ping 1.1.1.1
2606:4700:4700::1111
と1.1.1.1
はそれぞれCloudflareのパブリックDNSのIPアドレスで、何も問題がなければ普通は繋がります。
そこにpingを打って、もしエラーやタイムアウトになってしまった場合、それは対応する通信が機能していないことになります(例えば、1.1.1.1
にpingを打ってタイムアウトした場合、IPv4が機能していないことになります。)
適当なページを開く
GoogleやCloudflareといった「IPv6で繋がるサイト」を使えば、自分のIPv6/IPv4の状態を確認することが可能です。
コマンドを普段使わない人は、こっちの方が簡単かもしれません。
IPv6だけが生きている場合、先述の通りGoogleやCloudflareには繋がり、AmazonやGitHubなどには繋がりません。
逆にGoogleにもCloudflareにも繋がらない時は、IPv6もIPv4も機能していないことになります。
問題の原因がPCなのかルーターなのかを見抜く
ということで、先のチェックで今の僕はIPv6だけが生きている状態だと分かりました。
これでは大半のサイトに接続できないため困ります。IPv4での接続が出来るようにしなければならない。
ここで1つ考えなければならないことがあります。それは、「ルーターそのものの問題なのか、PC固有の問題なのか」ということです。
IPv6にしか接続できなくなっているのがPCなのか、ルーターなのかを見極める必要があります。
この判定は割と簡単で、他の端末でのアクセスができていればPC固有の問題だと分かります。
僕は数台ある他のPCおよびスマホ・タブレット全てで問題なくIPv4での接続が出来ていたため、今回のケースがPC固有の問題であると分かりました。
ちなみに問題がルーターの場合は、機器の故障でない限り基本的に2〜3回再起動すれば元に戻ります。(1度の再起動では戻らないルータが多々あるので、念のため複数回再起動してみてください)
PCのローカルIP割り当てが原因
「繋がらないのがPC固有の問題」であり、「IPv4だけが繋がらない」となると、原因は大抵「ローカルIPv4の割り当て」です。
より正確に言えば、「割り当てられたローカルIPv4アドレスの競合」が原因です。
僕は自分のPCのローカルIPアドレスは基本的に固定しているんですが、プリンターやタブレット、数多のゲーム機(特にDS/3DSは大量に持っているので、いちいち一台ごとに固定していられません)など固定せずにDHCPに任せている端末もLAN内に複数あります。
この「自分で割り当てた番号」と「DHCPで自動的に割り当てられた番号」とが競合してしまっていた。
そう、ブレーカーが落ちてルーターが再起動した時に再割り振りが行われ、固定に使っていた番号が割り振りに使われてしまったというのが今回の問題の根本でした。
同じIPアドレスを複数の異なる端末が持ってしまっていたために、うまく名前解決が出来ず通信に失敗していたというオチでした。
普段はルータを再起動した時もDHCPによる割り振りは固定番号を勝手に避けてくれていたので別に問題なく運用できていたんですが、こういうパターンも起こり得るんですね。勉強になりました。
問題の解決と対策
ということで先述の通り、原因が「IPv4アドレスの競合」と分かりました。
分かってしまえば解決は簡単です。固定で当てていたIPアドレスを一旦自動割り振りに切り変える。
そうすれば、問題なくIPv4のアクセスが出来る状態に戻ります。
ただし、やっぱりローカルのIPv4のアドレスは固定しておきたい。LANのスマホからPCで立てた開発用サーバにローカルのIPv4アドレスで接続することも多いわけで、接続のたびにいちいち接続先PCの自動割り振りのIPアドレスを確認するのは苦行です。
ということで今後は、「ローカルIPアドレスの固定には、200番台の番号を使う」という対策をとっておくのが無難です。
DHCPによるローカルIPの割り振りは「若い番号から行なわれる」ので、絶対に割り振りで使われないような番号で固定するようにしましょう。
LAN内に200機以上の端末がある方は別ですが、普通の人なら200番台で固定しておけばまず競合はしません。
僕もメインPCのIPアドレスを192.168.1.222
に固定しました。これでもう大丈夫。
(IPアドレスの仕組みなんかについて理解したい人は、以下の書籍がオススメです。図解が多いのでわかりやすく、また使われている表現も平易なため初級者の方でも理解しやすいと思います。)
おわりに
ということで今回は、WindowsのPCにて「Googleだけが繋がるが、他のインターネット接続ができない」という問題を解決しました。
意外な機器(特に、3DSやswitchなどのゲーム機)が知らないうちにDHCPによってIPアドレスを持ってて競合を起こしていたりする場合があるので、皆さんもネット接続がうまくいかない時は固定IPを一旦自動割り振りに変えてみる癖を付けておくといいと思います。
そして、IPアドレスを固定するときは、若い番号で固定してはいけない(教訓)
ということで今回の記事はここまでにしたいと思います。
ここまで読んでいただき、ありがとうございました!
2023/01/26 つくたろう
カテゴリ: