はじめに
先日、自宅のブレーカーが落ちるというハプニングに見舞われました。
復旧後、Wi-Fi接続のスマホは問題なくネットに繋がるのに、有線LAN接続のWindows PCだけがインターネットに繋がらないという現象が発生。
ping 8.8.8.8 は通るのに google.com は見つからないという奇妙な挙動に対し、IPv6無効化やDNS設定、ネットワークリセットなどあらゆる手を尽くしましたが改善せず。
最終的に判明した原因は、 VPNソフトの「キルスイッチ」 という意外なものでした。
同じような現象でハマる人を減らすため、トラブルシューティングの記録を残します。
環境
- OS: Windows 11
- 接続: 有線LAN (ルーター直結)
- 回線: フレッツ光 (IPv4/IPv6)
- 常駐アプリ: Proton VPN (ここが重要)
発生した症状
ブレーカー復旧後、PCを起動するとタスクバーのネットワークアイコンが「地球儀マーク(インターネットなし)」の状態に。
1. 状況確認
まず基本的な疎通確認を行いました。
# 1. ゲートウェイへの疎通確認 -> OK
ping 192.168.1.1
# 2. GoogleのパブリックDNSへのIP直接Ping -> OK
ping 8.8.8.8
# 結果: バイト数=32 時間=4ms TTL=118 (正常に通る!)
# 3. ドメイン名のPing -> NG
ping google.com
# 結果: 要求ではホスト google.com が見つかりませんでした。
2. 不可解な点
-
インターネットへの経路自体は生きている (
ping 8.8.8.8が通るため)。 -
DNSの名前解決だけが失敗している (
google.comが解決できない)。 - スマホ(Wi-Fi)は問題ないため、ルーターや回線側の問題ではない。
試したこと(効果がなかったもの)
「名前解決ができない=DNS周りの不整合」と推測し、以下の対策を行いましたが、すべて解決には至りませんでした。
- PC・ルーター・ONUの完全放電と再起動
-
DNSサーバーの手動設定
- GUIおよびCLIで
8.8.8.8/8.8.4.4を固定設定。
- GUIおよびCLIで
-
IPv6の無効化
- フレッツ光環境でよくある「IPv6の優先による不具合」を疑い、GUIとPowerShellで無効化。
Disable-NetAdapterBinding -Name "イーサネット" -ComponentID ms_tcpip6 -
ネットワークスタックの完全リセット
- 以下のコマンドを実行し、工場出荷状態へ初期化。
netsh winsock reset netsh int ip reset ipconfig /flushdns
これだけやっても、相変わらず ping 8.8.8.8 は通るのに nslookup やブラウザ閲覧は全滅でした。
原因の特定
トラブルシューティングの中で、PCにインストールされておりブレーカーが落ちる際にも起動していた VPNソフト の存在を思い出しました。
VPNの「キルスイッチ」とは?
VPN接続が予期せず切断された際、生身のIPアドレスで通信してしまうのを防ぐために、 「VPNが確立していない間は全ての通信を遮断する」 というセキュリティ機能です。
何が起きていたのか
- ブレーカー落ち(停電)により、PCが強制終了する。
- Proton VPNは「正常な終了処理(キルスイッチの解除)」を行えないまま落ちる。
- Windowsのシステム設定内に「通信遮断ルール」が残存してしまう。
- PC再起動後、VPNアプリが未接続の状態でも、OSは頑なに通信をブロックし続ける。
- ※なぜかICMP (Ping) の一部だけは通ってしまっていたため、原因特定が遅れました。
解決策
原因は「VPNアプリの状態」と「OSのネットワーク設定」の不一致でした。
- VPNアプリを起動する。
-
一度VPNに接続し、その後「切断」する。
- または設定から「キルスイッチ (Kill Switch)」を明示的にオフにする。
- 解決しない場合は、VPNアプリ自体をアンインストールする。
これにより、OSに残っていた遮断ルールが解除され、嘘のようにインターネットが復旧しました。
まとめ・教訓
停電や強制終了の後に「ネットが繋がらない」かつ「Ping(IP指定)は通る」という奇妙な現象に遭遇したら、ルーターやDNS設定を疑う前に、VPNソフトのキルスイッチを疑え。
なぜ再起動しても直らなかったのか?
セキュリティ重視のVPNソフトは、PC起動直後の「VPNアプリが立ち上がるまでの隙間時間」に通信が漏れるのを防ぐため、OSレベル(WFP: Windows Filtering Platformなど)に恒久的なブロックルールを書き込む仕様になっていることが多いようです。そのため、PCを再起動してもルールは解除されません。
物理的な故障を疑う前に、常駐ソフトの影響を確認することの重要性を再認識しました。
参考文献・コマンドメモ
今回使用した、Windowsのネットワーク設定をCLIで操作・確認するPowerShellコマンドです。
# DNS設定の確認
Get-DnsClientServerAddress -InterfaceAlias "イーサネット" -AddressFamily IPv4
# DNSを自動取得に戻す
Set-DnsClientServerAddress -InterfaceAlias "イーサネット" -ResetServerAddresses
# IPv6の無効化/有効化
Disable-NetAdapterBinding -Name "イーサネット" -ComponentID ms_tcpip6
Enable-NetAdapterBinding -Name "イーサネット" -ComponentID ms_tcpip6
# DNSキャッシュのクリア
Clear-DnsClientCache