ICMP の問題を特定して修正する

このチュートリアルでは、接続テストを繰り返し使用して、ネットワーク接続性の問題を特定および修正する方法を示します。

この場合、Virtual Private Cloud(VPC)のファイアウォール ルールによって、1 つの仮想マシン(VM)インスタンスの外部 IP アドレスが ICMP プロトコルを使用して別の VM の外部 IP アドレスに ping ができないようになっています。

VM から VM への通信の問題は、ネットワーク接続の問題であることが多いため、接続テストで考えられる構成の問題に関する情報を確認し、それを修正できます。その後、接続テストを再度実施して、修正を確認できます。

概要

この例では、VPC ネットワークの同じサブネットに 2 つの VM インスタンスが構成されています。両方の VM に外部 IP アドレスがあります。vm1 から vm2 の外部 IP アドレスに ping パケットを送信してそれらの間の接続をテストすると、ping は機能しません。

2 つの VM 間の拒否された ping のトラブルシューティング
2 つの VM 間の拒否された ping のトラブルシューティング

始める前に

チュートリアルを開始する前に、接続テストを作成して実行するにある Before you begin セクションのすべての手順を行ってください。

VPC ファイアウォール ルールの仕組みの確認にも役立ちます。

ネットワーク リソースを構成する

このセクションでは、テストパスで Google Cloud リソースを構成します。

VPC ネットワークを構成する

VM を含む既存のネットワークとサブネットを使用するか、新しいネットワークとサブネットを作成できます。

2 つの VM インスタンスを構成する

  1. このチュートリアルの VM インスタンスは、同じ VPC ネットワークとサブネットに配置されています。既存の VM を使用するか、新しい VM を作成できます。
  2. VM の作成時に、vm1vm2 に外部 IP アドレスを割り当てます。アドレスは後で使用するため、メモしておきます。

ファイアウォール ルール default-deny-outgoing-ping の作成

VM を作成したら、default-deny-outgoing-ping という下り(外向き)VPC ファイアウォール ルールを作成します。このルールは、vm1 から vm2 への ICMP プロトコルを拒否します。ネットワーク内に、このルールをオーバーライドする既存のファイアウォール ルールがないことを確認してください。さらに、階層型ファイアウォール ポリシー ルールでこのルールがオーバーライドされないようにします。詳細については、階層型ファイアウォール ポリシーの概要をご覧ください。

この VPC ファイアウォール ルールを構成するには、次の表の値を使用します。

VPC ファイアウォール ルール フィールド
名前 default-deny-outgoing-ping
ネットワーク VM が配置されている VPC ネットワークを使用します。
優先度 1000
トラフィックの方向 下り(外向き)
一致したときのアクション 拒否
ターゲット [ネットワーク上のすべてのインスタンス] を選択します。
送信先 IP 範囲 vm2 の外部 IP アドレスを使用します。
指定したプロトコルとポート [その他のプロトコル] チェックボックスをオンにして、icmp を入力します。

ファイアウォール ルール default-deny-ingress-to-vm2 の作成

vm2 の外部 IP アドレスへの ICMP プロトコルを拒否するには、default-deny-ingress-to-vm2 という名前の上り(内向き)のファイアウォール ルールを作成します。ネットワーク内に、このルールをオーバーライドする既存のファイアウォール ルールがないことを確認してください。さらに、階層型ファイアウォール ポリシー ルールでこのルールがオーバーライドされないようにします。詳細については、階層型ファイアウォール ポリシーの概要をご覧ください。

次の表の値を使用してルールを作成します。

VPC ファイアウォール ルール フィールド
名前 default-deny-ingress-to-vm2
ネットワーク VM が配置されている VPC ネットワークを使用します。
優先度 65534
トラフィックの方向 上り
一致したときのアクション 拒否
ターゲット [ネットワーク上のすべてのインスタンス] を選択します。
ソース IP の範囲 vm1 の外部 IP アドレスを使用します。
指定したプロトコルとポート [その他のプロトコル] チェックボックスをオンにして、icmp を入力します。

最初のトレースを実行する

Google Cloud Console を使用して、トレースを行って ICMP(ping)パケットが vm1 から vm2 の外部 IP アドレスへと移動できるかどうかを調べます。このトレースを行うと、接続テストは、ファイアウォール ルール default-deny-outgoing-ping が原因でトレース パケットが削除されたことを通知します。

トレースの入力値については、次の表を使用してください。

フィールド名
プロトコル icmp
送信元 IP アドレス

vm1 の外部 IP アドレスを使用します。

[これは GCP で使用される IP アドレスです] チェックボックスを選択します。

送信元 IP アドレスまたはサービス プロジェクト vm1 のプロジェクト名を確認します。
宛先 IP アドレス

vm2 の外部 IP アドレスを使用します。

[これは GCP で使用される IP アドレスです] チェックボックスを選択します。

宛先 IP アドレスまたはサービス プロジェクト vm2 のプロジェクト名を確認します。

次の Google Cloud コンソール スナップショットは、トレース パケットがファイアウォール ルール default-deny-outgoing-ping によって削除されたことを示しています。

拒否された送信 ping を含むトレースのコンソール UI スナップショット
拒否された送信 ping を含むトレースのコンソール UI スナップショット

ファイアウォール ルール default-deny-outgoing-ping を無効にして 2 番目のトレースを実行する

  1. vm2 への ping テストを許可するには、VPC ファイアウォール ルール default-deny-outgoing-ping一時的に無効にします。
  2. 構成が正常に更新されたら、トレースを再度実施します。
  3. トレースは再び失敗します。このファイアウォール ルールにより、vm2 の外部 IP アドレスへの上り(内向き)ICMP パケットが拒否されたため、パケットは削除されました。

次の Google Cloud コンソール スナップショットは、受信トレース パケットは Cloud NAT は通過できる一方、前述のファイアウォール ルールが原因で vm2 には到達できないことを示しています。

vm2 に到達できないトレースのコンソール UI スナップショット
vm2 に到達できないトレースの Console UI スナップショット

ファイアウォール ルール allow-ping-from-known-ranges を作成する

vm2 の外部 IP アドレスへの進入を許可するには、allow-ping-from-known-ranges という新しい VPC ファイアウォール ルールを構成します。VPC ネットワークへのすべての上り(内向き)の ICMP パケットを許可するのはセキュリティ リスクがあるため、vm2 の外部 IP アドレスへの ICMP パケットの送信を許可する少数のソース範囲のみを指定します。

このチュートリアルの目的上、このソース範囲には vm1 の外部 IP アドレスのみが含まれますが、既存のファイアウォール ルールまたはルールの優先度をチェックして、この新しいルールをオーバーライドしないことを確認してください。さらに、階層型ファイアウォール ポリシー ルールでこのルールがオーバーライドされないようにします。詳細については、階層型ファイアウォール ポリシーの概要をご覧ください。

次の表の値を使用してルールを構成します。

VPC ファイアウォール ルール フィールド
名前 allow-ping-from-known-ranges
ネットワーク 両方の VM を含むネットワークの名前を使用します。
優先度 1000
トラフィックの方向 上り
一致したときのアクション 許可
ターゲット [ネットワーク上のすべてのインスタンス] を選択します。
ソースフィルタ IP 範囲
ソース IP の範囲 vm1 の外部 IP アドレスを使用します。
指定したプロトコルとポート [その他のプロトコル] チェックボックスをオンにして、icmp を入力します。

3 番目のトレースを実行する

allow-ping-from-known-ranges ファイアウォール ルールを作成した後、vm2 の外部 IP アドレスを再度 ping します。ping が機能し、問題は解決します。

2 つの VM 間の許可された ping。
2 つの VM 間の許可された ping

この結果を確認するには、新しいファイアウォール ルールを含む更新された構成に対して、別のトレースを行います。今回、接続テストは、パケットが vm2 に配信されたことと、一致したファイアウォール ルール allow-ping-from-known-ranges が外部 IP アドレス vm2 への受信 ICMP パケットを許可することを通知します。

vm2 への正常なトレースの Console UI スナップショット。
vm2 への正常なトレースの Console UI スナップショット

クリーンアップ

必要に応じて、このチュートリアル用に作成した次の Google Cloud リソースを無効にするか削除できます。これらが本番環境リソースではないことを確認してください。リソースを無効にする場合は、Compute Engine の料金ページすべてのネットワーキングの料金ページをチェックして、リソースに対して課金されないことを確認してください。

  1. ファイアウォール ルールを無効化または削除します。
  2. VM を無効化または削除します。
  3. VPC サブネットを削除します。
  4. VPC ネットワークを削除します。

次のステップ