このチュートリアルでは、カスタム 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 ネットワークのサブネット間のトラフィックのフローを示しています。
始める前に
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- プロジェクトで Compute Engine API を有効にします。
- Compute ネットワーク管理者(
roles/compute.networkAdmin
)の Identity and Access Management ロールが付与されていることを確認します。 - コマンドラインから作業する場合は、Google Cloud CLI をインストールします。ツールのコンセプトとインストールについては、gcloud CLI の概要をご覧ください。
注: Google Cloud CLI を初めて実行する場合は、まず
gcloud init
を実行して、gcloud CLI ディレクトリを初期化します。
サブネットを持つカスタム VPC ネットワークを作成する
このセクションでは、2 つの IPv4 サブネットを持つカスタムモードの VPC ネットワークを作成します。
コンソール
Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] に「
vpc-fw-rules
」と入力します。[説明] に「
VPC network for the firewall rules tutorial
」と入力します。[サブネット作成モード] で [カスタム] を選択します。
[新しいサブネット] セクションで、サブネットに次の構成パラメータを指定します。
- 名前:
subnet-fw-rules-server
- リージョン:
us-central1 (Iowa)
- IPv4 範囲:
10.0.0.0/24
- 限定公開の Google アクセス: オン
- 名前:
[完了] をクリックします。
[サブネットを追加] をクリックし、次の構成パラメータを指定します。
- 名前:
subnet-fw-rules-client
- リージョン:
us-central1 (Iowa)
- IPv4 範囲:
192.168.10.0/24
- 限定公開の Google アクセス: オン
- 名前:
[完了] をクリックします。
下にスクロールして [作成] をクリックします。
gcloud
VPC ネットワークを作成するには、次のコマンドを実行します。
gcloud compute networks create vpc-fw-rules \ --subnet-mode=custom \ --description="VPC network for the firewall rules tutorial"
[Cloud Shell の承認] ダイアログで、[承認] をクリックします。
サブネットを作成するには、次のコマンドを実行します。
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
別のサブネットを作成するには、次のコマンドを実行します。
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 を作成する手順は次のとおりです。
Google Cloud コンソールで、[インスタンスの作成] ページに移動します。
[名前] に「
vm-fw-rules-server
」と入力します。[リージョン] で
us-central1 (Iowa)
を選択します。下にスクロールして [詳細オプション] を開き、[ネットワーキング] を開きます。
[ネットワーク インターフェース] セクションで、次の構成パラメータを指定します。
- ネットワーク:
vpc-fw-rules
- サブネットワーク:
subnet-fw-rules-server IPv4 (10.0.0.0/24)
- 外部 IPv4 アドレス: なし
- ネットワーク:
[完了] をクリックします。
[作成] をクリックします。
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 を作成する手順は次のとおりです。
Google Cloud コンソールで、[インスタンスの作成] ページに移動します。
[名前] に「
vm-fw-rules-client
」と入力します。[リージョン] で
us-central1 (Iowa)
を選択します。下にスクロールして [詳細オプション] を開き、[ネットワーキング] を開きます。
[ネットワーク インターフェース] セクションで、次の構成パラメータを指定します。
- ネットワーク:
vpc-fw-rules
- サブネットワーク:
subnet-fw-rules-client IPv4 (192.168.10.0/24)
- 外部 IPv4 アドレス: なし
- ネットワーク:
[完了] をクリックします。
[作成] をクリックします。
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 ゲートウェイを作成します。
コンソール
Google Cloud コンソールで、[Cloud NAT] ページに移動します。
[開始] または [Cloud NAT ゲートウェイを作成] をクリックします。
[ゲートウェイ名] に「
gateway-fw-rules
」と入力します。[NAT タイプ] で、[パブリック] を選択します。
[Cloud Router の選択] セクションで、次の構成パラメータを指定します。
- ネットワーク:
vpc-fw-rules
- リージョン:
us-central1
- Cloud Router: [新しいルーターを作成] を選択します。
- [名前] に「
router-fw-rules
」と入力します。 - [作成] をクリックします。
- [名前] に「
- ネットワーク:
[作成] をクリックします。
gcloud
Cloud Router を作成するには、次のコマンドを実行します。
gcloud compute routers create router-fw-rules \ --network=vpc-fw-rules \ --region=us-central1
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
を宛先とする下り(外向き)ルール。ロギングを有効にします。ファイアウォール ルール ロギングを使用すると、ファイアウォール ルールの効果を監査、検証、分析できます。
コンソール
Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[ファイアウォール ポリシーを作成] をクリックします。
[ポリシーの構成] セクションの [ポリシー名] に「
fw-policy
」と入力します。[デプロイのスコープ] で [グローバル] を選択し、[続行] をクリックします。
ポリシーのルールを作成するには、[ルールを追加] セクションで [ルールを追加] をクリックします。
- [優先度] に「
65534
」と入力します。 - [トラフィックの方向] に [下り(外向き)] を選択します。
- [ログ] で [オン] を選択します。
- [ターゲット] セクションの [ターゲット タイプ] で、[ネットワーク上のすべてのインスタンス] を選択します。
- [送信先] セクションの [IP 範囲] に「
0.0.0.0/0
」と入力します。 - [プロトコルとポート] セクションで、[すべて許可] を選択します。
- [作成] をクリックします。
- [優先度] に「
[続行] をクリックします。
VPC ネットワークをポリシーに関連付けるには、[ポリシーと VPC ネットワークの関連付け] セクションで [関連付け] をクリックします。
[
vpc-fw-rules
] のチェックボックスをオンにして、[関連付け] をクリックします。[続行] をクリックします。
[作成] をクリックします。
gcloud
ファイアウォール ポリシーを作成するには、次のコマンドを実行します。
gcloud compute network-firewall-policies create fw-policy \ --global
すべての宛先へのトラフィックを許可し、ログを有効にするファイアウォール ルールを作成するには、次のコマンドを実行します。
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
ファイアウォール ポリシーを 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 のアクセスを許可するには、次の操作を行います。
Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[ネットワーク ファイアウォール ポリシー] セクションで、[
fw-policy
] をクリックします。[ルールを作成] をクリックします。
[優先度] に「
500
」と入力します。[トラフィックの方向] で [上り(内向き)] をオンにします。
[ログ] で [オン] を選択します。
[ターゲット] セクションの [ターゲット タイプ] で、[ネットワーク上のすべてのインスタンス] を選択します。
[送信元] セクションの [IP 範囲] に「
35.235.240.0/20
」と入力します。[プロトコルとポート] セクションで、[指定したプロトコルとポート] を選択します。
[TCP] チェックボックスをオンにし、[ポート] に「
22
」と「3389
」をカンマで区切って入力します。[作成] をクリックします。
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 にインストールします。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
vm-fw-rules-server
VM の [接続] 列で [SSH] をクリックします。ブラウザでの SSH ダイアログで [承認] をクリックし、接続が確立されるのを待ちます。
apache2
パッケージをインストールするには、コマンド プロンプトで次のコマンドを実行します。sudo apt update && sudo apt -y install apache2
Apache をインストールすると、オペレーティング システムにより Apache サーバーが自動的に起動します。
Apache が実行されていることを確認するには、次のコマンドを実行します。
sudo systemctl status apache2 --no-pager
Apache ウェブサーバーのデフォルトのウェブページを上書きするには、次のコマンドを実行します。
echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
ブラウザでの SSH ダイアログを閉じます。
接続をテストする
Apache サーバーをサーバー VM にインストールしたら、サーバー VM の内部 IP アドレスを使用してクライアント VM からサーバー VM に接続します。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
vm-fw-rules-server
VM の [内部 IP] 列から、VM の内部 IP アドレスをコピーします。vm-fw-rules-client
VM の [接続] 列で [SSH] をクリックします。ブラウザでの SSH ダイアログで [承認] をクリックし、接続が確立されるのを待ちます。
接続を確認するには、次のコマンドを実行します。
curl INTERNAL_IP -m 2
INTERNAL_IP
は、vm-fw-rules-server
VM の IP アドレスに置き換えます。どの VM にも、すべてのトラフィックを拒否する暗黙的な上り(内向き)ファイアウォール ルールが作成されるため、「
Connection timed out
」というメッセージが返されるのは想定の動作です。トラフィックを許可するには、ファイアウォール ポリシーに上り(内向き)ルールを追加します。ブラウザでの SSH ダイアログを閉じます。
グローバル ネットワーク ファイアウォール ポリシーを更新して内部トラフィックを許可する
このセクションでは、クライアント VM のサブネットからの内部トラフィックを許可するようにグローバル ネットワーク ファイアウォール ポリシーを更新します。
コンソール
Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[ネットワーク ファイアウォール ポリシー] セクションで、[
fw-policy
] をクリックします。[ルールを作成] をクリックします。
[優先度] に「
501
」と入力します。[トラフィックの方向] で [上り(内向き)] をオンにします。
[ログ] で [オン] を選択します。
[ターゲット] セクションの [ターゲット タイプ] で、[ネットワーク上のすべてのインスタンス] を選択します。
[送信元] セクションの [IP 範囲] に「
192.168.10.0/24
」と入力します。IP 範囲
192.168.10.0/24
が subnet-fw-rules-client に割り当てられます。[送信先] セクションの [IP タイプ] で、[IPv4] を選択します。[IP 範囲] で、
10.0.0.0/24
を指定します。IP 範囲
10.0.0.0/24
が subnet-fw-rules-server に割り当てられます。[作成] をクリックします。
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 に接続します。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
vm-fw-rules-server
VM の [内部 IP] 列から、VM の内部 IP アドレスをコピーします。vm-fw-rules-client
VM の [接続] 列で [SSH] をクリックします。ブラウザでの SSH ダイアログで [承認] をクリックし、接続が確立されるのを待ちます。
接続を確認するには、次のコマンドを実行します。
curl INTERNAL_IP -m 2
INTERNAL_IP
は、vm-fw-rules-server
VM の IP アドレスに置き換えます。想定されるメッセージは
<!doctype html><html><body><h1>Hello World!</h1></body></html>
です。ブラウザでの SSH ダイアログを閉じます。
ファイアウォール ログを表示するには、ログを表示するをご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
このセクションでは、このチュートリアルで作成したリソースを削除します。
ファイアウォール ポリシーを削除する
コンソール
Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[ネットワーク ファイアウォール ポリシー] セクションで、
fw-policy
名をクリックします。[関連付け] タブをクリックします。
vpc-fw-rules
のチェックボックスをオンにして、[関連付けを削除] をクリックします。[ファイアウォール ポリシーの関連付けの削除] ダイアログで、[削除] をクリックします。
fw-policy
の横にある [削除] をクリックします。[ファイアウォール ポリシーの削除] ダイアログで、[削除] をクリックします。
ポリシーが削除されると、Google Cloud コンソールに [ファイアウォール ポリシー] ページが表示されます。
gcloud
ファイアウォール ポリシーと 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 コンソールを使用して関連付けを削除してください。ファイアウォール ポリシーを削除します。
gcloud compute network-firewall-policies delete fw-policy \ --global
VM を削除する
コンソール
Google Cloud コンソールで [VM インスタンス] ページに移動します。
vm-fw-rules-client
VM とvm-fw-rules-server
VM のチェックボックスをオンにします。[削除] をクリックします。
[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 を削除する
コンソール
Google Cloud コンソールで [Cloud Router] ページに移動します。
[
router-fw-rules
] チェックボックスをオンにします。[削除] をクリックします。
[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 ネットワークとそのサブネットを削除する
コンソール
Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
[名前] 列で [
vpc-fw-rules
] をクリックします。[VPC ネットワークの削除] をクリックします。
[ネットワークの削除] ダイアログで [削除] をクリックします。
VPC を削除すると、そのサブネットも削除されます。
gcloud
vpc-fw-rules
VPC ネットワークのサブネットを削除するには、次のコマンドを実行します。gcloud compute networks subnets delete subnet-fw-rules-client subnet-fw-rules-server \ --region=us-central1
プロンプトが表示されたら、Y キーを押して確定し、Enter キーを押します。
次のコマンドを実行して、
vpc-fw-rules
VPC ネットワークを作成します。gcloud compute networks delete vpc-fw-rules
プロンプトが表示されたら、Y キーを押して確定し、Enter キーを押します。