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

Virtual Private Cloud:IPv4 ゲートウェイ

最終更新日:Aug 21, 2026

デフォルトでは、パブリック IP アドレスを持つ Virtual Private Cloud (VPC) リソースは、IPv4 を介してインターネットと直接通信できます。しかし、企業環境では、事業部門が承認なしに Elastic Compute Service (ECS) インスタンスにパブリック IP アドレスを割り当てるなど、管理されていないインターネットアクセス方法はセキュリティリスクをもたらします。IPv4 ゲートウェイを使用すると、ルートテーブルを介してすべてのインターネット宛てのトラフィックを単一の制御ポイントに集約できるため、分散アクセスによるセキュリティリスクを低減できます。

IPv4 ゲートウェイを使用する理由

比較

直接インターネットアクセス (VPC のデフォルト)

IPv4 ゲートウェイによる集中管理

IPv4 ゲートウェイがない場合、ECS インスタンスは固定パブリック IP アドレス、Elastic IP (EIP)、またはインターネット NAT ゲートウェイを介してインターネットに直接アクセスします。

すべてのインターネットアクセストラフィックの集中管理。

利用シーン

少数の ECS インスタンスが独立した直接のインターネットアクセスを必要とする場合。

インターネットアクセスの要件が頻繁に変わる場合に最適です。

大規模で多層的なネットワークアーキテクチャ。

厳格なネットワークセキュリティとコンプライアンス要件を持つ企業環境。

複雑さ

シンプルで高速。ルート設定は不要です。

ネットワーク計画とルート設定が必要です。

柔軟性

各インスタンスは独立して管理され、他のインスタンスに影響を与えません。

ネットワークポリシーの変更は、VPC 内のすべてのインスタンスに影響します。

セキュリティ

セキュリティは主に、各インスタンスに設定されたセキュリティグループルールに依存します。

IPv4 ゲートウェイは、集中管理を通じて VPC 全体で一貫したネットワークポリシーを適用します。

IPv4 ゲートウェイとインターネット NAT ゲートウェイの違い

IPv4 ゲートウェイとインターネット NAT ゲートウェイは併用できます。これらのネットワークコンポーネントが互いにどのように関連しているかの詳細については、「インターネットアクセス」をご参照ください。

コンポーネント

IPv4 ゲートウェイ

インターネット NAT ゲートウェイ

目的

パブリック IPv4 トラフィックを制御する VPC の境界コンポーネント

VPC 内のネットワークアドレス変換 (NAT) デバイス

シナリオ

インターネットアクセストラフィックの集中管理

インターネット宛てトラフィックの統一された出口

インターネットアクセスを提供

いいえ。トラフィックのみを制御します。

EIP を関連付けることでインターネットアクセスを提供します

(EIP が接続性を提供し、NAT ゲートウェイ自体はインターネットアクセスを提供しません。)

IPv4 ゲートウェイを作成すると、vSwitch は次の 2 つのカテゴリに分類されます。

  • パブリック vSwitch:関連付けられたルートテーブルに、CIDR0.0.0.0/0 に設定され、ネクストホップ が IPv4 ゲートウェイに設定されたルートエントリが含まれます。この vSwitch 内のリソースは、パブリック IP アドレスを関連付けた後、インターネットにアクセスできます。

  • プライベート vSwitch:関連付けられたルートテーブルに、IPv4 ゲートウェイを指すルートが含まれていません。この vSwitch 内のリソースは、パブリック IP アドレスを持っていても直接インターネットにアクセスできません。

インターネット NAT ゲートウェイを IPv4 ゲートウェイと併用する場合、インターネット NAT ゲートウェイをパブリック vSwitch にデプロイします。プライベート vSwitch 内の ECS インスタンスは、インターネット NAT ゲートウェイを指すルートを持つ必要があります。これにより、インターネット宛てのトラフィックが NAT ゲートウェイを通過し、NAT ゲートウェイに関連付けられたパブリック IP アドレスを使用してインターネットに到達します。次の点にご注意ください。

  • インターネット NAT ゲートウェイの EipBindMode が、IPv4 ゲートウェイとの互換性のために NAT モードに設定されていることを確認してください。

    • コンソールで作成されたインターネット NAT ゲートウェイは、デフォルトで NAT モードになります。CreateNatGateway を呼び出す際は、EipBindModeNAT に設定します。作成後、ModifyNatGatewayAttribute を呼び出して EipBindMode を変更できます。

    • EipBindModeMULTI_BINDED モードに設定されたインターネット NAT ゲートウェイが既に存在する場合、IPv4 ゲートウェイと互換性がないため、IPv4 ゲートウェイを作成できません。

    • IPv4 ゲートウェイが既に存在し、CreateNatGateway を呼び出して EipBindModeMULTI_BINDED モードのインターネット NAT ゲートウェイを作成した場合、その NAT ゲートウェイに EIP を関連付けることはできません。

  • IPv4 ゲートウェイの有効化後にプライベート vSwitch 内のリソースがインターネットアクセスを失わないように、有効化の前にルート設定を完了してください。

仕組み

IPv4 ゲートウェイによるインターネットアクセスの制御

VPC 用に IPv4 ゲートウェイを作成して有効化すると、ゲートウェイがすべてのインターネットアクセストラフィックを集中管理します。IPv4 ゲートウェイを指すルートを含むルートテーブルが関連付けられた vSwitch のみが、直接インターネットにアクセスできます。VPC の詳細ページで、IPv4 パブリックネットワークへのアクセスモード を確認して、IPv4 ゲートウェイがインターネットトラフィックをアクティブに制御しているかどうかを検証します。

有効化前は、VPC 内のインターネットトラフィックに影響はありません。ただし、有効化中にトラフィックパスが切り替わる際に、一時的なネットワークの中断が発生する可能性があります。

IPv4 ゲートウェイの削除

削除する前に、ゲートウェイのルートテーブルの関連付けを解除します。対象の IPv4 ゲートウェイの 操作 列で 削除 をクリックするか、DeleteIpv4Gateway を呼び出します。選択した削除モードによって、VPC がその後のインターネットアクセスをどのように処理するかが決まります。

  • パブリックモード:システムは IPv4 ゲートウェイを指すすべてのルートエントリを自動的に削除します。VPC は初期状態に戻り、パブリック IP アドレスを持つインスタンスが直接インターネットにアクセスできるようになります。

  • プライベートモード:まず、ルートテーブルから IPv4 ゲートウェイを指すすべてのルートエントリを手動で削除する必要があります。削除後、すべての VPC リソースはインターネットアクセスを失います。直接インターネットアクセスを復元するには、新しい IPv4 ゲートウェイを作成し、パブリックモードで削除します。

    重要

    プライベートモードで削除すると、パブリック IP アドレスを持っているかどうかに関わらず、すべての VPC リソースがインターネットアクセスを失います。注意して進めてください。

インターネットアクセスの集中管理

企業環境では、事業部門が承認なしに ECS インスタンスにパブリック IP アドレスを割り当てるなど、管理されていないインターネットアクセス方法は、運用チームが一貫したポリシーを適用することを困難にします。IPv4 ゲートウェイを使用してインターネットアクセス制御を集中化し、分散アクセスによるセキュリティリスクを低減します。

コンソール

  1. VPC コンソール - IPv4 ゲートウェイページに移動します。VPC がデプロイされているリージョンを選択し、IPv4 ゲートウェイの作成 をクリックします。

  2. IPv4 ゲートウェイの作成:インターネットアクセス制御を集中化したい VPC を選択します。

  3. IPv4 ゲートウェイの有効化:パブリック vSwitch に関連付けられたルートテーブルを選択します。システムは自動的に、IPv4 ゲートウェイを指す 0.0.0.0/0 ルートを追加し、パブリック vSwitch 内のリソースがパブリック IP アドレスを関連付けた後にインターネットにアクセスできるようにします。ルートテーブルに既に 0.0.0.0/0 ルートが含まれている場合は、有効化しない をクリックし、そのルートのネクストホップを IPv4 ゲートウェイに更新してから有効化します。有効化後、VPC のインターネットアクセスは IPv4 ゲートウェイによって制御されます。

    • ECS インスタンスがインターネット NAT ゲートウェイを使用してインターネットにアクセスする場合、ECS インスタンスと NAT ゲートウェイを異なる vSwitch にデプロイします。NAT ゲートウェイの vSwitch に関連付けられたルートテーブルに、IPv4 ゲートウェイを指す 0.0.0.0/0 ルートを追加します。ECS インスタンスの vSwitch に関連付けられたルートテーブルのパブリック vSwitch に、NAT ゲートウェイを指すルートを追加します。

    • ECS インスタンスが固定パブリック IP アドレスまたは直接関連付けられた EIP を使用する場合、IPv4 ゲートウェイを指す 0.0.0.0/0 ルートを追加します。

API

  • CreateIpv4Gateway を呼び出して IPv4 ゲートウェイを作成します。

  • EnableVpcIpv4Gateway を呼び出して IPv4 ゲートウェイを有効化します。RouteTableList をパブリック vSwitch に関連付けられたルートテーブルに設定します。省略した場合は、CreateRouteEntry を呼び出して、IPv4 ゲートウェイを指す 0.0.0.0/0 ルートを手動で追加します。

Terraform

コンソールとは異なり、Terraform を介して IPv4 ゲートウェイを有効化しても、IPv4 ゲートウェイを指す 0.0.0.0/0 ルートは自動的に追加されません。ルートを手動で設定する必要があります。

リソース: alicloud_vpc, alicloud_vswitch, alicloud_vpc_ipv4_gateway, alicloud_route_table, alicloud_route_table_attachment, alicloud_vpc_route_entry, alicloud_instance, alicloud_security_group, alicloud_security_group_rule, alicloud_eip_address, alicloud_eip_association, alicloud_nat_gateway, alicloud_snat_entry
データソース: alicloud_zones
# IPv4 ゲートウェイのリージョンを指定します
provider "alicloud" {
  region = "cn-hangzhou"
}

# vSwitch の作成をサポートするゾーンを自動的に取得します
data "alicloud_zones" "available_zones" {
  available_resource_creation = "VSwitch" # VPC リソースで利用可能なゾーンをクエリします
}

# VPC を作成します
resource "alicloud_vpc" "example_vpc" {
  vpc_name   = "example_vpc_name"
  cidr_block = "10.0.0.0/16" # CIDR ブロックを指定します
}

# vSwitch の設定を定義します
locals {
  vswitches = {
    vsw1 = {
      name       = "example_vsw1_name"
      cidr_block = "10.0.0.0/24"
      zone_index = 0
    }
    vsw2 = {
      name       = "example_vsw2_name"
      cidr_block = "10.0.1.0/24"
      zone_index = 1
    }
    vsw3 = {
      name       = "example_vsw3_name"
      cidr_block = "10.0.2.0/24"
      zone_index = 0
    }
    vsw4 = {
      name       = "example_vsw4_name"
      cidr_block = "10.0.3.0/24"
      zone_index = 0
    }
  }

  # ルートテーブルの設定を定義します
  route_tables = {
    rt1 = {
      name        = "example_rt1_name"
      vswitch_key = "vsw1"
    }
    rt2 = {
      name        = "example_rt2_name"
      vswitch_key = "vsw2"
    }
    rt3 = {
      name        = "example_rt3_name"
      vswitch_key = "vsw3"
    }
    rt4 = {
      name        = "example_rt4_name"
      vswitch_key = "vsw4"
    }
  }

  # インスタンスの設定を定義します
  instances = {
    instance1 = {
      name        = "example_instance1_name"
      vswitch_key = "vsw1"
    }
    instance2 = {
      name        = "example_instance2_name"
      vswitch_key = "vsw3"
    }
    instance3 = {
      name        = "example_instance3_name"
      vswitch_key = "vsw4"
    }
  }

  # EIP の設定を定義します
  eips = {
    eip1 = {
      name = "example_eip1_name"
    }
    eip2 = {
      name = "example_eip2_name"
    }
  }

  # SNAT エントリの設定を定義します
  snat_entries = {
    snat1 = {
      instance_key = "instance2"
    }
    snat2 = {
      instance_key = "instance3"
    }
  }
}

# 複数の vSwitch を作成します
resource "alicloud_vswitch" "example_vsw" {
  for_each = local.vswitches

  vswitch_name = each.value.name
  cidr_block   = each.value.cidr_block
  vpc_id       = alicloud_vpc.example_vpc.id
  zone_id      = data.alicloud_zones.available_zones.zones[each.value.zone_index].id
}

# 複数のカスタムルートテーブルを作成します
resource "alicloud_route_table" "example_route_table" {
  for_each = local.route_tables

  route_table_name = each.value.name
  vpc_id           = alicloud_vpc.example_vpc.id
}

# ルートテーブルを vSwitch に関連付けます
resource "alicloud_route_table_attachment" "example_route_table_attachment" {
  for_each = local.route_tables

  vswitch_id     = alicloud_vswitch.example_vsw[each.value.vswitch_key].id
  route_table_id = alicloud_route_table.example_route_table[each.key].id
}

# インスタンスタイプを指定します
variable "instance_type" {
  default = "ecs.e-c1m1.large"
}

# イメージ ID を指定します
variable "image_id" {
  default = "aliyun_3_x64_20G_alibase_20221102.vhd"
}

# セキュリティグループを作成します
resource "alicloud_security_group" "example_security_group" {
  security_group_name = "example_security_group_name"
  vpc_id              = alicloud_vpc.example_vpc.id
}

# セキュリティグループルールを作成します。必要に応じてプロトコルとポートを変更してください。
resource "alicloud_security_group_rule" "allow_internet" {
  type              = "ingress"
  ip_protocol       = "icmp"
  nic_type          = "intranet"
  policy            = "accept"
  port_range        = "-1/-1"
  priority          = 1
  security_group_id = alicloud_security_group.example_security_group.id
  cidr_ip           = "0.0.0.0/0"
}

# 複数の ECS インスタンスを作成します
resource "alicloud_instance" "example_instance" {
  for_each = local.instances

  instance_name        = each.value.name
  vswitch_id           = alicloud_vswitch.example_vsw[each.value.vswitch_key].id
  instance_type        = var.instance_type
  image_id             = var.image_id
  system_disk_category = "cloud_essd"
  security_groups      = [alicloud_security_group.example_security_group.id]
  instance_charge_type = "PostPaid"           # 従量課金
  spot_strategy        = "SpotWithPriceLimit" # 価格上限付きスポットインスタンス
}

# 複数の EIP を作成します
resource "alicloud_eip_address" "example_eip" {
  for_each = local.eips

  address_name = each.value.name
  isp          = "BGP"
  netmode      = "public"
  bandwidth    = "1"
  payment_type = "PayAsYouGo"
}

# ECS インスタンスを EIP に関連付けます
resource "alicloud_eip_association" "example_eip_ecs_association" {
  allocation_id = alicloud_eip_address.example_eip["eip1"].id
  instance_type = "EcsInstance"
  instance_id   = alicloud_instance.example_instance["instance1"].id
}

# インターネット NAT ゲートウェイを作成します
resource "alicloud_nat_gateway" "example_natgw" {
  nat_gateway_name = "example_natgw_name"
  vpc_id           = alicloud_vpc.example_vpc.id
  vswitch_id       = alicloud_vswitch.example_vsw["vsw2"].id
  nat_type         = "Enhanced"
  eip_bind_mode    = "NAT" # EIP バインディングモードは NAT である必要があります
  payment_type     = "PayAsYouGo"
}

# EIP をインターネット NAT ゲートウェイに関連付けます
resource "alicloud_eip_association" "example_eip_natgw_association" {
  allocation_id = alicloud_eip_address.example_eip["eip2"].id
  instance_type = "NAT"
  instance_id   = alicloud_nat_gateway.example_natgw.id
}

# NAT ゲートウェイを指すルートを追加します
resource "alicloud_route_entry" "example_rt3_route" {
  route_table_id        = alicloud_route_table.example_route_table["rt3"].id
  destination_cidrblock = "0.0.0.0/0"
  nexthop_type          = "NatGateway"
  nexthop_id            = alicloud_nat_gateway.example_natgw.id
}

# NAT ゲートウェイを指すルートを追加します
resource "alicloud_route_entry" "example_rt4_route" {
  route_table_id        = alicloud_route_table.example_route_table["rt4"].id
  destination_cidrblock = "0.0.0.0/0"
  nexthop_type          = "NatGateway"
  nexthop_id            = alicloud_nat_gateway.example_natgw.id
}

# SNAT エントリを作成します
resource "alicloud_snat_entry" "example_snat_entry" {
  for_each = local.snat_entries

  snat_table_id = alicloud_nat_gateway.example_natgw.snat_table_ids
  source_cidr   = alicloud_instance.example_instance[each.value.instance_key].primary_ip_address
  snat_ip       = alicloud_eip_address.example_eip["eip2"].ip_address
}

# IPv4 ゲートウェイを作成します
resource "alicloud_vpc_ipv4_gateway" "example_ipv4gw" {
  ipv4_gateway_name = "example_ipv4gw_name"
  vpc_id            = alicloud_vpc.example_vpc.id
  enabled           = true
}

# IPv4 ゲートウェイを指すルートを追加します
resource "alicloud_route_entry" "example_rt1_route" {
  route_table_id        = alicloud_route_table.example_route_table["rt1"].id
  destination_cidrblock = "0.0.0.0/0"
  nexthop_type          = "Ipv4Gateway"
  nexthop_id            = alicloud_vpc_ipv4_gateway.example_ipv4gw.id
}

# IPv4 ゲートウェイを指すルートを追加します
resource "alicloud_route_entry" "example_rt2_route" {
  route_table_id        = alicloud_route_table.example_route_table["rt2"].id
  destination_cidrblock = "0.0.0.0/0"
  nexthop_type          = "Ipv4Gateway"
  nexthop_id            = alicloud_vpc_ipv4_gateway.example_ipv4gw.id
}

プライベートで使用されるパブリック CIDR ブロック

VPC はデフォルトで RFC 1918 のプライベート CIDR ブロックを使用します:10.0.0.0/8172.16.0.0/12、および 192.168.0.0/16。VPC がオンプレミスデータセンターや、RFC 1918 以外の CIDR ブロック (例:30.0.0.0/16) を使用する別の VPC に接続する場合、インターネットアクセスを持つクラウドリソースは、設定されたプライベートルートに従うのではなく、パブリックインターネット経由で非標準ブロックにリクエストを送信します。

IPv4 ゲートウェイを作成して有効化すると、インターネットアクセスが集中管理され、すべてのトラフィックがルートテーブルに基づいて転送されます。vSwitch は、そのリソースがインターネットにアクセスするために、IPv4 ゲートウェイを指す 0.0.0.0/0 ルートを持つ必要があります。最長プレフィックス一致ルールに基づき、ECS02 宛てのトラフィックは 30.0.0.0/16 ルートに一致し、インターネットを経由せずにピア VPC に転送されます。

コンソール

  1. VPC コンソール - IPv4 ゲートウェイページに移動します。VPC がデプロイされているリージョンを選択し、IPv4 ゲートウェイの作成 をクリックします。

  2. IPv4 ゲートウェイの作成:非標準のプライベート CIDR ブロックにアクセスする必要がある VPC を選択します。

  3. IPv4 ゲートウェイの有効化:非標準のプライベート CIDR ブロックにアクセスする必要がある vSwitch に関連付けられたルートテーブルを選択します。システムは自動的に、IPv4 ゲートウェイを指す 0.0.0.0/0 ルートを追加し、vSwitch 内のリソースがより具体的なルートを介して非標準の CIDR ブロックに到達できるようにします。

    • ルートテーブルに 0.0.0.0/0 ルートが既に含まれていないことを確認してください。含まれている場合は、有効化しない をクリックし、そのルートを削除してから有効化します。

    • 有効化後、IPv4 ゲートウェイはインターネットアクセスを集中管理し、すべてのトラフィックはルートテーブルに基づいて転送されます。

API

  • CreateIpv4Gateway を呼び出して IPv4 ゲートウェイを作成します。

  • EnableVpcIpv4Gateway を呼び出して有効化します。RouteTableList をパブリック vSwitch に関連付けられたルートテーブルに設定します。省略した場合は、CreateRouteEntry を呼び出して、IPv4 ゲートウェイを指す 0.0.0.0/0 ルートを手動で追加します。

Terraform

コンソールとは異なり、Terraform を介して IPv4 ゲートウェイを有効化しても、IPv4 ゲートウェイを指す 0.0.0.0/0 ルートは自動的に追加されません。ルートを手動で設定する必要があります。

リソース: alicloud_vpc, alicloud_vswitch, alicloud_vpc_ipv4_gateway, alicloud_route_table, alicloud_route_table_attachment, alicloud_vpc_route_entry, alicloud_instance, alicloud_security_group, alicloud_security_group_rule, alicloud_eip_address, alicloud_eip_association, alicloud_vpc_peer_connection
データソース: alicloud_zones
この例では、ピアリング接続内の VPC は同じアカウントに属しています。クロスアカウントピアリング接続の場合、ピアアカウントが接続リクエストを受け入れるように alicloud_vpc_peer_connection_accepter も作成します。
# IPv4 ゲートウェイのリージョンを指定します
provider "alicloud" {
  region = "cn-hangzhou"
}

# vSwitch の作成をサポートするゾーンを自動的に取得します
data "alicloud_zones" "available_zones" {
  available_resource_creation = "VSwitch" # VPC リソースで利用可能なゾーンをクエリします
}

# インスタンスタイプを指定します
variable "instance_type" {
  default = "ecs.e-c1m1.large"
}

# イメージ ID を指定します
variable "image_id" {
  default = "aliyun_3_x64_20G_alibase_20221102.vhd"
}

# VPC を作成します
resource "alicloud_vpc" "example_vpc1" {
  vpc_name   = "example_vpc1_name"
  cidr_block = "10.0.0.0/16" # CIDR ブロックを指定します
}

# VPC を作成します
resource "alicloud_vpc" "example_vpc2" {
  vpc_name   = "example_vpc2_name"
  cidr_block = "30.0.0.0/16" # CIDR ブロックを指定します
}

# vSwitch を作成します
resource "alicloud_vswitch" "example_vsw1" {
  vswitch_name = "example_vsw1_name"
  cidr_block   = "10.0.1.0/24"
  vpc_id       = alicloud_vpc.example_vpc1.id
  zone_id      = data.alicloud_zones.available_zones.zones.0.id
}

# vSwitch を作成します
resource "alicloud_vswitch" "example_vsw2" {
  vswitch_name = "example_vsw2_name"
  cidr_block   = "30.0.1.0/24"
  vpc_id       = alicloud_vpc.example_vpc2.id
  zone_id      = data.alicloud_zones.available_zones.zones.1.id
}

# セキュリティグループを作成します
resource "alicloud_security_group" "example_security_group1" {
  security_group_name = "example_security_group1_name"
  vpc_id              = alicloud_vpc.example_vpc1.id
}

# セキュリティグループルールを作成します。必要に応じてプロトコルとポートを変更してください。
resource "alicloud_security_group_rule" "allow_internet1" {
  type              = "ingress"
  ip_protocol       = "icmp"
  nic_type          = "intranet"
  policy            = "accept"
  port_range        = "-1/-1"
  priority          = 1
  security_group_id = alicloud_security_group.example_security_group1.id
  cidr_ip           = "0.0.0.0/0"
}

# セキュリティグループを作成します
resource "alicloud_security_group" "example_security_group2" {
  security_group_name = "example_security_group2_name"
  vpc_id              = alicloud_vpc.example_vpc2.id
}

# セキュリティグループルールを作成します。必要に応じてプロトコルとポートを変更してください。
resource "alicloud_security_group_rule" "allow_internet2" {
  type              = "ingress"
  ip_protocol       = "icmp"
  nic_type          = "intranet"
  policy            = "accept"
  port_range        = "-1/-1"
  priority          = 1
  security_group_id = alicloud_security_group.example_security_group2.id
  cidr_ip           = "0.0.0.0/0"
}

# ECS インスタンスを作成します
resource "alicloud_instance" "example_instance1" {
  instance_name        = "example_instance1_name"
  vswitch_id           = alicloud_vswitch.example_vsw1.id
  instance_type        = var.instance_type
  image_id             = var.image_id
  system_disk_category = "cloud_essd"
  security_groups      = [alicloud_security_group.example_security_group1.id]
  instance_charge_type = "PostPaid"
  spot_strategy        = "SpotWithPriceLimit"
}

# EIP を作成します
resource "alicloud_eip_address" "example_eip" {
  address_name = "example_eip_name"
  isp          = "BGP"
  netmode      = "public"
  bandwidth    = "1"
  payment_type = "PayAsYouGo"
}

# ECS インスタンスを EIP に関連付けます
resource "alicloud_eip_association" "example_eip_ecs_association" {
  allocation_id = alicloud_eip_address.example_eip.id
  instance_type = "EcsInstance"
  instance_id   = alicloud_instance.example_instance1.id
}

# ECS インスタンスを作成します
resource "alicloud_instance" "example_instance2" {
  instance_name        = "example_instance2_name"
  vswitch_id           = alicloud_vswitch.example_vsw2.id
  instance_type        = var.instance_type
  image_id             = var.image_id
  system_disk_category = "cloud_essd"
  security_groups      = [alicloud_security_group.example_security_group2.id]
  instance_charge_type = "PostPaid"
  spot_strategy        = "SpotWithPriceLimit"
}

# カスタムルートテーブルを作成します
resource "alicloud_route_table" "example_route_table1" {
  route_table_name = "example_route_table1_name"
  vpc_id           = alicloud_vpc.example_vpc1.id
}

# ルートテーブルを vSwitch に関連付けます
resource "alicloud_route_table_attachment" "example_route_table_attachment1" {
  vswitch_id     = alicloud_vswitch.example_vsw1.id
  route_table_id = alicloud_route_table.example_route_table1.id
}

# カスタムルートテーブルを作成します
resource "alicloud_route_table" "example_route_table2" {
  route_table_name = "example_route_table2_name"
  vpc_id           = alicloud_vpc.example_vpc2.id
}

# ルートテーブルを vSwitch に関連付けます
resource "alicloud_route_table_attachment" "example_route_table_attachment2" {
  vswitch_id     = alicloud_vswitch.example_vsw2.id
  route_table_id = alicloud_route_table.example_route_table2.id
}

# VPC ピアリング接続を作成します
resource "alicloud_vpc_peer_connection" "example_vpc_peer" {
  peer_connection_name = "example_vpc_peer_name"
  vpc_id               = alicloud_vpc.example_vpc1.id
  accepting_ali_uid    = "1234****" # ピア VPC を所有するアカウントの ID。この例では、同一アカウント内のピアリング接続を作成します。クロスアカウントピアリングの場合、ピアアカウントがリクエストを受け入れるように alicloud_vpc_peer_connection_accepter を作成します。
  accepting_region_id  = "cn-hangzhou"
  accepting_vpc_id     = alicloud_vpc.example_vpc2.id
}

# ピアリング接続のルートを設定します
resource "alicloud_route_entry" "example_peer_route1" {
  route_table_id        = alicloud_route_table.example_route_table1.id
  destination_cidrblock = "30.0.0.0/16"
  nexthop_type          = "VpcPeer"
  nexthop_id            = alicloud_vpc_peer_connection.example_vpc_peer.id
}

# ピアリング接続のルートを設定します
resource "alicloud_route_entry" "example_peer_route2" {
  route_table_id        = alicloud_route_table.example_route_table2.id
  destination_cidrblock = "10.0.0.0/16"
  nexthop_type          = "VpcPeer"
  nexthop_id            = alicloud_vpc_peer_connection.example_vpc_peer.id
}

# IPv4 ゲートウェイを作成します
resource "alicloud_vpc_ipv4_gateway" "example_ipv4gw" {
  ipv4_gateway_name = "example_ipv4gw_name"
  vpc_id            = alicloud_vpc.example_vpc1.id
  enabled           = true
}

# IPv4 ゲートウェイを指すルートを追加します
resource "alicloud_route_entry" "example_igw_route" {
  route_table_id        = alicloud_route_table.example_route_table1.id
  destination_cidrblock = "0.0.0.0/0"
  nexthop_type          = "Ipv4Gateway"
  nexthop_id            = alicloud_vpc_ipv4_gateway.example_ipv4gw.id
}

インバウンドインターネットトラフィックのリダイレクト (サードパーティ製セキュリティデバイス)

IPv4 ゲートウェイは、アウトバウンドのインターネットトラフィックのみを集中管理できます。VPC に入るインバウンドトラフィックについては、ゲートウェイルートテーブルを IPv4 ゲートウェイに関連付けて、インバウンドトラフィックをセキュリティデバイスにリダイレクトし、詳細な検査とフィルタリングを行うことで、悪意のある攻撃や不正アクセスを防ぎます。カスタムルートテーブルと組み合わせることで、アウトバウンドトラフィックもセキュリティデバイスにリダイレクトし、包括的なインバウンドおよびアウトバウンドの保護を実現できます。

IPv4 ゲートウェイは、ゲートウェイルートテーブル (ボーダーゲートウェイタイプのルートテーブル) にのみ関連付けることができます。各 VPC は、1 つの IPv4 ゲートウェイと 1 つのゲートウェイルートテーブルのみをサポートし、1 対 1 でバインドされます。
インバウンドトラフィックのリダイレクトを設定するには、ゲートウェイルートテーブルのシステムルートエントリを変更し、対象の vSwitch CIDR ブロックのネクストホップをセキュリティデバイスに設定します。ゲートウェイルートテーブルは、ルートエントリの追加 によるカスタムルートの作成をサポートしていません。

シングルポイントアーキテクチャ

GWLB 高可用性アーキテクチャ

シングルポイントアーキテクチャでは、セキュリティデバイスの障害がシステム全体の可用性に影響します。Gateway Load Balancer (GWLB) の背後にセキュリティデバイスをデプロイすることで、高可用性を実現し、単一障害点を排除します。

インバウンド IPv4 インターネットトラフィックパス

アウトバウンド IPv4 インターネットトラフィックパス

1. IPv4 トラフィックは、IPv4 ゲートウェイを介してビジネス VPC に入ります。

2. ゲートウェイルートテーブルは、トラフィックを GWLBe (Gateway Load Balancer Endpoint) に転送します。

3. GWLBe はトラフィックを GWLB に転送し、GWLB はそれをセキュリティデバイスに分散します。

4. 検査後、トラフィックは GWLB に戻り、PrivateLink を介して GWLBe に戻ります。

5. GWLBe サブネットのルートテーブルは、トラフィックをビジネスサーバーに転送します。

1. ビジネスサーバーサブネットのルートテーブルは、トラフィックを GWLBe に転送します。

2. GWLBe はトラフィックを GWLB に転送し、GWLB はそれをセキュリティデバイスに分散します。

3. 検査後、トラフィックは GWLB に戻り、PrivateLink を介して GWLBe に戻ります。

4. GWLBe サブネットのルートテーブルは、トラフィックを IPv4 ゲートウェイに転送します。

5. IPv4 ゲートウェイは、トラフィックをインターネットにルーティングします。

ゲートウェイルートテーブルを設定するには:対象の vSwitch CIDR ブロックのシステムルートを見つけ、操作 列の 編集 をクリックし、ネクストホップを GWLBe に設定します。保存後、ルートエントリは カスタムルート タブに表示されます。

コンソール

ゲートウェイルートテーブルの関連付け

対象の IPv4 ゲートウェイの詳細ページで、関連付け をクリックします。または、対象のゲートウェイルートテーブルの詳細ページの 関連付けられたボーダーゲートウェイ タブで、ボーダーゲートウェイの関連付け をクリックし、対象の IPv4 ゲートウェイを選択します。

ゲートウェイルートテーブルの関連付け解除

対象の IPv4 ゲートウェイの詳細ページ、または対象のゲートウェイルートテーブルの詳細ページの 関連付けられたボーダーゲートウェイ タブで、バインド解除 をクリックします。

API

Terraform

リソース: alicloud_vpc_gateway_route_table_attachment
# IPv4 ゲートウェイがデプロイされているリージョンを指定します
provider "alicloud" {
  region = "cn-hangzhou"
}

# IPv4 ゲートウェイ ID を指定します
variable "ipv4_gateway_id" {
  default = "ipv4gw-hp3v******" # 実際の IPv4 ゲートウェイ ID に置き換えてください
}

# ゲートウェイルートテーブル ID を指定します
variable "route_table_id" {
  default = "vtb-hp3w******" # 実際のゲートウェイルートテーブル ID に置き換えてください
}

# ゲートウェイルートテーブルを関連付けます
resource "alicloud_vpc_gateway_route_table_attachment" "example_attachment" {
  ipv4_gateway_id = var.ipv4_gateway_id
  route_table_id  = var.route_table_id
}

追加情報

制限事項

  • 各 VPC は 1 つの IPv4 ゲートウェイのみをサポートし、1 つの IPv4 ゲートウェイは 1 つの VPC にのみ関連付けることができます。

  • VPC 内のいずれかのリソースが EIP 可視モードを使用している場合、IPv4 ゲートウェイを作成することはできません。

    たとえば、VPC 内のインターネット NAT ゲートウェイの EIP バインディングモードがマルチ EIP 可視モードに設定されている場合、IPv4 ゲートウェイと互換性がありません。ModifyNatGatewayAttribute を呼び出して、互換性のために EipBindModeNAT モードに変更します。

  • 共有 VPC シナリオでは、リソース所有者のみが IPv4 ゲートウェイを作成、変更、または削除できます。リソース使用者はこれらの権限を持ちません。

  • EIP または Anycast EIP がプライベート向きの Classic Load Balancer (CLB) インスタンスに関連付けられている場合:

    • 以下のリージョンでは、インターネットアクセストラフィックも IPv4 ゲートウェイの制限を受けます。サポートされているリージョンは変更される可能性があります。

      アジア太平洋 - 中国: 中国 (杭州)中国 (上海)中国 (青島)中国 (フフホト)中国 (ウランチャブ)中国 (深セン)中国 (広州)中国 (成都)中国 (香港)
      アジア太平洋 - その他: 日本 (東京)マレーシア (クアラルンプール)インドネシア (ジャカルタ)マレーシア (ジョホール)タイ (バンコク)フィリピン (マニラ)
      ヨーロッパおよびアメリカ: イギリス (ロンドン)フランス (パリ)米国 (バージニア)米国 (シリコンバレー)
      中東: サウジアラビア (リヤド - パートナー運営)
      • パブリック vSwitch にデプロイされたプライベート向きの CLB は、パブリック IP アドレスを関連付けた後、インターネットにアクセスできます。

      • プライベート vSwitch にデプロイされたプライベート向きの CLB は、パブリック IP アドレスを持っていてもインターネットにアクセスできません。インターネット NAT ゲートウェイを指すルートを設定して、インターネット宛てのトラフィックを NAT ゲートウェイ経由でルーティングし、その関連付けられたパブリック IP アドレスを使用してインターネットにアクセスします。

    • 他のリージョンでは、インターネットアクセストラフィックは IPv4 ゲートウェイの制限を受けません。

課金

IPv4 ゲートウェイは無料です。

インターネットトラフィックのコストは、関連付けられたパブリック IP アドレス (EIP や ECS/CLB インスタンスの固定パブリック IP アドレスなど) によって発生します。各プロダクトの課金ドキュメントをご参照ください。

サポートされているリージョン

エリア

リージョン

アジア太平洋 - 中国

中国 (杭州)中国 (上海)中国 (南京-ローカルリージョン、提供終了)中国 (青島)中国 (北京)中国 (張家口)中国 (フフホト)中国 (ウランチャブ)中国 (深セン)中国 (河源)中国 (広州)中国 (成都)中国 (中衛)中国 (香港)中国 (武漢 - ローカルリージョン)中国 (福州-ローカルリージョン、提供終了)

アジア太平洋 - その他

日本 (東京)韓国 (ソウル)シンガポール (シンガポール)マレーシア (クアラルンプール)インドネシア (ジャカルタ)フィリピン (マニラ)タイ (バンコク)マレーシア (ジョホール)

ヨーロッパ & アメリカ

ドイツ (フランクフルト)イギリス (ロンドン)フランス (パリ)米国 (シリコンバレー)米国 (バージニア)メキシコ、および ブラジル (サンパウロ)

中東

UAE (ドバイ) および サウジアラビア (リヤド - パートナー運営)

クォータ

クォータ名

説明

デフォルトの制限

調整可能

なし

VPC ごとの IPv4 ゲートウェイの最大数。

1

いいえ

IPv4 ゲートウェイごとのゲートウェイルートテーブルの最大数。

1