このチュートリアルでは、接続テストを繰り返し使用して、ネットワーク接続性の問題を特定および修正する方法を示します。
この場合、Virtual Private Cloud(VPC)のファイアウォール ルールによって、1 つの仮想マシン(VM)インスタンスの外部 IP アドレスが ICMP プロトコルを使用して別の VM の外部 IP アドレスに ping ができないようになっています。
VM から VM への通信の問題は、ネットワーク接続の問題であることが多いため、接続テストで考えられる構成の問題に関する情報を確認し、それを修正できます。その後、接続テストを再度実施して、修正を確認できます。
概要
この例では、VPC ネットワークの同じサブネットに 2 つの VM インスタンスが構成されています。両方の VM に外部 IP アドレスがあります。vm1
から vm2
の外部 IP アドレスに ping パケットを送信してそれらの間の接続をテストすると、ping は機能しません。
始める前に
チュートリアルを開始する前に、接続テストを作成して実行するにある Before you begin
セクションのすべての手順を行ってください。
VPC ファイアウォール ルールの仕組みの確認にも役立ちます。
ネットワーク リソースを構成する
このセクションでは、テストパスで Google Cloud リソースを構成します。
VPC ネットワークを構成する
VM を含む既存のネットワークとサブネットを使用するか、新しいネットワークとサブネットを作成できます。
2 つの VM インスタンスを構成する
- このチュートリアルの VM インスタンスは、同じ VPC ネットワークとサブネットに配置されています。既存の VM を使用するか、新しい VM を作成できます。
- VM の作成時に、
vm1
とvm2
に外部 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 コンソールを使用して、トレースを行って ICMP(ping)パケットが vm1
から vm2
の外部 IP アドレスへと移動できるかどうかを調べます。このトレースを行うと、接続テストは、ファイアウォール ルール default-deny-outgoing-ping
が原因でトレース パケットが削除されたことを通知します。
トレースの入力値については、次の表を使用してください。
フィールド名 | 値 |
---|---|
プロトコル | icmp |
送信元 IP アドレス |
[これは GCP で使用される IP アドレスです] チェックボックスを選択します。 |
送信元 IP アドレスまたはサービス プロジェクト | vm1 のプロジェクト名を確認します。 |
宛先 IP アドレス |
[これは GCP で使用される IP アドレスです] チェックボックスを選択します。 |
宛先 IP アドレスまたはサービス プロジェクト | vm2 のプロジェクト名を確認します。 |
次の Google Cloud コンソール スナップショットは、トレース パケットがファイアウォール ルール default-deny-outgoing-ping
によって削除されたことを示しています。
ファイアウォール ルール default-deny-outgoing-ping
を無効にした後、2 番目のトレースを実行します
vm2
への ping テストを許可するには、ファイアウォール ルールdefault-deny-outgoing-ping
を一時的に無効化します。- 構成が正常に更新されたら、トレースを再度実施します。
- トレースは再び失敗します。このファイアウォール ルールにより、
vm2
の外部 IP アドレスへの上り(内向き)ICMP パケットが拒否されたため、パケットは削除されました。
次の Google Cloud コンソール スナップショットは、受信トレース パケットは Cloud NAT は通過できる一方、前述のファイアウォール ルールが原因で vm2
には到達できないことを示しています。
ファイアウォール ルール 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 が機能し、問題は解決します。
この結果を確認するには、新しいファイアウォール ルールを含む更新された構成に対して、別のトレースを行います。今回、接続テストは、パケットが vm2
に配信されたことと、一致したファイアウォール ルール allow-ping-from-known-ranges
が外部 IP アドレス vm2
への受信 ICMP パケットを許可することを通知します。
クリーンアップ
必要に応じて、このチュートリアル用に作成した次の Google Cloud リソースを無効にするか削除できます。これらが本番環境リソースではないことを確認してください。リソースを無効にする場合は、Compute Engine の料金ページとすべてのネットワーキングの料金ページをチェックして、リソースに対して課金されないことを確認してください。