すべてのプロダクト
Search
ドキュメントセンター

Cloud Enterprise Network:VPC 間のリージョン間 IPv6 通信の有効化

最終更新日:Aug 29, 2026

Enterprise Edition トランジットルーターを使用すると、異なるリージョンにある VPC 間の IPv6 通信を有効にできます。

説明

このトピックのサンプルコードは、ワンクリック実行が可能です。 [今すぐ実行]

シナリオ

image

ある企業は、China (Shanghai) リージョンの VPC1 と China (Hangzhou) リージョンの VPC2 という 2 つの IPv4 VPC を持っています。両方の VPC には、アプリケーションがデプロイされた ECS インスタンスがあります。この企業は、ビジネスの成長をサポートするために、これらの VPC 間で IPv6 通信を有効にする必要があります。

手順

コンソールと Terraform の 2 つの設定方法を利用できます。ニーズに合った方法を選択してください。

コンソール

前提条件

  • China (Hangzhou) リージョンに IPv4 VPC を、China (Shanghai) リージョンにもう 1 つ作成済みです。両方の VPC には、アプリケーションがデプロイされた ECS インスタンスが含まれています。詳細については、「IPv4 CIDR ブロックを持つ VPC の作成」をご参照ください。

  • Cloud Enterprise Network (CEN) インスタンスが作成済みです。詳細については、「CEN インスタンスの作成」をご参照ください。

ステップ 1:VPC の IPv6 の有効化

IPv6 通信を有効にするには、まず VPC1 と VPC2 の両方で IPv6 を有効にします。

重要

VPC と vSwitch の作成時に IPv6 を有効にすることができます。VPC と vSwitch ですでに IPv6 を有効にし、IPv6 CIDR ブロックを割り当てている場合は、このステップをスキップできます。

  1. VPC コンソールにログインします。

  2. 上部メニューで、VPC が配置されているリージョンを選択します。

  3. VPC ページで、対象の VPC を見つけ、IPv6 CIDR ブロック 列の IPv6 CIDR ブロックの有効化 をクリックします。

  4. IPv6 CIDR ブロックの有効化 ダイアログボックスで、IPv6 CIDR ブロックタイプ[BGP (マルチ ISP) の割り当て] に設定し、[VPC 内のすべての vSwitch で IPv6 を自動的に有効にする] を選択してから、OK をクリックします。

    • [VPC 内のすべての vSwitch で IPv6 を自動的に有効にする] を選択しない場合は、各 vSwitch で個別に IPv6 を有効にする必要があります。詳細については、「vSwitch の IPv6 の有効化」をご参照ください。

    • VPC とその vSwitch で IPv6 を有効にすると、システムはそれぞれに IPv6 CIDR ブロックを割り当てます。VPC ページと vSwitch ページの IPv6 CIDR ブロック 列で、割り当てられた IPv6 CIDR ブロックを確認できます。次の図は、VPC の IPv6 CIDR ブロックの確認方法を示しています。vSwitch の手順も同様です。ipV6网段

ステップ 2:ECS インスタンスの IPv6 アドレスの設定

IPv6 で通信するリソースには IPv6 アドレスが必要です。このシナリオでは、ECS1 と ECS2 に IPv6 アドレスを設定します。両方のインスタンスでは、Alibaba Cloud Linux 3.2104 LTS 64 ビットオペレーティングシステムを使用します。

  1. 各 ECS インスタンスに IPv6 アドレスを割り当てます。詳細については、「既存インスタンスへの IPv6 アドレスの割り当て」をご参照ください。

    説明

    ECS インスタンスの作成時にすでに IPv6 アドレスを割り当てている場合は、このステップをスキップできます。

  2. 各 ECS インスタンスで IPv6 アドレスを設定します。詳細については、「IPv6 通信の有効化」をご参照ください。

    設定後、ECS1 と ECS2 の IPv6 アドレスは次の図のようになります。

    ECS1 の IPv6 アドレス

    ECS1-IPv6

    ECS2 の IPv6 アドレス

    ECS2-IPv

ステップ 3:トランジットルーターインスタンスの作成

CEN インスタンス内で、China (Hangzhou) リージョンに 1 つ、China (Shanghai) リージョンにもう 1 つトランジットルーターを作成します。これらのトランジットルーターは、VPC 間のリージョン間通信を可能にします。

  1. CEN コンソールにログインします。
  2. [インスタンス] ページで、管理するCENインスタンスを見つけ、インスタンスIDをクリックします。
  3. 基本設定 > トランジットルーター タブで、トランジットルーターの作成 をクリックします。

  4. トランジットルーターの作成 ダイアログボックスで、トランジットルーターを設定し、OK をクリックします。

    トランジットルーターインスタンスを作成する際は、リージョン のみを設定します。他のパラメーターはデフォルト値のままにします。詳細については、「トランジットルーターインスタンスの作成」をご参照ください。

ステップ 4:VPC 接続の作成

リージョン間通信を確立するには、まず VPC をそれぞれのトランジットルーターに接続します。

  1. CEN コンソールにログインします。
  2. [インスタンス] ページで、管理するCENインスタンスを見つけ、インスタンスIDをクリックします。
  3. 基本設定 > トランジットルーター タブで、ステップ 3 で作成したいずれかのトランジットルーターを見つけます。アクション 列で、接続の作成 をクリックします。

  4. ピアネットワークインスタンスとの接続 ページで、接続設定を構成し、OK をクリックします。

    以下のパラメーターを使用して、VPC1 を China (Hangzhou) リージョンのトランジットルーターに接続し、VPC2 を China (Shanghai) リージョンのトランジットルーターに接続します。他のパラメーターはデフォルト値のままにします。詳細については、「VPC 接続の作成」をご参照ください。

    パラメーター

    説明

    VPC1

    VPC2

    [ネットワークタイプ]

    仮想プライベートクラウド (VPC) を選択します。

    [リージョン]

    接続するネットワークインスタンスのリージョンを選択します。

    中国 (杭州) を選択します。

    中国 (上海) を選択します。

    [IPv6 のサポート]

    VPC 接続で IPv6 を有効にします。デフォルトでは無効です。

    この機能を有効にすると、Enterprise Edition トランジットルーターを使用して IPv6 通信が可能になります。

    説明

    既存の VPC 接続で IPv6 機能を有効にすることができます。詳細については、「既存の VPC 接続で IPv6 を有効にする」をご参照ください。

    この機能を有効にします。

    この機能を有効にします。

    [トランジットルーター]

    現在のリージョンで作成されたトランジットルーターが自動的に表示されます。

    [リソース所有者 ID]

    ネットワークインスタンスを所有するアカウントのタイプを選択します。

    現在のアカウント を選択します。

    現在のアカウント を選択します。

    [ネットワーク]

    接続する VPC を選択します。

    VPC1 を選択します。

    VPC2 を選択します。

    [vSwitch]

    トランジットルーターがサポートする可用性ゾーンから vSwitch を選択します。

    • Enterprise Edition トランジットルーターが現在のリージョンで 1 つの可用性ゾーンのみをサポートする場合、その可用性ゾーン内の 1 つの vSwitch を選択する必要があります。

    • Enterprise Edition トランジットルーターが現在のリージョンで複数の可用性ゾーンをサポートする場合、少なくとも 2 つの異なる可用性ゾーンで少なくとも 1 つの vSwitch を選択する必要があります。これらの vSwitch は、VPC とトランジットルーター間のトラフィックのゾーンレベルのディザスタリカバリを可能にします。各可用性ゾーンで 1 つの vSwitch を選択すると、トラフィックの迂回が減り、伝送レイテンシーが低下し、パフォーマンスが向上します。

    必要な可用性ゾーンに vSwitch がない場合は、作成する必要があります。詳細については、「vSwitch の作成」をご参照ください。

    [詳細設定]

    3 つの詳細機能を有効にするデフォルト設定のままにします。

ステップ 5:リージョン間接続の作成

VPC をそれぞれの Enterprise Edition トランジットルーターに接続した後、リージョン間接続を作成して、それらの間の通信を有効にします。

  1. CEN コンソールにログインします。
  2. [インスタンス] ページで、管理するCENインスタンスを見つけ、インスタンスIDをクリックします。
  3. 基本設定 > トランジットルーター タブで、ステップ 3 で作成したいずれかのトランジットルーターを見つけます。トランジットルーターの アクション 列で、接続の作成 をクリックします。

  4. ピアネットワークインスタンスとの接続 ページで、リージョン間接続を設定し、OK をクリックします。

    次の表は主要なパラメーターのみを記載しています。他のパラメーターはデフォルト値のままにします。詳細については、「Enterprise Edition トランジットルーターを使用したリージョン間接続の作成」をご参照ください。

    パラメーター

    説明

    [ネットワークタイプ]

    リージョン間接続 を選択します。

    [リージョン]

    接続するリージョンの 1 つを選択します。

    この例では、中国 (杭州) を選択します。

    [ピアリージョン]

    接続するもう一方のリージョンを選択します。

    この例では、中国 (上海) を選択します。

    [帯域幅割り当てモード]

    リージョン間接続の帯域幅割り当てモードを選択します。

    この例では、データ転送量課金 を選択します。リージョン間接続での実際のデータ転送量に対して課金されます。

    [帯域幅]

    リージョン間接続の帯域幅の値を入力します。単位:Mbit/s。

    帯域幅割り当てモードとして データ転送量課金 を選択した場合、この値はリージョン間接続のピーク帯域幅になります。

    [デフォルトのリンクタイプ]

    リージョン間接続の回線タイプを選択します。

    デフォルト値のままにします。回線タイプの詳細については、「回線タイプ」をご参照ください。

    [詳細設定]

    3 つの詳細機能を有効にするデフォルト設定のままにします。

ステップ 6:ルート同期の有効化

VPC1 と VPC2 両方の接続でルート同期を有効にして、トランジットルーターが IPv6 ルートを VPC にアドバタイズできるようにします。

  1. CEN コンソールにログインします。

  2. インスタンス ページで、対象の CEN インスタンスを見つけ、その ID をクリックします。

  3. 基本設定 > トランジットルーター タブで、China (Hangzhou) リージョンのトランジットルーターを見つけ、その ID をクリックします。

  4. リージョン内接続数 タブで、VPC1 の接続を見つけ、ルート同期 列でネットワークインスタンスのルート同期を有効にします。

  5. 同様の手順を繰り返して、China (Shanghai) リージョンのトランジットルーターで VPC2 接続のルート同期を有効にします。

    ルート同期が有効になると、Enterprise Edition トランジットルーターは自動的にルートをネットワークインスタンスに同期します。ルート同期 列の 詳細 をクリックして、ルーティング情報 タブに移動し、同期ステータスを確認できます。

    VPC1 のルートエントリ

    image

    VPC2 のルートエントリ

    image

ステップ 7:接続性のテスト

VPC1 と VPC2 間の IPv6 通信が有効になりました。次のように接続性を確認します。

重要

デフォルトでは、セキュリティグループのルールは IPv6 トラフィックを許可しません。続行する前に、ECS1 と ECS2 のセキュリティグループのルールが IPv6 通信を許可していることを確認してください。詳細については、「セキュリティグループルールの表示」および「セキュリティグループルールの追加」をご参照ください。

たとえば、IPv6 接続をテストするために、::/0 CIDR ブロックからのインバウンド ICMP (IPv6) トラフィックを許可するセキュリティグループルールを追加します。

  1. VPC1 の ECS1 インスタンスにログインします。詳細については、「接続方法」をご参照ください。

  2. 次のコマンドを実行して、ECS1 インスタンスから VPC2 の ECS2 インスタンスに ping を実行し、接続性を確認します。

    ping6 <ECS2 の IPv6 アドレス>

    図に示されている応答は、VPC 間の IPv6 通信が成功したことを示しています。

    IPv

Terraform

Terraform を使用して、このシナリオの環境を構築できます。Terraform のインストールと設定方法については、Terraform のインストールをご参照ください。

以下の手順では、Linux ホストで Terraform v1.9.8 を実行する方法について説明します。開始する前に、認証を完了していることを確認してください。

説明

このチュートリアルの一部のリソースには料金が発生します。不要になったらリソースを解放して、不要なコストを回避してください。

ステップ 1:リソースの作成

  1. このシナリオ用のディレクトリを作成し、そこに移動します。

    mkdir tf-CenIpv6 && cd tf-CenIpv6
  2. リソースを定義する main.tf ファイルを作成します。

    touch main.tf
  3. main.tf ファイルを開き、次のコードをコピーして貼り付けます。ファイルを保存します。このファイルには、このシナリオのリソースとその設定が含まれています。

    variable "pname" {
      description = "The prefix name for resources"
      type        = string
      default     = "tf-CenIpv6"
    }
    
    variable "default_region_id" {
      description = "The default region id"
      type        = string
      default     = "cn-hangzhou"
    }
    
    variable "hangzhou_region_id" {
      description = "The hangzhou region id"
      type        = string
      default     = "cn-hangzhou"
    }
    
    variable "shanghai_region_id" {
      description = "The shanghai region id"
      type        = string
      default     = "cn-shanghai"
    }
    
    variable "hangzhou_az_list" {
      description = "List of availability zones to use"
      type        = list(string)
      default     = ["cn-hangzhou-j", "cn-hangzhou-k"]
    }
    
    variable "shanghai_az_list" {
      description = "List of availability zones to use"
      type        = list(string)
      default     = ["cn-shanghai-m", "cn-shanghai-n"]
    }
    
    # --- provider ---
    provider "alicloud" { # default hangzhou
      region = var.default_region_id
    }
    
    provider "alicloud" {
      alias  = "hangzhou"
      region = var.hangzhou_region_id
    }
    
    provider "alicloud" {
      alias  = "shanghai"
      region = var.shanghai_region_id
    }
    
    # --- 2 vpc and 4 vsw ---
    resource "alicloud_vpc" "vpc1" {
      provider    = alicloud.hangzhou
      vpc_name    = "${var.pname}-vpc1"
      cidr_block  = "10.0.0.0/16"
      enable_ipv6 = true
    }
    resource "alicloud_vpc" "vpc2" {
      provider    = alicloud.shanghai
      vpc_name    = "${var.pname}-vpc2"
      cidr_block  = "172.16.0.0/16"
      enable_ipv6 = true
    }
    resource "alicloud_vswitch" "vsw1-1" {
      provider             = alicloud.hangzhou
      vpc_id               = alicloud_vpc.vpc1.id
      cidr_block           = "10.0.0.0/24"
      zone_id              = var.hangzhou_az_list[0]
      vswitch_name         = "${var.pname}-vsw1-1"
      enable_ipv6          = true
      ipv6_cidr_block_mask = 1 # vSwitch の IPv6 CIDR ブロックのマスク。
    }
    resource "alicloud_vswitch" "vsw1-2" {
      provider             = alicloud.hangzhou
      vpc_id               = alicloud_vpc.vpc1.id
      cidr_block           = "10.0.1.0/24"
      zone_id              = var.hangzhou_az_list[1]
      vswitch_name         = "${var.pname}-vsw1-2"
      enable_ipv6          = true
      ipv6_cidr_block_mask = 2
    }
    resource "alicloud_vswitch" "vsw2-1" {
      provider             = alicloud.shanghai
      vpc_id               = alicloud_vpc.vpc2.id
      cidr_block           = "172.16.0.0/24"
      zone_id              = var.shanghai_az_list[0]
      vswitch_name         = "${var.pname}-vsw2-1"
      enable_ipv6          = true
      ipv6_cidr_block_mask = 3
    }
    resource "alicloud_vswitch" "vsw2-2" {
      provider             = alicloud.shanghai
      vpc_id               = alicloud_vpc.vpc2.id
      cidr_block           = "172.16.1.0/24"
      zone_id              = var.shanghai_az_list[1]
      vswitch_name         = "${var.pname}-vsw2-2"
      enable_ipv6          = true
      ipv6_cidr_block_mask = 4
    }
    
    # --- ecs1 ---
    resource "alicloud_instance" "ecs1" {
      provider             = alicloud.hangzhou
      instance_name        = "${var.pname}-ecs1"
      instance_type        = "ecs.e-c1m1.large"
      security_groups      = [alicloud_security_group.sg1.id]
      vswitch_id           = alicloud_vswitch.vsw1-1.id
      image_id             = "aliyun_3_x64_20G_qboot_alibase_20230727.vhd"
      system_disk_category = "cloud_essd"
      private_ip           = "10.0.0.1"
      ipv6_address_count   = 1
      instance_charge_type = "PostPaid"
      user_data = base64encode(<<-EOT
        #!/bin/bash
        echo ecs_ok > /root/ok.txt
        sudo acs-plugin-manager --exec --plugin=ecs-utils-ipv6
      EOT
      )
    }
    
    # --- ecs2 ---
    resource "alicloud_instance" "ecs2" {
      provider             = alicloud.shanghai
      instance_name        = "${var.pname}-ecs2"
      instance_type        = "ecs.e-c1m1.large"
      security_groups      = [alicloud_security_group.sg2.id]
      vswitch_id           = alicloud_vswitch.vsw2-1.id
      image_id             = "aliyun_3_x64_20G_qboot_alibase_20230727.vhd"
      system_disk_category = "cloud_essd"
      private_ip           = "172.16.0.1"
      ipv6_address_count   = 1
      instance_charge_type = "PostPaid"
      user_data = base64encode(<<-EOT
        #!/bin/bash
        echo ecs_ok > /root/ok.txt
        sudo acs-plugin-manager --exec --plugin=ecs-utils-ipv6
      EOT
      )
    }
    
    # sg
    resource "alicloud_security_group" "sg1" {
      provider = alicloud.hangzhou
      name     = "${var.pname}-sg1"
      vpc_id   = alicloud_vpc.vpc1.id
    }
    resource "alicloud_security_group_rule" "allow_inbound_ssh1" {
      provider          = alicloud.hangzhou
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "22/22"
      priority          = 1
      security_group_id = alicloud_security_group.sg1.id
      cidr_ip           = "0.0.0.0/0"
    }
    resource "alicloud_security_group_rule" "allow_inbound_icmp1" {
      provider          = alicloud.hangzhou
      type              = "ingress"
      ip_protocol       = "icmp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "-1/-1"
      priority          = 1
      security_group_id = alicloud_security_group.sg1.id
      cidr_ip           = "0.0.0.0/0"
    }
    resource "alicloud_security_group_rule" "allow_inbound_ipv6_icmp1" {
      provider          = alicloud.hangzhou
      type              = "ingress"
      ip_protocol       = "icmp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "-1/-1"
      priority          = 1
      security_group_id = alicloud_security_group.sg1.id
      ipv6_cidr_ip      = "::/0"
    }
    
    resource "alicloud_security_group" "sg2" {
      provider = alicloud.shanghai
      name     = "${var.pname}-sg2"
      vpc_id   = alicloud_vpc.vpc2.id
    }
    resource "alicloud_security_group_rule" "allow_inbound_ssh2" {
      provider          = alicloud.shanghai
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "22/22"
      priority          = 1
      security_group_id = alicloud_security_group.sg2.id
      cidr_ip           = "0.0.0.0/0"
    }
    resource "alicloud_security_group_rule" "allow_inbound_icmp2" {
      provider          = alicloud.shanghai
      type              = "ingress"
      ip_protocol       = "icmp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "-1/-1"
      priority          = 1
      security_group_id = alicloud_security_group.sg2.id
      cidr_ip           = "0.0.0.0/0"
    }
    resource "alicloud_security_group_rule" "allow_inbound_ipv6_icmp2" {
      provider = alicloud.shanghai
    
      type              = "ingress"
      ip_protocol       = "icmp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "-1/-1"
      priority          = 1
      security_group_id = alicloud_security_group.sg2.id
      ipv6_cidr_ip      = "::/0"
    }
    
    
    # --- cen and tr ---
    resource "alicloud_cen_instance" "cen1" {
      cen_instance_name = "${var.pname}-cen1"
    }
    resource "alicloud_cen_transit_router" "tr1" {
      provider            = alicloud.hangzhou
      transit_router_name = "${var.pname}-tr1"
      cen_id              = alicloud_cen_instance.cen1.id
    }
    resource "alicloud_cen_transit_router" "tr2" {
      provider            = alicloud.shanghai
      transit_router_name = "${var.pname}-tr2"
      cen_id              = alicloud_cen_instance.cen1.id
    }
    # トランジットルーターのシステムルートテーブル ID を取得します。
    data "alicloud_cen_transit_router_route_tables" "tr1" { # トランジットルーターのシステムルートテーブルを取得します。
      transit_router_id               = alicloud_cen_transit_router.tr1.transit_router_id
      transit_router_route_table_type = "System"
    }
    data "alicloud_cen_transit_router_route_tables" "tr2" {
      transit_router_id               = alicloud_cen_transit_router.tr2.transit_router_id
      transit_router_route_table_type = "System"
    }
    
    # tr-peer
    resource "alicloud_cen_transit_router_peer_attachment" "peer" {
      provider                      = alicloud.hangzhou
      cen_id                        = alicloud_cen_instance.cen1.id
      transit_router_id             = alicloud_cen_transit_router.tr1.transit_router_id
      peer_transit_router_region_id = var.shanghai_region_id
      peer_transit_router_id        = alicloud_cen_transit_router.tr2.transit_router_id
      bandwidth_type                = "DataTransfer"
      bandwidth                     = 1
      auto_publish_route_enabled    = true # デフォルトは false です
    }
    resource "alicloud_cen_transit_router_route_table_association" "ass_peer1" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_propagation" "propa_peer1" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_association" "ass_peer2" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_propagation" "propa_peer2" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id
    }
    
    # cidr_list
    variable "cidr_list" {
      description = "The list of Private CIDR block"
      type        = list(string)
      default     = ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
    }
    
    # attach1
    resource "alicloud_cen_transit_router_vpc_attachment" "attach1" {
      provider          = alicloud.hangzhou
      cen_id            = alicloud_cen_instance.cen1.id
      transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id
      vpc_id            = alicloud_vpc.vpc1.id
      zone_mappings {
        zone_id    = var.hangzhou_az_list[0]
        vswitch_id = alicloud_vswitch.vsw1-1.id
      }
      zone_mappings {
        zone_id    = var.hangzhou_az_list[1]
        vswitch_id = alicloud_vswitch.vsw1-2.id
      }
      transit_router_vpc_attachment_name    = "attach1"
      transit_router_vpc_attachment_options = { ipv6Support : "enable" }
      auto_publish_route_enabled            = true # デフォルトは false です
    }
    resource "alicloud_cen_transit_router_route_table_association" "ass1" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_propagation" "propa1" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
    }
    resource "alicloud_route_entry" "vpc1_to_tr1" {
      provider              = alicloud.hangzhou
      count                 = 3
      route_table_id        = alicloud_vpc.vpc1.route_table_id
      destination_cidrblock = var.cidr_list[count.index]
      nexthop_type          = "Attachment"
      nexthop_id            = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
    }
    
    # attach2
    resource "alicloud_cen_transit_router_vpc_attachment" "attach2" {
      provider          = alicloud.shanghai
      cen_id            = alicloud_cen_instance.cen1.id
      transit_router_id = alicloud_cen_transit_router.tr2.transit_router_id
      vpc_id            = alicloud_vpc.vpc2.id
      zone_mappings {
        zone_id    = var.shanghai_az_list[0]
        vswitch_id = alicloud_vswitch.vsw2-1.id
      }
      zone_mappings {
        zone_id    = var.shanghai_az_list[1]
        vswitch_id = alicloud_vswitch.vsw2-2.id
      }
      transit_router_vpc_attachment_name    = "attach2"
      transit_router_vpc_attachment_options = { ipv6Support : "enable" }
      auto_publish_route_enabled            = true # デフォルトは false です
    }
    resource "alicloud_cen_transit_router_route_table_association" "ass2" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_propagation" "propa2" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
    }
    resource "alicloud_route_entry" "vpc2_to_tr2" {
      provider              = alicloud.shanghai
      count                 = 3
      route_table_id        = alicloud_vpc.vpc2.route_table_id
      destination_cidrblock = var.cidr_list[count.index]
      nexthop_type          = "Attachment"
      nexthop_id            = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
    }
    
    output "ecs1_login_address" {
      value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=${var.hangzhou_region_id}&instanceId=${alicloud_instance.ecs1.id}"
    }
    
    output "ecs2_login_address" {
      value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=${var.shanghai_region_id}&instanceId=${alicloud_instance.ecs2.id}"
    }
  4. ディレクトリで Terraform を初期化します。

    terraform init
  5. リソースを作成します。Terraform は最初にプランをプレビューします。確認後、yes と入力してリソースの作成を開始します。

    terraform apply

ステップ 2:接続性の検証

VPC1 と VPC2 間の IPv6 通信が有効になりました。次のように接続性を確認します。

  1. ECS2 インスタンス (インスタンス名: tf-CenIpv6-ecs2) にログインします。

    Terraform の出力で ECS2 のログイン URL を見つけ、ブラウザにコピーして開きます。ログイン時に、認証方法として [一時的な SSH キーベース] を選択します。

    image

  2. ECS2 インスタンスで、次のコマンドを実行して IPv6 アドレスを表示します:

    ifconfig

    ECS2-IPv

  3. ECS1 インスタンス (インスタンス名: tf-CenIpv6-ecs1) にログインします。

    Terraform の出力で ECS1 のログイン URL を見つけ、ブラウザにコピーして開きます。ログイン時に、認証方法として [一時的な SSH キーベース] を選択します。

    image

  4. 次のコマンドを実行して、ECS1 インスタンスから VPC2 の ECS2 インスタンスに ping を実行し、接続性を確認します。

    ping6 <ECS2 の IPv6 アドレス>

    IPv

    図に示されている応答は、VPC 間の IPv6 通信が成功したことを示しています。

ステップ 3:リソースの解放

不要になったリソースを解放するには、次のコマンドを実行します。

terraform destroy --auto-approve