第4章
通信を調べる方法と安全性
基本的なコマンドとブラウザの開発者ツールを使い、通信トラブルを安全に切り分けます。
この章で学ぶこと
- ネットワーク障害を段階的に切り分ける方法
ipconfig、ping、nslookup、tracert、curlの役割- 調査結果を読むときの注意点
- 公共Wi-Fiや個人情報を扱うときの基本
症状から順番に切り分ける
「Webページが開かない」という症状だけでは、原因は分かりません。設定を無計画に変更せず、通信の流れに沿って確認します。
- 範囲を確認する:一つのページだけか、すべてのページか。ほかの端末でも起きるか
- 接続を確認する:Wi-FiやLANが接続済みか。機内モードになっていないか
- 端末の設定を確認する:IPアドレス、デフォルトゲートウェイ、DNSが設定されているか
- 名前解決を確認する:ドメイン名からIPアドレスを取得できるか
- 経路を確認する:途中まで通信できるか
- Webの応答を確認する:HTTPのステータスやブラウザのエラーは何か
確認した時刻、対象、操作、結果を記録すると、同じ確認の繰り返しを防げます。学校や職場のネットワークでは、自分で設定を変える前に管理者へ相談してください。
端末のネットワーク設定を表示する
WindowsのPowerShellまたはコマンドプロンプトでは、次のコマンドで設定を確認できます。
ipconfig
詳しい情報が必要な場合はipconfig /allを使います。IPv4/IPv6アドレス、デフォルトゲートウェイ、DNSサーバーなどを確認できます。
macOSやLinuxでは環境によってコマンドが異なりますが、ip addr、ifconfig、networksetupなどが使われます。オプションはOSのヘルプで確認してください。
相手から応答があるか確認する
pingはICMPのメッセージを送り、応答時間や損失を確認する道具です。
ping example.com
応答が返れば、その時点で名前解決と一定範囲のIP通信ができていると考えられます。ただし、サーバーやネットワークがICMPを拒否している場合もあります。pingに応答しないことだけで、相手が停止しているとは断定できません。
DNSを確認する
nslookupを使うと、ドメイン名に対応するDNSの情報を問い合わせられます。
nslookup example.com
結果には問い合わせに利用したDNSサーバーと、取得したアドレスなどが表示されます。複数のアドレスが返ることや、利用場所によって結果が異なることも正常です。大規模なサービスは、負荷分散や利用者に近い拠点への案内を行うためです。
経路を確認する
Windowsのtracertは、宛先までに通過するルーターを順番に調べます。
tracert example.com
macOSやLinuxでは一般にtracerouteを使います。途中に*が表示されても、その地点より先への通信が必ず止まっているとは限りません。途中の機器が調査用の応答だけを返さない場合があるため、最終的なサービスへの接続結果と合わせて判断します。
HTTPの応答を確認する
curlは、URLへリクエストを送り、応答を確認できるコマンドです。ヘッダーだけを確認する例は次のとおりです。
curl.exe -I https://example.com/
PowerShellのバージョンによってはcurlが別のコマンドの別名になっていることがあるため、Windowsではcurl.exeと書くと実行するプログラムを明確にできます。
200、301、404などのステータス、Content-Type、リダイレクト先などを確認します。実際のサービスに大量のリクエストを送ってはいけません。動作確認は必要最小限にし、利用規約や管理者の指示に従ってください。
ブラウザで調べる
ブラウザの開発者ツールにあるNetworkタブでは、ページが行った通信を時系列で確認できます。
- どのURLへリクエストしたか
- DNS、接続、応答待ち、ダウンロードにかかった時間
- HTTPメソッドとステータスコード
- リクエストとレスポンスのヘッダー
- 転送したデータ量とキャッシュの利用
コンソールにエラーが出ていても、最初の原因とは限りません。失敗したリクエストを選び、URL、ステータス、応答内容を確認します。
安全にネットワークを利用する
ネットワークの知識は、安全な利用にも役立ちます。
- OSとブラウザを更新し、既知の問題を修正する
- URLのドメイン名とHTTPS接続を確認してから情報を送信する
- パスワードを使い回さず、可能なら多要素認証を利用する
- 公共の端末ではパスワードを保存せず、利用後にログアウトする
- 信頼できないWi-Fiでは、警告を無視して証明書を受け入れない
- ルーターの管理用パスワードを初期値のまま使わない
VPNを利用すると、端末からVPNの接続先までの通信を保護できますが、すべての危険をなくすものではありません。接続先のWebサイトが安全か、入力した情報が適切に扱われるかは別に確認が必要です。
総合演習
自分が管理している、または調査の許可を得ているWebページを一つ選び、次の調査記録を作ってください。秘密情報は記録に貼り付けません。
- 調査日時とURL
nslookupで得た情報pingの結果と、その結果だけでは判断できないことcurl.exe -Iまたは開発者ツールで確認したステータスコードとContent-Type- HTML以外に読み込まれたファイルを3種類
- 問題が起きたと仮定した場合の切り分け順序
記録例
症状:特定のページだけが開かない
確認1:ほかのサイトは開く → 端末全体の接続障害ではなさそう
確認2:DNSでアドレスを取得できる → 名前解決は動作している
確認3:HTTP 404が返る → サーバーには到達しているが対象が見つからない
次の確認:URLの入力、リンク先、ページの公開状態を確認する
確認問題
pingに失敗したとき、相手のサーバーが停止していると断定できないのはなぜですか。nslookupとcurlでは、確認している層や対象がどのように違いますか。- 障害が一つの端末だけで起きる場合と、同じネットワークの全端末で起きる場合では、最初に疑う範囲はどう変わりますか。
- HTTPSとVPNがあっても、利用者が確認すべきことを一つ挙げてください。
まとめ
ネットワークの問題は、発生範囲、端末の接続、IP、DNS、経路、HTTPの順に確認すると整理しやすくなります。コマンドの成功や失敗だけで結論を出さず、それぞれが何を測っているかを意識しましょう。設定や調査は、自分が管理する端末と許可されたネットワークの範囲で行います。