問題点ターミナルに「Request timed out」というメッセージが延々と表示されることほど、プロジェクトを停滞させるものはありません。ローカルサーバーやAWS VPC内のVMに接続しようとしている場合でも、ターゲットに関わらず、コンピュータはICMP Echo Requestを送信していますが、返答が全く返ってきていない状態です。Windowsは通常、諦めるまでに4,000ミリ秒(4秒)待機します。タイムアウトは必ずしもホストがダウンしていることを意味しません。多くの場合、ホストは稼働していますが、単に無視されているか、あなたのIPへの戻りパスが見つからない状態にあります。
Pingが失敗する理由- ファイアウォールによる遮断: 送信先ホストのファイアウォール(Windows Defenderやiptablesなど)がICMPトラフィックを破棄するように設定されている。- 厳格なセキュリティグループ: AWSやAzureにおいて、セキュリティグループでSSHやHTTPは許可されていても、pingで使用されるICMPプロトコルがブロックされている。- 非対称ルーティング: パケットはサーバーに到達していますが、サーバー側が特定のサブネットにリプライを返すための有効なルートを持っていない。- サブネットの入力ミス: サブネットマスクのわずかなミス(255.255.255.0ではなく255.255.255.128を使用するなど)により、マシンが異なる論理ネットワークに配置されてしまう。- MTUの不一致: パケットがVPNやGREトンネルに対して大きすぎ、断片化(フラグメンテーション)できないために破棄される。## ステップバイステップのデバッグ設定をランダムに変更し始めるのはやめましょう。接続がどこで切れているかを正確に特定するために、以下の論理的な手順に従ってください。
1. ローカルスタックのテストループバックアドレスにpingを送信して、自身のネットワークカードが機能しているか確認します。これが失敗する場合、OSのネットワークドライバに深刻な問題があります。
ping 127.0.0.1
2. ゲートウェイへの到達確認ルーターと通信できますか?Windowsならipconfig、Linuxならip routeを使用してゲートウェイのIPを確認してください。通常、192.168.1.1や10.0.0.1のようになっています。
ping 192.168.1.1
3. Tracerouteで経路を確認するWindowsではtracert、Linuxではtracerouteを使用して、すべてのホップを確認します。トレースで3つのホップが成功した後にアスタリスク(* * *)の羅列が表示される場合、パケットを破棄している特定のルーターやファイアウォールを特定できたことになります。
tracert 10.0.5.20
実証済みの解決策### 解決策1:WindowsファイアウォールでICMPを許可するWindowsはセキュリティ上の理由から、デフォルトで受信pingをブロックします。Windows Serverにpingを送信している場合、ほぼ間違いなくこれが原因です。ファイアウォール全体を無効にする必要はありません。特定のルールを有効にするだけです。
- セキュリティが強化されたWindows Defenderファイアウォールを開きます。- 左側のサイドバーで受信の規則を選択します。- ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)を探します。- 右クリックして規則の有効化を選択します。より素早く修正するには、管理者として以下のPowerShellコマンドを実行してください。
netsh advfirewall firewall add rule name="Allow ICMPv4 Inbound" protocol=icmpv4:8,any dir=in action=allow
解決策2:クラウドのセキュリティグループを更新する(AWS/Azure)クラウドインスタンスはデフォルトでロックダウンされています。サーバーにSSH(ポート22)で接続できても、ICMPが明示的に許可されていない限りpingは失敗します。AWSコンソールでインスタンスのセキュリティグループに移動し、インバウンドルールを追加します。
- タイプ: すべての ICMP - IPv4- プロトコル: ICMP- ポート範囲: すべて- 送信元: カスタム(自身のIPアドレスの後に/32を付けて入力)### 解決策3:サブネットマスクの誤りを修正するホストAが192.168.1.5/24、ホストBが192.168.1.130/25の場合、これらは直接通信できません。ホストBはホストAが別のネットワークにあると判断し、リプライをゲートウェイに送信してしまいます。CIDRの範囲を再確認するために、ToolCraftのサブネット計算機を使用することをお勧めします。使用可能なIP範囲の開始点と終了点を視覚化するのに役立ちます。
解決策4:MTUサイズを調整するVPNを使用する場合、追加のヘッダーによってパケットが標準の1500バイト制限を超えることがあります。パケットサイズを強制的に小さくしてテストしてください。Windowsでは-lフラグを使用します。
ping -l 1300 10.0.5.20
1300バイトのpingは通るが標準サイズが通らない場合は、ネットワークインターフェースのMTUを1400または1450程度に下げる必要があります。
結果修正が成功すると、タイムアウトの代わりにリプライが連続して表示されるようになります。ローカルネットワークなら50ms未満、リージョンをまたぐクラウド接続なら150ms未満の安定したレイテンシが表示されるはずです。
Pinging 10.0.5.20 with 32 bytes of data:
Reply from 10.0.5.20: bytes=32 time=12ms TTL=64
Reply from 10.0.5.20: bytes=32 time=11ms TTL=64

