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

Virtual Private Cloud:IPv4 ゲートウェイ

最終更新日:Mar 11, 2026

デフォルトでは、仮想プライベートクラウド (VPC) 内のリソースは、パブリック IP アドレスが割り当てられている場合、IPv4 を使用してインターネットにアクセスできます。ただし、承認なしでビジネス部門が Elastic Compute Service (ECS) インスタンスにパブリック IP アドレスを割り当てるなど、管理されていないインターネットアクセスは、セキュリティリスクを引き起こす可能性があります。IPv4 ゲートウェイおよび関連するルートテーブルを使用すると、すべてのインターネット向けトラフィックを一元的なポイントに集約し、分散型アクセスによるセキュリティリスクを低減できます。

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

ディメンション

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

IPv4 ゲートウェイによる一元管理

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

インターネットアクセストラフィックの一元管理を提供します。

利用シーン

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

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

大規模・マルチレイヤーのネットワークアーキテクチャに適しています。

ネットワークセキュリティおよびコンプライアンスに対する要件が厳しいエンタープライズ環境に適しています。

複雑さ

シンプルかつ迅速です。ルーティング設定は不要です。

ネットワーク計画およびルーティングルールの設定が必要です。

柔軟性

各インスタンスが個別に管理され、他のインスタンスには影響しません。

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

セキュリティ

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

IPv4 ゲートウェイの一元制御モードにより、一貫性と包括性のあるネットワークポリシーの適用が保証されます。

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

IPv4 ゲートウェイとインターネット NAT ゲートウェイは併用可能です。詳細については、「インターネットアクセス」をご参照ください。

観点

IPv4 ゲートウェイ

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

目的

VPC の境界にあるコンポーネントで、パブリック IPv4 トラフィックを制御します。

VPC 内部に配置されるネットワークアドレス変換 (NAT) デバイスです。

利用シーン

インターネットアクセストラフィックを一元的に制御します。

インターネット向けトラフィックの統一出口を提供します。

サポートされるインターネットアクセス

いいえ。インターネットトラフィックの制御のみを提供します。

EIP をアタッチすることでインターネットアクセスを提供します。

(インターネットアクセス機能は、NAT ゲートウェイ自体ではなく EIP によって提供されます。)

IPv4 ゲートウェイを作成後、vSwitch は以下の 2 種類に分類されます:

  • パブリック vSwitch:関連付けられたルートテーブルに、CIDR0.0.0.0/0 であり、ネクストホップ が IPv4 ゲートウェイであるルートが含まれます。この vSwitch 内のリソースは、パブリック IP アドレスが割り当てられている場合、インターネットにアクセスできます。

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

IPv4 ゲートウェイとインターネット NAT ゲートウェイを併用する場合、インターネット NAT ゲートウェイはパブリック vSwitch にデプロイしてください。プライベート vSwitch 内の ECS インスタンスのインターネットアクセスを有効にするには、インターネット NAT ゲートウェイを指すルートを設定します。このルートにより、インターネット向けトラフィックがインターネット NAT ゲートウェイに転送され、そのアタッチ済みのパブリック IP アドレスを使用してインターネットにアクセスします。以下の点にご注意ください:

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

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

    • EipBindModeMULTI_BINDED モードに設定されているインターネット NAT ゲートウェイがある場合、IPv4 ゲートウェイを作成できません。両者は互換性がありません。

    • IPv4 ゲートウェイが既に存在する状態で、CreateNatGateway 操作を呼び出して EipBindModeMULTI_BINDED モードでインターネット NAT ゲートウェイを作成した場合、EIP を NAT ゲートウェイにアタッチできません。

  • IPv4 ゲートウェイを有効化した後も、プライベート vSwitch 内のリソースがインターネットアクセスを維持できるよう、有効化前にルートを設定してください。

image

仕組み

IPv4 ゲートウェイを使用したインターネットアクセスの制御

VPC に対して IPv4 ゲートウェイを作成・有効化すると、すべてのインターネットトラフィックを一元的に管理します。vSwitch に関連付けられたルートテーブルに、IPv4 ゲートウェイを指すルートを設定します。これにより、vSwitch 内のリソースがインターネットにアクセスできるようになります。VPC 詳細ページで、IPv4 パブリックネットワークへのアクセスモード を確認して、IPv4 ゲートウェイがインターネットトラフィックを一元的に制御しているかどうかを確認できます。

IPv4 ゲートウェイが有効化される前は、VPC 内のインターネットトラフィックは影響を受けません。ただし、トラフィックパスの切り替えに伴い、有効化時に一時的なネットワーク中断が発生する場合があります。
image

IPv4 ゲートウェイの削除

IPv4 ゲートウェイを削除する前に、まずゲートウェイルートテーブルの関連付けを解除してください。対象の IPv4 ゲートウェイの 操作 列で、削除 をクリックするか、DeleteIpv4Gateway 操作を呼び出して IPv4 ゲートウェイを削除します。ゲートウェイを削除すると、選択したモードに応じて VPC 内のリソースのインターネットアクセス方法が決定されます。

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

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

    重要

    プライベートモードで IPv4 ゲートウェイを削除した場合、パブリック IP アドレスが割り当てられていても、VPC 内のすべてのリソースがインターネットアクセスを失います。慎重に操作してください。

image

インターネットアクセスの一元管理

承認なしでビジネス部門が ECS インスタンスにパブリック IP アドレスを割り当てるなど、管理されていないインターネットアクセスは、運用・保守 (O&M) チームによるインターネットアクセスの一元管理を困難にします。IPv4 ゲートウェイを使用してインターネット向けトラフィックを一元的に制御することで、分散型アクセスによるセキュリティリスクを低減し、これらの管理課題を解決できます。

コンソール

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

  2. IPv4 ゲートウェイの作成: インターネットアクセスを一元化する VPC を選択します。

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

    • ECS インスタンスが、インターネット NAT ゲートウェイにアタッチされたパブリック IP アドレスを使用してインターネットにアクセスする場合、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

コンソールとは異なり、システムは IPv4 ゲートウェイの有効化時に、IPv4 ゲートウェイを指す 0.0.0.0/0 ルートを自動的に追加しません。ルートは手動で設定する必要があります。

リソース:alicloud_vpcalicloud_vswitchalicloud_vpc_ipv4_gatewayalicloud_route_tablealicloud_route_table_attachmentalicloud_vpc_route_entryalicloud_instancealicloud_security_groupalicloud_security_group_rulealicloud_eip_addressalicloud_eip_associationalicloud_nat_gatewayalicloud_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"
}

# 複数のサーバーを作成します。
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/12192.168.0.0/16)を使用します。VPC が、非標準のプライベート CIDR ブロック(例:30.0.0.0/16)を使用するオンプレミスデータセンターまたは別の VPC に接続される場合、インターネットアクセスを持つクラウドリソースから非標準のプライベート CIDR ブロックへのリクエストは、設定されたプライベートルートに基づいて転送されるのではなく、インターネットを経由してルーティングされます。

VPC に対して IPv4 ゲートウェイを作成・有効化すると、IPv4 ゲートウェイがインターネットアクセスを一元的に制御し、すべてのトラフィックがルートテーブルに基づいて転送されます。vSwitch 内のリソースがインターネットに直接アクセスできるようにするには、vSwitch に関連付けられたルートテーブルに IPv4 ゲートウェイを指す 0.0.0.0/0 ルートを設定する必要があります。最長プレフィックス一致ルールに基づき、ECS02 へのトラフィックは 30.0.0.0/16 ルートに一致し、ピア VPC にルーティングされます。

image

コンソール

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

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

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

    • 添付されたルートテーブルに宛先 CIDR ブロックが 0.0.0.0/0 のルートが含まれていないことを確認してください。含まれている場合は、有効化しない をクリックし、ルートを削除してから、再度ルートテーブルを有効化してください。

    • 有効化後、IPv4 ゲートウェイがインターネット向けトラフィックを一元的に制御し、すべてのトラフィックがルートテーブルに基づいて転送されます。

API

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

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

Terraform

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

リソース:alicloud_vpcalicloud_vswitchalicloud_vpc_ipv4_gatewayalicloud_route_tablealicloud_route_table_attachmentalicloud_vpc_route_entryalicloud_instancealicloud_security_groupalicloud_security_group_rulealicloud_eip_addressalicloud_eip_associationalicloud_vpc_peer_connection
データソース:alicloud_zones
この例では、ピアリング接続内の VPC は同一アカウントに属しています。クロスアカウントピアリング接続を作成する場合、ピアアカウントが 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。この例では、同一アカウントの VPC ピアリング接続を作成しています。クロスアカウントピアリング接続を作成する場合、ピアアカウントが VPC ピアリング接続要求を受諾できるよう、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 ゲートウェイにアタッチされた gateway route table を使用して、トラフィックをセキュリティデバイスにリダイレクトし、深層検査およびフィルタリングを行います。これにより、悪意のある攻撃や不正アクセスを防止し、セキュリティ保護を実現できます。また、カスタムルートテーブルを使用してアウトバウンドトラフィックをセキュリティデバイスにリダイレクトすることも可能で、インバウンドおよびアウトバウンドの包括的なセキュリティ保護を提供できます。

IPv4 ゲートウェイは、ボーダーゲートウェイ用のルートテーブルである gateway route table のみにアタッチできます。各 VPC は、1 つの IPv4 ゲートウェイおよび 1 つの gateway route table のみをサポートします。これらは 1 対 1 の関係でアタッチされます。

単一ポイントアーキテクチャ

image

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

単一ポイントアーキテクチャでは、セキュリティデバイスの障害が業務システムの可用性に影響を与えます。Gateway Load Balancer (GWLB) を使用すると、セキュリティデバイスを高可用性でデプロイし、単一障害点を排除できます。

image

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

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

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

2. gateway route table に基づき、トラフィックが Gateway Load Balancer エンドポイント (GWLBe) に送信されます。

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

4. セキュリティデバイスによるセキュリティチェック完了後、トラフィックは PrivateLink を介して GWLB および GWLBe に返されます。

5. GWLBe サブネットに設定されたルートテーブルに基づき、トラフィックがビジネスサーバーに送信されます。

1. ビジネスサーバーサブネットに設定されたルートテーブルに基づき、トラフィックが GWLBe に送信されます。

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

3. セキュリティデバイスによるセキュリティチェック完了後、トラフィックは PrivateLink を介して GWLB および GWLBe に返されます。

4. GWLBe サブネットに設定されたルートテーブルに基づき、トラフィックが IPv4 ゲートウェイに送信されます。

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

コンソール

gateway route table のアタッチ

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

gateway route table のデタッチ

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

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 に置き換えてください。
}

# gateway route table の ID を指定します。
variable "route_table_id" {
  default = "vtb-hp3w******" # 値を実際の gateway route table ID に置き換えてください。
}

# gateway route table をアタッチします。
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 ゲートウェイのみをサポートし、IPv4 ゲートウェイは 1 つの VPC のみに関連付けられます。

  • VPC 内に カットスルー モード で動作するリソースが存在する場合、IPv4 ゲートウェイを作成できません。

    たとえば、VPC 内のインターネット NAT ゲートウェイの EIP 関連付けモードがマルチ EIP 可視モードに設定されている場合、インターネット NAT ゲートウェイは IPv4 ゲートウェイと互換性がありません。ModifyNatGatewayAttribute 操作を呼び出して EipBindModeNAT モードに変更し、互換性を確保してください。

  • 共有 VPC シナリオでは、リソース所有者が IPv4 ゲートウェイの作成・変更・削除を行えますが、プリンシパルにはこれらの操作を行う権限はありません。

  • プライベート向けクラシックロードバランサー (CLB) インスタンスに EIP または Anycast EIP をアタッチする場合:

    • イギリス (ロンドン)日本 (東京)サウジアラビア (リヤド - パートナー運営)マレーシア (クアラルンプール)中国 (フフホト)、および 米国 (バージニア) では、インターネットアクセストラフィックも IPv4 ゲートウェイによって制限されます。

      対応リージョンは変更される場合があります。
      • パブリック vSwitch にデプロイされたプライベート向け CLB インスタンスは、パブリック IP アドレスをアタッチすることでインターネットにアクセスできます。

      • プライベート vSwitch にデプロイされたプライベート向け CLB インスタンスは、パブリック IP アドレスをアタッチしていてもインターネットにアクセスできません。インターネット NAT ゲートウェイを指すルートを設定することで、インターネット向けトラフィックをインターネット NAT ゲートウェイにルーティングできます。これにより、CLB インスタンスはインターネット NAT ゲートウェイのパブリック IP アドレスを使用してインターネットにアクセスできます。

        image
    • その他のリージョンでは、インターネットアクセストラフィックは IPv4 ゲートウェイによって制限されません。

課金

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

データ転送コストは、ECS や CLB インスタンスの EIP または固定パブリック IP アドレスなどのパブリック IP アドレスによって発生します。詳細については、関連製品の課金ドキュメントをご参照ください。

対応リージョン

エリア

IPv4 ゲートウェイをサポートするリージョン

アジアパシフィック - 中国

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

アジアパシフィック - その他

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

ヨーロッパおよびアメリカ

ドイツ (フランクフルト)イギリス (ロンドン)米国 (シリコンバレー)米国 (バージニア)メキシコ

中東

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

クォータ

クォータ名

説明

デフォルト制限

調整可能

なし

VPC あたりの IPv4 ゲートウェイ数。

1

いいえ。

IPv4 ゲートウェイあたりの gateway route table 数。

1