上り(内向き)トラフィックを有効にするグローバル ネットワーク ファイアウォール ポリシーを構成する


複数のサブネットを持つカスタム Virtual Private Cloud(VPC)ネットワークでは、デフォルトで下り(外向き)トラフィックは許可されますが、上り(内向き)トラフィックは拒否されます。上り(内向き)トラフィックを有効にして、異なるサブネット内の VM インスタンスが相互に通信できるようにするには、VPC ネットワークの Cloud Next Generation Firewall で、サブネットの特定の IP アドレス範囲からの上り(内向き)トラフィックを許可するグローバル ネットワーク ファイアウォール ポリシーを作成します。

このチュートリアルでは、カスタム VPC ネットワーク内の VM サブネット間の内部トラフィックを許可するようにグローバル ネットワーク ファイアウォール ポリシーを構成する方法について説明します。

目標

このチュートリアルでは、次のタスクを行う方法を説明します。

  • 2 つのサブネットを持つカスタム VPC ネットワークを作成する。
  • VPC ネットワークの別々のサブネットに、外部 IP アドレスを持たない 2 つの Linux VM インスタンス(クライアント VM とサーバー VM)を作成する。
  • ソフトウェア パッケージをダウンロードするためのベスト プラクティスとして、Cloud Router と Cloud NAT ゲートウェイを作成する。
  • Apache サーバーをサーバー VM にインストールする。
  • 次のルールを使用してグローバル ネットワーク ファイアウォール ポリシーを作成する。
    • 任意の宛先への下り(外向き)トラフィックを許可する。
    • ファイアウォール ロギングを有効にする。
    • Identity-Aware Proxy(IAP)を使用して VM への SSH 接続を許可する。
    • クライアント VM が Apache サーバーを実行しているサーバー VM に接続できるようにする。
  • 接続をテストする。

次の図は、グローバル ネットワーク ファイアウォール ポリシーで内部の上り(内向き)トラフィックが許可された後の、カスタム VPC ネットワークのサブネット間のトラフィックのフローを示しています。

カスタム VPC ネットワーク内のサブネットからの上り(内向き)トラフィックを許可するグローバル ネットワーク ファイアウォール ポリシー。
カスタム VPC ネットワーク内のサブネットからの上り(内向き)トラフィックを許可するグローバル ネットワーク ファイアウォール ポリシー(クリックして拡大)。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  6. プロジェクトで Compute Engine API を有効にします。
  7. Compute ネットワーク管理者roles/compute.networkAdmin)の Identity and Access Management ロールが付与されていることを確認します。
  8. コマンドラインから作業する場合は、Google Cloud CLI をインストールします。ツールのコンセプトとインストールについては、gcloud CLI の概要をご覧ください。

    注: Google Cloud CLI を初めて実行する場合は、まず gcloud init を実行して、gcloud CLI ディレクトリを初期化します。

サブネットを持つカスタム VPC ネットワークを作成する

このセクションでは、2 つの IPv4 サブネットを持つカスタムモードの VPC ネットワークを作成します。

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. [VPC ネットワークを作成] をクリックします。

  3. [名前] に「vpc-fw-rules」と入力します。

  4. [説明] に「VPC network for the firewall rules tutorial」と入力します。

  5. [サブネット作成モード] で [カスタム] を選択します。

  6. [新しいサブネット] セクションで、サブネットに次の構成パラメータを指定します。

    • 名前: subnet-fw-rules-server
    • リージョン: us-central1 (Iowa)
    • IPv4 範囲: 10.0.0.0/24
    • 限定公開の Google アクセス: オン
  7. [完了] をクリックします。

  8. [サブネットを追加] をクリックし、次の構成パラメータを指定します。

    • 名前: subnet-fw-rules-client
    • リージョン: us-central1 (Iowa)
    • IPv4 範囲: 192.168.10.0/24
    • 限定公開の Google アクセス: オン
  9. [完了] をクリックします。

  10. 下にスクロールして [作成] をクリックします。

gcloud

  1. VPC ネットワークを作成するには、次のコマンドを実行します。

    gcloud compute networks create vpc-fw-rules \
      --subnet-mode=custom \
      --description="VPC network for the firewall rules tutorial"
    
  2. [Cloud Shell の承認] ダイアログで、[承認] をクリックします。

  3. サブネットを作成するには、次のコマンドを実行します。

    gcloud compute networks subnets create subnet-fw-rules-server \
      --network=vpc-fw-rules \
      --region=us-central1 \
      --range=10.0.0.0/24 \
      --enable-private-ip-google-access
    
  4. 別のサブネットを作成するには、次のコマンドを実行します。

    gcloud compute networks subnets create subnet-fw-rules-client \
      --network=vpc-fw-rules \
      --region=us-central1 \
      --range=192.168.10.0/24 \
      --enable-private-ip-google-access
    

デフォルトでは、VPC ネットワークには 2 つの暗黙の IPv4 ルールがあります。

  • 宛先が 0.0.0.0/0 で、最も低い優先度(65535)の allow 下り(外向き)ルール。Google Cloud によってブロックされたトラフィックを除き、すべてのインスタンスが任意の宛先にトラフィックを送信できるようにします。
  • 送信元が 0.0.0.0/0 で、最も低い優先度(65535)の deny 上り(内向き)ルール。受信接続をブロックすることですべてのインスタンスを保護します。

詳細については、暗黙のルールをご覧ください。

クライアント VM とサーバー VM を作成する

このセクションでは、前のセクションで作成した VPC ネットワークのサブネットに、外部 IP アドレスを持たない 2 つの Linux VM を作成します。

サーバー VM を作成する

コンソール

サーバー VM を作成する手順は次のとおりです。

  1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

  2. [名前] に「vm-fw-rules-server」と入力します。

  3. [リージョン] で us-central1 (Iowa) を選択します。

  4. 下にスクロールして [詳細オプション] を開き、[ネットワーキング] を開きます。

  5. [ネットワーク インターフェース] セクションで、次の構成パラメータを指定します。

    • ネットワーク: vpc-fw-rules
    • サブネットワーク: subnet-fw-rules-server IPv4 (10.0.0.0/24)
    • 外部 IPv4 アドレス: なし
  6. [完了] をクリックします。

  7. [作成] をクリックします。

gcloud

サーバー VM を作成するには、次のコマンドを実行します。

gcloud compute instances create vm-fw-rules-server \
    --network=vpc-fw-rules \
    --zone=us-central1-a \
    --subnet=subnet-fw-rules-server \
    --stack-type=IPV4_ONLY \
    --no-address

クライアント VM を作成する

コンソール

クライアント VM を作成する手順は次のとおりです。

  1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

  2. [名前] に「vm-fw-rules-client」と入力します。

  3. [リージョン] で us-central1 (Iowa) を選択します。

  4. 下にスクロールして [詳細オプション] を開き、[ネットワーキング] を開きます。

  5. [ネットワーク インターフェース] セクションで、次の構成パラメータを指定します。

    • ネットワーク: vpc-fw-rules
    • サブネットワーク: subnet-fw-rules-client IPv4 (192.168.10.0/24)
    • 外部 IPv4 アドレス: なし
  6. [完了] をクリックします。

  7. [作成] をクリックします。

gcloud

次のコマンドを実行してクライアント VM を作成します。

gcloud compute instances create vm-fw-rules-client \
    --network=vpc-fw-rules \
    --zone=us-central1-a \
    --subnet=subnet-fw-rules-client \
    --stack-type=IPV4_ONLY \
    --no-address

Cloud Router と Cloud NAT ゲートウェイを作成する

前のセクションでは、パブリック IPv4 アドレスのない 2 つの Linux VM を作成しました。これらの VM が公共のインターネットにアクセスできるようにするため、Cloud Router と Cloud NAT ゲートウェイを作成します。

コンソール

  1. Google Cloud コンソールで、[Cloud NAT] ページに移動します。

    [Cloud NAT] に移動

  2. [開始] または [Cloud NAT ゲートウェイを作成] をクリックします。

  3. [ゲートウェイ名] に「gateway-fw-rules」と入力します。

  4. [NAT タイプ] で、[パブリック] を選択します。

  5. [Cloud Router の選択] セクションで、次の構成パラメータを指定します。

    • ネットワーク: vpc-fw-rules
    • リージョン: us-central1
    • Cloud Router: [新しいルーターを作成] を選択します。
      1. [名前] に「router-fw-rules」と入力します。
      2. [作成] をクリックします。
  6. [作成] をクリックします。

gcloud

  1. Cloud Router を作成するには、次のコマンドを実行します。

    gcloud compute routers create router-fw-rules \
      --network=vpc-fw-rules \
      --region=us-central1
    
  2. Cloud NAT ゲートウェイを作成するには、次のコマンドを実行します。

    gcloud compute routers nats create gateway-fw-rules \
      --router=router-fw-rules \
      --region=us-central1 \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges
    

グローバル ネットワーク ファイアウォール ポリシーを作成する

このセクションでは、次のものを使用してグローバル ネットワーク ファイアウォール ポリシーを作成します。

  • 0.0.0.0./0 を宛先とする下り(外向き)ルール。
  • ロギングを有効にします。ファイアウォール ルール ロギングを使用すると、ファイアウォール ルールの効果を監査、検証、分析できます。

コンソール

  1. Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. [ファイアウォール ポリシーを作成] をクリックします。

  3. [ポリシーの構成] セクションの [ポリシー名] に「fw-policy」と入力します。

  4. [デプロイのスコープ] で [グローバル] を選択し、[続行] をクリックします。

  5. ポリシーのルールを作成するには、[ルールを追加] セクションで [ルールを追加] をクリックします。

    1. [優先度] に「65534」と入力します。
    2. [トラフィックの方向] に [下り(外向き)] を選択します。
    3. [ログ] で [オン] を選択します。
    4. [ターゲット] セクションの [ターゲット タイプ] で、[ネットワーク上のすべてのインスタンス] を選択します。
    5. [送信先] セクションの [IP 範囲] に「0.0.0.0/0」と入力します。
    6. [プロトコルとポート] セクションで、[すべて許可] を選択します。
    7. [作成] をクリックします。
  6. [続行] をクリックします。

  7. VPC ネットワークをポリシーに関連付けるには、[ポリシーと VPC ネットワークの関連付け] セクションで [関連付け] をクリックします。

  8. [vpc-fw-rules] のチェックボックスをオンにして、[関連付け] をクリックします。

  9. [続行] をクリックします。

  10. [作成] をクリックします。

gcloud

  1. ファイアウォール ポリシーを作成するには、次のコマンドを実行します。

    gcloud compute network-firewall-policies create fw-policy \
        --global
    
  2. すべての宛先へのトラフィックを許可し、ログを有効にするファイアウォール ルールを作成するには、次のコマンドを実行します。

    gcloud compute network-firewall-policies rules create 65534 \
        --firewall-policy=fw-policy \
        --direction=EGRESS \
        --action=ALLOW \
        --dest-ip-ranges=0.0.0.0/0 \
        --layer4-configs=all \
        --global-firewall-policy \
        --enable-logging
    
  3. ファイアウォール ポリシーを VPC ネットワークに関連付けるには、次のコマンドを実行します。

    gcloud compute network-firewall-policies associations create \
        --firewall-policy=fw-policy \
        --network=vpc-fw-rules \
        --name=pol-association-fw-rules \
        --global-firewall-policy
    

IAP のファイアウォール ルールを追加する

前のセクションでは、外部 IP アドレスを持たない Linux VM を作成しました。このセクションでは、Identity-Aware Proxy(IAP)を有効にして、外部 IP アドレスを持たない VM インスタンスへの管理アクセスを許可します。

IAP に VM インスタンスへの接続を許可するには、次のファイアウォール ルールを作成します。

  • IAP を使用してアクセス可能にするすべての VM インスタンスに対して適用します。
  • IP 範囲 35.235.240.0/20 からの上り(内向き)トラフィックを許可します。この範囲には、IAP が TCP 転送に使用するすべての IP アドレスが含まれています。
  • IAP TCP 転送を使用してアクセス可能にするすべてのポートへの接続を許可します。たとえば、SSH のポート 22 と RDP のポート 3389 です。

コンソール

vpc-fw-rules ネットワーク内のすべての VM インスタンスへの RDP と SSH のアクセスを許可するには、次の操作を行います。

  1. Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. [ネットワーク ファイアウォール ポリシー] セクションで、[fw-policy] をクリックします。

  3. [ルールを作成] をクリックします。

  4. [優先度] に「500」と入力します。

  5. [トラフィックの方向] で [上り(内向き)] をオンにします。

  6. [ログ] で [オン] を選択します。

  7. [ターゲット] セクションの [ターゲット タイプ] で、[ネットワーク上のすべてのインスタンス] を選択します。

  8. [送信元] セクションの [IP 範囲] に「35.235.240.0/20」と入力します。

  9. [プロトコルとポート] セクションで、[指定したプロトコルとポート] を選択します。

  10. [TCP] チェックボックスをオンにし、[ポート] に「22」と「3389」をカンマで区切って入力します。

  11. [作成] をクリックします。

gcloud

vpc-fw-rules ネットワーク内のすべての VM インスタンスへの RDP および SSH アクセスを許可するには、次のコマンドを実行します。

gcloud compute network-firewall-policies rules create 500 \
    --firewall-policy=fw-policy \
    --direction=INGRESS \
    --action=ALLOW \
    --src-ip-ranges=35.235.240.0/20 \
    --global-firewall-policy \
    --layer4-configs tcp:22,tcp:3389 \
    --enable-logging

Apache サーバーをインストールする

このセクションでは、Apache サーバーをサーバー VM にインストールします。

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. vm-fw-rules-server VM の [接続] 列で [SSH] をクリックします。

  3. ブラウザでの SSH ダイアログで [承認] をクリックし、接続が確立されるのを待ちます。

  4. apache2 パッケージをインストールするには、コマンド プロンプトで次のコマンドを実行します。

    sudo apt update && sudo apt -y install apache2
    

    Apache をインストールすると、オペレーティング システムにより Apache サーバーが自動的に起動します。

  5. Apache が実行されていることを確認するには、次のコマンドを実行します。

    sudo systemctl status apache2 --no-pager
    
  6. Apache ウェブサーバーのデフォルトのウェブページを上書きするには、次のコマンドを実行します。

    echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
    
  7. ブラウザでの SSH ダイアログを閉じます。

接続をテストする

Apache サーバーをサーバー VM にインストールしたら、サーバー VM の内部 IP アドレスを使用してクライアント VM からサーバー VM に接続します。

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. vm-fw-rules-server VM の [内部 IP] 列から、VM の内部 IP アドレスをコピーします。

  3. vm-fw-rules-client VM の [接続] 列で [SSH] をクリックします。

  4. ブラウザでの SSH ダイアログで [承認] をクリックし、接続が確立されるのを待ちます。

  5. 接続を確認するには、次のコマンドを実行します。

    curl INTERNAL_IP -m 2
    

    INTERNAL_IP は、vm-fw-rules-server VM の IP アドレスに置き換えます。

    どの VM にも、すべてのトラフィックを拒否する暗黙的な上り(内向き)ファイアウォール ルールが作成されるため、「Connection timed out」というメッセージが返されるのは想定の動作です。トラフィックを許可するには、ファイアウォール ポリシーに上り(内向き)ルールを追加します。

  6. ブラウザでの SSH ダイアログを閉じます。

グローバル ネットワーク ファイアウォール ポリシーを更新して内部トラフィックを許可する

このセクションでは、クライアント VM のサブネットからの内部トラフィックを許可するようにグローバル ネットワーク ファイアウォール ポリシーを更新します。

コンソール

  1. Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. [ネットワーク ファイアウォール ポリシー] セクションで、[fw-policy] をクリックします。

  3. [ルールを作成] をクリックします。

  4. [優先度] に「501」と入力します。

  5. [トラフィックの方向] で [上り(内向き)] をオンにします。

  6. [ログ] で [オン] を選択します。

  7. [ターゲット] セクションの [ターゲット タイプ] で、[ネットワーク上のすべてのインスタンス] を選択します。

  8. [送信元] セクションの [IP 範囲] に「192.168.10.0/24」と入力します。

    IP 範囲 192.168.10.0/24subnet-fw-rules-client に割り当てられます。

  9. [送信先] セクションの [IP タイプ] で、[IPv4] を選択します。[IP 範囲] で、10.0.0.0/24 を指定します。

    IP 範囲 10.0.0.0/24subnet-fw-rules-server に割り当てられます。

  10. [作成] をクリックします。

gcloud

ファイアウォール ポリシーを更新するには、次のコマンドを実行します。

gcloud compute network-firewall-policies rules create 501 \
    --firewall-policy=fw-policy \
    --direction=INGRESS \
    --action=ALLOW \
    --src-ip-ranges=192.168.10.0/24 \
    --dest-ip-ranges=10.0.0.0/24 \
    --layer4-configs=all \
    --global-firewall-policy \
    --enable-logging

接続をテストする

ファイアウォール ポリシーを作成したら、サーバー VM の内部 IP アドレスを使用して、クライアント VM からサーバー VM に接続します。

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. vm-fw-rules-server VM の [内部 IP] 列から、VM の内部 IP アドレスをコピーします。

  3. vm-fw-rules-client VM の [接続] 列で [SSH] をクリックします。

  4. ブラウザでの SSH ダイアログで [承認] をクリックし、接続が確立されるのを待ちます。

  5. 接続を確認するには、次のコマンドを実行します。

    curl INTERNAL_IP -m 2
    

    INTERNAL_IP は、vm-fw-rules-server VM の IP アドレスに置き換えます。

    想定されるメッセージは <!doctype html><html><body><h1>Hello World!</h1></body></html> です。

  6. ブラウザでの SSH ダイアログを閉じます。

ファイアウォール ログを表示するには、ログを表示するをご覧ください。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

このセクションでは、このチュートリアルで作成したリソースを削除します。

ファイアウォール ポリシーを削除する

コンソール

  1. Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. [ネットワーク ファイアウォール ポリシー] セクションで、fw-policy 名をクリックします。

  3. [関連付け] タブをクリックします。

  4. vpc-fw-rules のチェックボックスをオンにして、[関連付けを削除] をクリックします。

  5. [ファイアウォール ポリシーの関連付けの削除] ダイアログで、[削除] をクリックします。

  6. fw-policy の横にある [削除] をクリックします。

  7. [ファイアウォール ポリシーの削除] ダイアログで、[削除] をクリックします。

    ポリシーが削除されると、Google Cloud コンソールに [ファイアウォール ポリシー] ページが表示されます。

gcloud

  1. ファイアウォール ポリシーと VPC ネットワークの関連付けを削除します。

    gcloud compute network-firewall-policies associations delete \
      --name=pol-association-fw-rules \
      --firewall-policy=fw-policy \
      --global-firewall-policy
    

    Google Cloud コンソールでファイアウォール ポリシーと VPC ネットワークの関連付けを設定した場合は、gcloud CLI コマンドを使用して関連付けを削除しないでください。関連付けの作成方法がわからない場合や、コマンドを実行したときに The network firewall policy does not have an association with pol-association-fw-rules. エラーが発生した場合は、Google Cloud コンソールを使用して関連付けを削除してください。

  2. ファイアウォール ポリシーを削除します。

    gcloud compute network-firewall-policies delete fw-policy \
        --global
    

VM を削除する

コンソール

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. vm-fw-rules-client VM と vm-fw-rules-server VM のチェックボックスをオンにします。

  3. [削除] をクリックします。

  4. [2 個のインスタンスを削除しますか?] ダイアログで、[削除] をクリックします。

gcloud

vm-fw-rules-client VM と vm-fw-rules-server VM を削除するには、次のコマンドを実行します。

gcloud compute instances delete vm-fw-rules-client vm-fw-rules-server \
    --zone=us-central1-a

プロンプトが表示されたら、Y キーを押して確定し、Enter キーを押します。

Cloud NAT ゲートウェイと Cloud Router を削除する

コンソール

  1. Google Cloud コンソールで [Cloud Router] ページに移動します。

    [Cloud Router] に移動

  2. [router-fw-rules] チェックボックスをオンにします。

  3. [削除] をクリックします。

  4. [Router-fw-rules の削除] ダイアログで [削除] をクリックします。

Cloud Router を削除すると、関連する Cloud NAT ゲートウェイも削除されます。

gcloud

router-fw-rules Cloud Router を削除するには、次のコマンドを実行します。

gcloud compute routers delete router-fw-rules \
    --region=us-central1

プロンプトが表示されたら、Y キーを押して確定し、Enter キーを押します。

Cloud Router を削除すると、関連する Cloud NAT ゲートウェイも削除されます。

VPC ネットワークとそのサブネットを削除する

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. [名前] 列で [vpc-fw-rules] をクリックします。

  3. [VPC ネットワークの削除] をクリックします。

  4. [ネットワークの削除] ダイアログで [削除] をクリックします。

VPC を削除すると、そのサブネットも削除されます。

gcloud

  1. vpc-fw-rules VPC ネットワークのサブネットを削除するには、次のコマンドを実行します。

    gcloud compute networks subnets delete subnet-fw-rules-client subnet-fw-rules-server \
        --region=us-central1
    

    プロンプトが表示されたら、Y キーを押して確定し、Enter キーを押します。

  2. 次のコマンドを実行して、vpc-fw-rules VPC ネットワークを作成します。

    gcloud compute networks delete vpc-fw-rules
    

    プロンプトが表示されたら、Y キーを押して確定し、Enter キーを押します。