Enterprise Editionトランジットルーターは、アクセス制御サーバーを介してネットワークトラフィックをルーティングしてスクラブできる柔軟なルート管理機能を提供します。 これにより、信頼できるトラフィックのみが許可され、ネットワークセキュリティが強化されます。 このトピックでは、Enterprise Editionトランジットルーターを使用してネットワーク通信を有効化および保護する方法について説明します。
この例のサンプルコードは、ワンクリックで実行できます。
シナリオ
次の例は、Enterprise Editionトランジットルーターを使用してセキュアなリージョン内通信を確立する方法を示しています。 ある企業は、中国 (香港) リージョンで互いに分離された3つのVPCをデプロイしました。 セキュリティサービスはVPC1にデプロイされています。 ビジネスの成長とセキュリティ要件に対応するために、VPC2とVPC3の間にネットワーク通信を確立し、ネットワークトラフィックをVPC1にルーティングしてスクラブしたいと考えています。
この場合、企業はVPC2とVPC3をEnterprise Editionトランジットルーターに接続し、カスタムルーティングポリシーをトランジットルーターに追加して、VPC2とVPC3間の通信を確立できます。
前提条件
セキュリティVPCがデプロイされているリージョンがEnterprise Editionトランジットルーターをサポートしていることを確認します。 サポートされるリージョンとゾーンの詳細については、「Enterprise Editionトランジットルーターをサポートするリージョンとゾーン」をご参照ください。
中国 (杭州) リージョンに3つのVPCが作成され、各VPCがECSインスタンスをホストしています。 詳細については、「IPv4 CIDRブロックを持つVPCの作成」をご参照ください。
Enterprise Editionトランジットルーターのゾーンの各VPCには、十分なvSwitchがデプロイされています。 各vSwitchには、少なくとも1つのアイドルIPアドレスがあります。
Enterprise Editionトランジットルーターが中国 (南京-ローカルリージョン) など、1つのゾーンのみをサポートするリージョンにデプロイされている場合、VPCにはゾーン内に少なくとも1つのvSwitchが必要です。
Enterprise Editionトランジットルーターが複数のゾーンをサポートするリージョン (中国 (上海) など) にデプロイされている場合、VPCにはゾーン内に少なくとも2つのvSwitchが必要です。 vSwitchは異なるゾーンにある必要があります。
たとえば、中国 (杭州) リージョンにVPCを作成する場合、ゾーンBとゾーンCの両方に少なくとも1つのvSwitchが必要です。各vSwitchには少なくとも1つのアイドルIPアドレスがあります。
説明Enterprise Editionトランジットルーターは、ゾーン内の各vSwitchにelastic network interface (ENI) を関連付けます。 ENIは、VPCからトランジットルーターにネットワークトラフィックを転送するingressとして機能します。 各ENIは1つのIPアドレスを占有します。
この例では、VPC1に3つのvSwitchがあります。 vSwitch 1はアクセス制御サービスをホストしますが、vSwitch 2とvSwitch 3はEnterprise Editionトランジットルーターに接続されます。 次の表に、VPCに割り当てられたCIDRブロックを示します。 CIDRブロックが重複しないことを確認し、3つのECSインスタンスのイメージをAlibaba Cloud Linuxに設定します。
[VPC]
vSwitch
vSwitchゾーン
CIDRブロック
ECSアドレス
VPC1
CIDRブロック: 10.0.0.0/16
vSwitch 1
ゾーンI
10.0.0.0/24
ECS1
10.0.0.1
vSwitch 2
ゾーンJ
10.0.1.0/24
vSwitch 3
ゾーンK
10.0.2.0/24
VPC2
CIDRブロック: 10.1.0.0/16
vSwitch 4
ゾーンI
10.1.0.0/24
ECS2
10.1.0.1
vSwitch 5
ゾーンJ
10.1.1.0/24
vSwitch 6
ゾーンK
10.1.2.0/24
VPC3
CIDRブロック: 10.2.0.0/16
vSwitch 7
ゾーンI
10.2.0.0/24
ECS3
10.2.0.1
vSwitch 8
ゾーンJ
10.2.1.0/24
vSwitch 9
ゾーンK
10.2.2.0/24
VPC1、2、および3のECSインスタンスのセキュリティグループルールに精通していること。 セキュリティグループルールにより、ECSインスタンスは相互に通信できます。 詳細については、「セキュリティグループルールの照」と「セキュリティグループルールの追加」をご参照ください。
スタート設定
このトピックでは、コンソールとTerraformの2つの設定方法について説明します。 ニーズに最適な方法を選択してください。
コンソール
手順1: Cloud Enterprise Network (CEN) インスタンスの作成
CENインスタンスは、統合ネットワークを作成および管理するための基本的なリソースです。 ネットワークインスタンスをEnterprise Editionトランジットルーターに接続する前に、まずCENインスタンスを作成する必要があります。
CENコンソールにログインします。
インスタンスページで、CENインスタンスの作成をクリックします。
CEN インスタンスの作成 ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。
名前: CENインスタンスの名前を入力します。
説明: CENインスタンスの説明を入力します。
リソースグループ: CENインスタンスのリソースグループを選択します。
この例では、リソースグループは選択されていません。 CENインスタンスがデフォルトリソースグループに追加されます。
タグ: CENインスタンスにタグを追加します。 この例では、ネットワークインスタンス接続にタグは追加されません。
手順2: トランジットルーターインスタンスの作成
ネットワークインスタンスを接続する前に、CENインスタンス内にネットワークインスタンスがデプロイされているリージョンにトランジットルーターを作成する必要があります。
CENコンソールにログインします。
インスタンス ページで、手順1で作成したCENインスタンスを選択し、CENインスタンスIDをクリックします。
タブで、トランジットルーターの作成をクリックします。
トランジットルーターの作成ダイアログボックスで、トランジットルーターインスタンス情報を設定し、OKをクリックします。
パラメーター
説明
値
リージョン
トランジットルーターを作成するリージョンを選択します。
この例では、中国 (杭州) が選択されています。
エディション
トランジットルーターインスタンスのエディション。
選択したリージョンでサポートされているトランジットルーターのエディションが自動的に表示されます。
マルチキャストの有効化
マルチキャストを有効にするかどうかを指定します。
デフォルト値は維持され、マルチキャストはアクティブ化されません。
名前
トランジットルーターインスタンスの名前を入力します。
この例では、トランジットルーターにカスタム名が指定されています。
説明
トランジットルーターインスタンスの説明を入力します。
トランジットルーターインスタンスのカスタム説明を指定します。
タグ
トランジットルーターにタグを追加します。
この例では、タグは追加されません。
TR アドレスセグメント
トランジットルーターのCIDRブロックを入力します。
詳細については、「トランジットルーターCIDRブロック」をご参照ください。
この例では、トランジットルーターにCIDRブロックが指定されていません。
手順3: VPCをトランジットルーターに接続する
各ネットワークインスタンスがデプロイされているリージョンのEnterprise Editionトランジットルーターに接続するネットワークインスタンスをアタッチします。
CENコンソールにログインします。
インスタンス ページで、管理するCENインスタンスのIDをクリックします。
タブに移動し、管理するトランジットルーターを見つけて、アクション 列の 接続の作成 をクリックします。
ピアネットワークインスタンスとの接続 ページで、次の情報を設定し、OK をクリックします。
次の表に、各VPCの設定を示します。 VPC1、2、および3をEnterprise Editionトランジットルーターに接続します。
パラメーター
説明
VPC1
VPC2
VPC3
[インスタンスタイプ]
接続するネットワークインスタンスのタイプを選択します。
仮想プライベートクラウド (VPC)
仮想プライベートクラウド (VPC)
仮想プライベートクラウド (VPC)
リージョン
ネットワークインスタンスがデプロイされているリージョンを選択します。
中国 (杭州)
中国 (杭州)
中国 (杭州)
トランジットルーター
選択したリージョンのトランジットルーターのIDが表示されます。
リソース所有者 ID
ネットワークインスタンスが属するAlibaba Cloudアカウントを選択します。
現在のアカウント
現在のアカウント
現在のアカウント
課金方法
デフォルト値は従量課金です。
接続名
ネットワーク接続の名前を入力します。
VPC1接続
VPC2接続
VPC3接続
タグ
ネットワークインスタンス接続にタグを追加します。
この例では、タグは追加されません。
この例では、タグは追加されません。
この例では、タグは追加されません。
ネットワークインスタンス
接続するネットワークインスタンスを選択します。
VPC1
VPC2
VPC3
VSwitch
トランジットルーターのゾーンでvSwitchを選択します。
トランジットルーターの各ゾーンにvSwitchがある場合、複数のゾーンを選択し、各ゾーンでvSwitchを選択してゾーンディザスタリカバリを有効にできます。
中国 (杭州) ゾーンJ: vSwitch 2
中国 (杭州) ゾーンK: vSwitch 3
中国 (杭州) ゾーンJ: vSwitch 2
中国 (杭州) ゾーンK: vSwitch 3
中国 (杭州) ゾーンI: vSwitch 4
中国 (杭州) ゾーンJ: vSwitch 8
詳細設定
VPC1、2、および3では、次の高度な機能が無効になっています。
トランジットルーターのデフォルトルートテーブルに関連付ける
システムルートをトランジットルーターのデフォルトルートテーブルに伝播する
トランジットルーターへのルートを自動的に作成し、現在の VPC のすべてのルートテーブルに追加する
説明高度な機能が有効になっている場合、VPC1、2、および3は互いにルートを自動的に学習できますが、トラフィックはスクラブされません。 この例では、高度な機能は無効になっています。 次の手順では、カスタムルートテーブルとルートエントリを使用して、ネットワークトラフィックをスクラブできるようにネットワークトラフィックのルーティング方法を定義します。
手順4: VPCインスタンスへのルートエントリの追加
ルートエントリをVPC1、2、および3に追加して、トラフィックをEnterprise Editionトランジットルーターに転送します。 ネットワークトラフィックは、スクラブ用にEnterprise Editionトランジットルーターによって配布されます。
VPCコンソールにログインします。
上部のナビゲーションバーで、ルートテーブルが属するリージョンを選択します。
カスタムルートエントリをVPC2およびVPC3に追加します。
VPC2およびVPC3のシステムルートテーブルにルートエントリを追加します。 宛先CIDRブロックを0.0.0.0/0に設定し、次のホップをトランジットルーターに設定します。 これにより、VPC2およびVPC3からのトラフィックがEnterprise Editionトランジットルーターに転送されます。
左側のナビゲーションウィンドウで、ルートテーブルをクリックします。
ルートテーブルページで、管理するルートテーブルのIDをクリックします。
この例では、VPC2のシステムルートテーブルが使用されます。
ルートエントリ一覧タブで、カスタムルートタブをクリックし、ルートエントリの追加をクリックします。
[ルートエントリの追加] パネルで、次の情報を設定し、[OK] をクリックします。
名前: カスタムルートエントリの名前を入力します。
宛先CIDRブロック: この例では、0.0.0.0/0と入力します。
ネクストホップタイプ: この例では、トランジットルーターを選択します。
トランジットルーター: この例では、VPC2に関連付けられているトランジットルーターインスタンスを選択します。
前の手順を繰り返し、次のパラメーターを設定して、VPC3のシステムルートテーブルにルートエントリを追加します。
宛先CIDRブロック: この例では、0.0.0.0/0と入力します。
ネクストホップタイプ: この例では、トランジットルーターが選択されています。
トランジットルーター: この例では、VPC3に関連付けられたトランジットルーターが選択されています。
VPC1用に、routetable1、routetable2、およびroutetable3という名前の3つのカスタムルートテーブルを作成します。 詳細については、「カスタムルートテーブルの作成」をご参照ください。
vSwitchをカスタムルートテーブルに関連付けます。 詳細については、「vSwitchとルートテーブルの関連付け」をご参照ください。
この例では、VPC1のvSwitch 1をroutetable1に、vSwitch 2をroutetable2に、vSwitch 3をroutetable3に関連付けます。
VPC1のカスタムルートテーブルにルートエントリを追加します。
ルートテーブルページで、作成したルートテーブルのIDをクリックします。
この例では、select routetable1はvSwitch 1に関連付けられています。
ルートエントリ一覧タブで、カスタムルートタブをクリックし、ルートエントリの追加をクリックします。
[ルートエントリの追加] パネルで、次のパラメーターを設定し、[OK] をクリックします。
名前: カスタムルートエントリの名前を入力します。
リソースグループ: この例では、[すべて] が選択されています。
宛先CIDRブロック: この例では、0.0.0.0/0と入力します。
ネクストホップタイプ: この例では、ECSインスタンスが選択されています。
ECSインスタンス: この例では、VPC1のvSwitch 3でセキュリティサービスを提供するECSインスタンスが選択されています。
前の手順を繰り返し、同じルートエントリをvSwitch 2のカスタムルートテーブルroutetable2に追加します。
前の手順を繰り返し、vSwitch 3のroutetable3にルートエントリを追加します。 ルートエントリに次のパラメーターを設定します。
宛先CIDRブロック: この例では、0.0.0.0/0と入力します。
ネクストホップタイプ: この例では、トランジットルーターを選択します。
トランジットルーター: この例では、VPC1に関連付けられたトランジットルーターが選択されています。
次の表に、各VPC1に新しく追加されたルートエントリに関する情報を示します。
NetworkInstance
ルートテーブル
vSwitch
ルートエントリ
次のホップ
VPC1
routetable1
vSwitch 1
0.0.0.0/0
VPC1に関連付けられたトランジットルーター
routetable2
vSwitch 2
0.0.0.0/0
vSwitch 3のECSインスタンス
routetable3
vSwitch 3
0.0.0.0/0
vSwitch 1のECSインスタンス
VPC2
システムルートテーブル
vSwitch 1
vSwitch 2
vSwitch 3
0.0.0.0/0
VPC2に関連付けられたトランジットルーター
VPC3
システムルートテーブル
vSwitch 1
vSwitch 2
vSwitch 3
0.0.0.0/0
VPC3に関連付けられたトランジットルーター
手順5: トランジットルーターでのルートの設定
VPCトラフィックがEnterprise Editionトランジットルーターに入った後、ルートテーブルを作成し、ルートエントリを追加して接続をカスタマイズします。 これにより、VPC2およびVPC3からのトラフィックがVPC1に転送され、フィルタリングされたトラフィックがVPC1から宛先にルーティングされます。
CENコンソールにログインします。
インスタンスページで、CENインスタンスのIDをクリックします。
タブに移動し、管理するトランジットルーターのIDをクリックします。
ルートテーブル タブで、Enterprise Editionトランジットルーター用にTR_routetable1とTR_routetable2という名前の2つのカスタムルートテーブルを作成します。 詳細については、「カスタムルートテーブル」をご参照ください。
VPC2およびVPC3接続をEnterprise Editionトランジットルーターのカスタムルートテーブルに関連付け、それらのルートエントリを構成します。
ルートテーブル タブで、TR_routetable1を選択します。 ルートテーブル関連付け タブをクリックし、[関連付け転送の作成] をクリックします。
アソシエーションの追加ダイアログボックスで、このカスタムルートテーブルに関連付けるネットワークインスタンス接続を選択し、OKをクリックします。
この例では、VPC2およびVPC3接続をTR_routetable1に関連付けます。
カスタムルートテーブルの詳細ページで、ルートエントリタブをクリックし、ルートエントリの作成.
[ルートエントリの追加] ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。
宛先CIDR: この例では、0.0.0.0/0が使用されます。
ブラックホールルート: [はい] を選択すると、このルート宛てのトラフィックがドロップされます。 この例では、[いいえ] が選択されています。
ネクストホップ接続: この例では、VPC1接続が選択されています。
詳細については、「トランジットルーターのカスタムルートエントリ」をご参照ください。
これらの手順を完了すると、VPC2およびVPC3からのネットワークトラフィックがVPC1に転送されます。
カスタムルートテーブルをVPC1に関連付け、ルートエントリを設定します。
ルートテーブル タブで、TR_routetable2を選択します。 ルートテーブル関連付け タブをクリックし、[関連付け転送の作成] をクリックします。
アソシエーションの追加ダイアログボックスで、ルートテーブルに関連付けるネットワークインスタンス接続を選択し、OKをクリックします。
この例では、VPC1はTR_routetable2に関連付けられています。
カスタムルートテーブルの詳細ページで。 ルート伝播 タブをクリックし、[ルート伝播の有効化] をクリックします。
ルート伝播の有効化ダイアログボックスで、ルート伝播を有効にするネットワークインスタンスを選択し、OKをクリックします。
この例では、TR_routetable2はVPC2とVPC3に伝播されます。 ルート伝播が有効になると、このルートテーブルはVPC2とVPC3のルートを学習できるようになります。 VPC1は、このルートテーブルをクエリすることにより、VPC2およびVPC3と通信します。
作成が完了すると、Enterprise Editionトランジットルーターのルートエントリは次のようになります。
名前
宛先CIDRブロック
次のホップ
TR_routetable1
0.0.0.0/0
VPC1接続
TR_routetable2
10.1.0.0/16
VPC2接続
10.2.0.0/16
VPC3接続
ステップ6: ネットワーク接続のテスト
上記の手順を完了すると、VPC1、VPC2、およびVPC3は互いに安全に通信できます。 ネットワーク接続をテストするには、次の手順を実行します。
ECS1にログオンし、次のコマンドを実行してデータ転送を有効にします。 ECSインスタンスへのログイン方法の詳細については、「接続方法の概要」をご参照ください。
説明データ転送が有効になっていない場合、VPC1とVPC2の間、およびVPC1とVPC3の間で接続が確立されます。 ただし、VPC2とVPC3は相互に通信できません。
echo 1 > /proc/sys/net/ipv4/ip_forward # Enable forwarding. This command takes effect temporarily and will be lost after a restart.
ECS2にログインしてmtrソフトウェアをインストールします。これは、pingとtracerouteの機能をマージして、ネットワークの待ち時間とパケット損失をリアルタイムで分析する診断ツールです。 この例では、トラフィックフローの検出を支援する。
yum install -y mtr
ECS2とECS3間の接続をテストするには、ECS2でmtrコマンドを実行します。
mtr 10.2.0.1 -i 5
-i 5
は、pingリクエストが5秒ごとに送信されることを指定します。結果は、ECS2からECS3へのメッセージがECS1 (10.0.0.1) を介してルーティングされていることを示しています。これは、VPC2とVPC3間のトラフィックがセキュリティECSであるECS1を介して再ルーティングされることを示しています。
テラフォーム
この例の環境を設定するには、Terraformを使用します。 Terraformのインストールと設定の詳細については、
次のセクションでは、例としてLinuxホストでTerraform v1.9.8を使用します。 完了したことを確認
続行する前の認証。
この例では、特定のリソースに対して料金が適用され得る。 リソースが不要になったときにリソースを解放または解除します。
手順1: リソースの作成
シナリオのディレクトリを作成し、そこに移動します。
mkdir tf-CenSec && cd tf-CenSec
main.tf
ファイルを作成して、必要なリソースを定義します。touch main.tf
main.tf
ファイルを開き、次のコードをファイルに貼り付けて、変更を保存します。 このファイルには、必要なリソースと設定がすべて含まれます。variable "pname" { description = "The prefix name for the resources" type = string default = "tf-CenSec" } variable "default_region" { description = "Default region" type = string default = "cn-hangzhou" } variable "az" { description = "List of availability zones to use" type = list(string) default = ["cn-hangzhou-i", "cn-hangzhou-j", "cn-hangzhou-k"] } variable "vpc_count" { description = "Number of VPCs to create" type = number default = 3 } provider "alicloud" { region = var.default_region } # vpc resource "alicloud_vpc" "main" { count = var.vpc_count vpc_name = "${var.pname}-vpc${count.index + 1}" cidr_block = "10.${count.index}.0.0/16" } # vsw resource "alicloud_vswitch" "main" { count = var.vpc_count * length(var.az) vpc_id = alicloud_vpc.main[floor(count.index / length(var.az))].id cidr_block = "10.${floor(count.index / length(var.az))}.${count.index % length(var.az)}.0/24" zone_id = var.az[count.index % length(var.az)] vswitch_name = "${var.pname}-vsw${count.index + 1}" } # ecs resource "alicloud_instance" "main" { count = var.vpc_count instance_name = "${var.pname}-ecs${count.index + 1}" instance_type = "ecs.e-c1m1.large" security_groups = [alicloud_security_group.main[count.index].id] vswitch_id = alicloud_vswitch.main[count.index * length(var.az)].id image_id = "aliyun_3_x64_20G_qboot_alibase_20230727.vhd" system_disk_category = "cloud_essd" private_ip = "10.${count.index}.0.1" instance_charge_type = "PostPaid" user_data = base64encode(<<-EOT #!/bin/bash ${count.index == 0 ? "echo 1 > /proc/sys/net/ipv4/ip_forward" : ""} yum install -y traceroute yum install -y mtr EOT ) # ecs1 enable ip_forward } # sg resource "alicloud_security_group" "main" { count = var.vpc_count name = "${var.pname}-${count.index + 1}" vpc_id = alicloud_vpc.main[count.index].id } resource "alicloud_security_group_rule" "allow_inbound_ssh" { count = var.vpc_count type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = "22/22" priority = 1 security_group_id = alicloud_security_group.main[count.index].id cidr_ip = "0.0.0.0/0" } resource "alicloud_security_group_rule" "allow_inbound_icmp" { count = var.vpc_count type = "ingress" ip_protocol = "icmp" nic_type = "intranet" policy = "accept" port_range = "-1/-1" priority = 1 security_group_id = alicloud_security_group.main[count.index].id cidr_ip = "0.0.0.0/0" } resource "alicloud_security_group_rule" "allow_all_outbound" { count = var.vpc_count type = "egress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = "1/65535" priority = 1 security_group_id = alicloud_security_group.main[count.index].id cidr_ip = "0.0.0.0/0" } # cen resource "alicloud_cen_instance" "cen1" { cen_instance_name = var.pname } # tr resource "alicloud_cen_transit_router" "tr1" { transit_router_name = var.pname cen_id = alicloud_cen_instance.cen1.id } # attach1 to vsw2 vsw3 in vpc1 resource "alicloud_cen_transit_router_vpc_attachment" "attach1" { cen_id = alicloud_cen_instance.cen1.id transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id vpc_id = alicloud_vpc.main[0].id zone_mappings { zone_id = var.az[1] vswitch_id = alicloud_vswitch.main[1].id # vsw2, vpc1-2 } zone_mappings { zone_id = var.az[2] vswitch_id = alicloud_vswitch.main[2].id # vsw3, vpc1-3 } transit_router_vpc_attachment_name = "attach1" } # attach2 to vsw1 vsw2 in vpc2 resource "alicloud_cen_transit_router_vpc_attachment" "attach2" { cen_id = alicloud_cen_instance.cen1.id transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id vpc_id = alicloud_vpc.main[1].id zone_mappings { zone_id = var.az[0] vswitch_id = alicloud_vswitch.main[3].id # vsw4, vpc2-1 } zone_mappings { zone_id = var.az[1] vswitch_id = alicloud_vswitch.main[4].id # vsw5, vpc2-2 } transit_router_vpc_attachment_name = "attach2" } # attach3 to vsw1 vsw2 in vpc3 resource "alicloud_cen_transit_router_vpc_attachment" "attach3" { cen_id = alicloud_cen_instance.cen1.id transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id vpc_id = alicloud_vpc.main[2].id zone_mappings { zone_id = var.az[0] vswitch_id = alicloud_vswitch.main[6].id # vsw6, vpc3-1 } zone_mappings { zone_id = var.az[1] vswitch_id = alicloud_vswitch.main[7].id # vsw7, vpc3-2 } transit_router_vpc_attachment_name = "attach3" } # 3 rt for vpc1 resource "alicloud_route_table" "rt" { count = 3 vpc_id = alicloud_vpc.main[0].id route_table_name = "${var.pname}-rt${count.index}" associate_type = "VSwitch" } # 3 rt attach to vsw1 2 3 resource "alicloud_route_table_attachment" "rt_attach" { count = 3 vswitch_id = alicloud_vswitch.main[count.index].id route_table_id = alicloud_route_table.rt[count.index].id } # rt entry, vpc1 resource "alicloud_route_entry" "rt-entry1" { # nexthop tr route_table_id = alicloud_route_table.rt[0].id destination_cidrblock = "0.0.0.0/0" nexthop_type = "Attachment" nexthop_id = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id } resource "alicloud_route_entry" "rt-entry2" { # nexthop ecs1 route_table_id = alicloud_route_table.rt[1].id destination_cidrblock = "0.0.0.0/0" nexthop_type = "Instance" nexthop_id = alicloud_instance.main[0].id # ecs1 } resource "alicloud_route_entry" "rt-entry3" { # nexthop ecs1 route_table_id = alicloud_route_table.rt[2].id destination_cidrblock = "0.0.0.0/0" nexthop_type = "Instance" nexthop_id = alicloud_instance.main[0].id # ecs1 } # rt entry, vpc2 vpc3 resource "alicloud_route_entry" "rt-entry4" { route_table_id = alicloud_vpc.main[1].route_table_id destination_cidrblock = "0.0.0.0/0" nexthop_type = "Attachment" nexthop_id = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id } resource "alicloud_route_entry" "rt-entry5" { route_table_id = alicloud_vpc.main[2].route_table_id destination_cidrblock = "0.0.0.0/0" nexthop_type = "Attachment" nexthop_id = alicloud_cen_transit_router_vpc_attachment.attach3.transit_router_attachment_id } # new 2 tr_rt resource "alicloud_cen_transit_router_route_table" "tr_rt1" { transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id transit_router_route_table_name = "tr_rt1" } resource "alicloud_cen_transit_router_route_table" "tr_rt2" { transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id transit_router_route_table_name = "tr_rt2" } # ass rt1 attach2 3 resource "alicloud_cen_transit_router_route_table_association" "ass1" { transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr_rt1.transit_router_route_table_id transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id } resource "alicloud_cen_transit_router_route_table_association" "ass2" { transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr_rt1.transit_router_route_table_id transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach3.transit_router_attachment_id } # ass rt2 attach1 resource "alicloud_cen_transit_router_route_table_association" "ass3" { transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr_rt2.transit_router_route_table_id transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id } # tr_rt_entry resource "alicloud_cen_transit_router_route_entry" "tr_rt1_entry1" { transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr_rt1.transit_router_route_table_id transit_router_route_entry_destination_cidr_block = "0.0.0.0/0" transit_router_route_entry_next_hop_type = "Attachment" transit_router_route_entry_next_hop_id = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id } resource "alicloud_cen_transit_router_route_entry" "tr_rt2_entry1" { transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr_rt2.transit_router_route_table_id transit_router_route_entry_destination_cidr_block = "10.1.0.0/16" transit_router_route_entry_next_hop_type = "Attachment" transit_router_route_entry_next_hop_id = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id } resource "alicloud_cen_transit_router_route_entry" "tr_rt2_entry2" { transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr_rt2.transit_router_route_table_id transit_router_route_entry_destination_cidr_block = "10.2.0.0/16" transit_router_route_entry_next_hop_type = "Attachment" transit_router_route_entry_next_hop_id = alicloud_cen_transit_router_vpc_attachment.attach3.transit_router_attachment_id } output "ecs1_login_address" { value = "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.main[0].id}" } output "ecs2_login_address" { value = "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.main[1].id}" } output "ecs3_login_address" { value = "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.main[2].id}" }
ディレクトリを初期化してTerraformセットアップを完了します。
terraform init
リソースを作成すると、Terraformは作成するリソースをプレビューします。 確認後、
yes
と入力して作成プロセスを開始します。terraform apply
ステップ2: 接続のテスト
tf-CenSec-ECS2
という名前のecs2インスタンスにログインします。ECS2のログオンアドレスはTerraform出力で使用できます。 アドレスをブラウザにコピーし、認証方法として [一時的なSSHキーベース] を選択します。
ECS2で
mtr
コマンドを実行し、ECS3へのネットワークパスをテストします。mtr 10.2.0.1 -i 5
-i 5
は、pingリクエストが5秒ごとに送信されることを示します。結果は、ECS2からECS3へのパケットがECS1 (10.0.0.1) を介してルーティングされることを示す。 これにより、VPC2とVPC3間のトラフィックがセキュリティECSであるECS1を経由することが確認されます。
ステップ3: リリースリソース
検証が完了し、リソースが不要になったら、以下のコマンドを実行してリソースをリリースし、課金を停止します。
terraform destroy --auto-approve