第4章

通信を調べる方法と安全性

基本的なコマンドとブラウザの開発者ツールを使い、通信トラブルを安全に切り分けます。

この章で学ぶこと

  • ネットワーク障害を段階的に切り分ける方法
  • ipconfig、ping、nslookup、tracert、curlの役割
  • 調査結果を読むときの注意点
  • 公共Wi-Fiや個人情報を扱うときの基本

症状から順番に切り分ける

「Webページが開かない」という症状だけでは、原因は分かりません。設定を無計画に変更せず、通信の流れに沿って確認します。

  1. 範囲を確認する:一つのページだけか、すべてのページか。ほかの端末でも起きるか
  2. 接続を確認する:Wi-FiやLANが接続済みか。機内モードになっていないか
  3. 端末の設定を確認する:IPアドレス、デフォルトゲートウェイ、DNSが設定されているか
  4. 名前解決を確認する:ドメイン名からIPアドレスを取得できるか
  5. 経路を確認する:途中まで通信できるか
  6. 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ページを一つ選び、次の調査記録を作ってください。秘密情報は記録に貼り付けません。

  1. 調査日時とURL
  2. nslookupで得た情報
  3. pingの結果と、その結果だけでは判断できないこと
  4. curl.exe -Iまたは開発者ツールで確認したステータスコードとContent-Type
  5. HTML以外に読み込まれたファイルを3種類
  6. 問題が起きたと仮定した場合の切り分け順序

記録例

症状:特定のページだけが開かない
確認1:ほかのサイトは開く → 端末全体の接続障害ではなさそう
確認2:DNSでアドレスを取得できる → 名前解決は動作している
確認3:HTTP 404が返る → サーバーには到達しているが対象が見つからない
次の確認:URLの入力、リンク先、ページの公開状態を確認する

確認問題

  1. pingに失敗したとき、相手のサーバーが停止していると断定できないのはなぜですか。
  2. nslookupとcurlでは、確認している層や対象がどのように違いますか。
  3. 障害が一つの端末だけで起きる場合と、同じネットワークの全端末で起きる場合では、最初に疑う範囲はどう変わりますか。
  4. HTTPSとVPNがあっても、利用者が確認すべきことを一つ挙げてください。

まとめ

ネットワークの問題は、発生範囲、端末の接続、IP、DNS、経路、HTTPの順に確認すると整理しやすくなります。コマンドの成功や失敗だけで結論を出さず、それぞれが何を測っているかを意識しましょう。設定や調査は、自分が管理する端末と許可されたネットワークの範囲で行います。