デフォルトでは、パブリック IP アドレスが割り当てられている Virtual Private Cloud (VPC) 内のリソースはインターネットにアクセスできます。管理されていないインターネットアクセスによるセキュリティリスクを軽減するには、IPv4 ゲートウェイを使用し、ルートテーブルを設定して、すべてのインターネット向けトラフィックを一元化します。これにより、分散アクセスに関連するセキュリティリスクが軽減されます。
IPv4 ゲートウェイを使用する理由
コンポーネント | 直接インターネットアクセス (デフォルト) | IPv4 ゲートウェイによる一元管理 |
例 | ECS インスタンスは、固定パブリック IP アドレス、Elastic IP Address (EIP)、またはインターネット NAT Gateway を使用してインターネットにアクセスします。 | インターネットアクセストラフィックは一元管理されます。 |
シナリオ | 独立した直接のインターネットアクセスを必要とする少数の ECS インスタンス。 変化するインターネットアクセス需要のある環境向けに設計されています。 | 複数の階層を持つ大規模なネットワークアーキテクチャ。 厳格なネットワークセキュリティとコンプライアンス要件を持つエンタープライズ環境向けに設計されています。 |
複雑さ | シンプルで高速、ルート設定は不要です。 | ネットワーク計画とルート設定が必要です。 |
柔軟性 | 各インスタンスは他者に影響を与えることなく独立して管理されます。 | ルートテーブルへの変更は、関連付けられた vSwitch 内のすべてのリソースに影響します。 |
セキュリティ | セキュリティは主に、個々のインスタンスごとに設定されたセキュリティグループルールに依存します。 | ネットワークポリシーの一貫性とセキュリティを確保します。 |
IPv4 ゲートウェイと NAT ゲートウェイの比較
IPv4 ゲートウェイとインターネット NAT Gateway は一緒に使用できます。これらのネットワークコンポーネントの詳細については、「インターネットアクセス」をご参照ください。
コンポーネント | IPv4 ゲートウェイ | インターネット NAT ゲートウェイ |
機能 | VPC の境界にあるコンポーネントで、パブリック IPv4 トラフィックを制御します。 | VPC 内のネットワークアドレス変換デバイスです。 |
シナリオ | インターネットアクセストラフィックの一元管理 | インターネット向けトラフィックに統一された出口を提供します。 |
インターネットアクセスを提供 | いいえ。インターネットトラフィックの制御のみです。 | はい、EIP を関連付けることで提供します (インターネットアクセスは EIP によって提供され、インターネット NAT Gateway 自体では提供されません)。 |
IPv4 ゲートウェイを作成すると、vSwitch は次の 2 種類に分類されます:
パブリック vSwitch: [宛先 CIDR ブロック] が
0.0.0.0/0で、[ネクストホップ] が IPv4 ゲートウェイを指すルートエントリを持つ vSwitch は、パブリック vSwitch と見なされます。この vSwitch 内のリソースは、パブリック IP アドレスを持っていればインターネットにアクセスできます。プライベート vSwitch: IPv4 ゲートウェイへのルートエントリを持たない vSwitch は、プライベート vSwitch と見なされます。この vSwitch 内のリソースは、パブリック IP アドレスが割り当てられていても、直接インターネットにアクセスすることはできません。
IPv4 ゲートウェイをインターネット NAT Gateway と一緒に使用する場合、インターネット NAT Gateway をパブリック vSwitch にデプロイします。インターネットアクセスを必要とするプライベート vSwitch 内の ECS インスタンスは、インターネット NAT Gateway を指すようにルートを設定する必要があります。これにより、インターネット向けのトラフィックがインターネット NAT Gateway に転送され、NAT ゲートウェイは自身のパブリック IP を使用してインターネットにアクセスします。次の点に注意してください:
インターネット NAT ゲートウェイの
EipBindModeが、IPv4 ゲートウェイとの互換性のためにNATに設定されていることを確認してください。コンソールで作成されたインターネット NAT ゲートウェイは、デフォルトで
NATモードです。CreateNatGateway 操作を呼び出すには、EipBindModeをNATに設定する必要があります。作成後、ModifyNatGatewayAttribute を呼び出してEipBindModeを変更します。既存のインターネット NAT ゲートウェイの
EipBindModeがMULTI_BINDEDに設定されている場合、IPv4 ゲートウェイは作成できません。IPv4 ゲートウェイが既に存在する場合、CreateNatGateway 操作を呼び出して
EipBindModeがMULTI_BINDEDに設定されたインターネット NAT ゲートウェイを作成して EIP をアタッチすることはできません。
IPv4 ゲートウェイを有効化した後、プライベート vSwitch 内のリソースがインターネットアクセスを失うのを防ぐために、有効化する前にルートを設定してください。
仕組み
IPv4 ゲートウェイを使用したインターネットアクセスの制御
VPC 用に IPv4 ゲートウェイが作成され、有効化されると、すべてのインターネットトラフィックが一元管理されます。vSwitch のルートを設定し、IPv4 ゲートウェイを指すようにします。これにより、vSwitch 内のリソースがインターネットにアクセスできるようになります。VPC 詳細ページに移動して、[IPv4 インターネットアクセスモード] がオンになっていることを確認します。
IPv4 ゲートウェイが有効化される前は、VPC 内のインターネットトラフィックは影響を受けません。トラフィックパスが切り替わる際に、有効化中に短いネットワーク中断が発生する可能性があります。
IPv4 ゲートウェイの削除
IPv4 ゲートウェイを削除するには、ゲートウェイルートテーブルの関連付けを解除する必要があります。対象の IPv4 ゲートウェイの [アクション] 列で、[削除] をクリックするか、DeleteIpv4Gateway 操作を呼び出します。削除モードは、リソースがインターネットにアクセスする方法に影響します。
パブリックモード: IPv4 ゲートウェイを指すすべてのルートを自動的に削除します。VPC は初期状態に戻り、パブリック IP を持つインスタンスはインターネットアクセスを回復します。
プライベートモード: IPv4 ゲートウェイを削除する前に、まず IPv4 ゲートウェイを指すすべてのルートを手動で削除します。削除後、VPC 内のすべてのリソースはインターネットアクセスを失います。これを復元するには、新しい IPv4 ゲートウェイを作成し、パブリックモードで削除します。
重要プライベートモードで IPv4 ゲートウェイを削除すると、パブリック IP アドレスを持っているかどうかに関係なく、VPC 内のすべてのリソースがインターネットアクセスを失います。注意して進めてください。
インターネットアクセスの一元管理
場合によっては、業務チームが ECS インスタンスにパブリック IP を割り当て、中央の監督をバイパスすることがあります。これにより、運用チームによるインターネットアクセスの一元管理が効果的に行えなくなります。IPv4 ゲートウェイを使用してインターネットトラフィックの制御を一元化することで、分散アクセスによってもたらされるセキュリティリスクを軽減できます。
コンソール
[VPC コンソール] - [IPv4 ゲートウェイ] ページで、VPC がデプロイされているリージョンを選択し、[IPv4 ゲートウェイの作成] をクリックします。
IPv4 ゲートウェイの作成: 一元的なアクセスが必要な [VPC] を選択します。
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 のルートテーブルで、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"
}
# 複数のサーバーを作成します。
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/8、172.16.0.0/12、192.168.0.0/16) を使用します。VPC がオンプレミスのデータセンターや、非標準のプライベート CIDR (例: 30.0.0.0/16) を使用する別の VPC に接続する場合、この非標準ネットワークを宛先とするインターネットアクセスを持つリソースからのトラフィックは、プライベートルートではなく、インターネット経由でルーティングされます。
IPv4 ゲートウェイを作成して有効化すると、インターネットアクセスが一元管理され、すべてのトラフィックがルートテーブルに従って転送されます。リソースがインターネットにアクセスできるようにするには、vSwitch でゲートウェイを指す 0.0.0.0/0 ルートを設定する必要があります。最長プレフィックス一致ルールに基づき、ECS02 宛てのトラフィックは、より具体的な 30.0.0.0/16 ルートに一致し、ピア VPC に転送されます。
コンソール
[VPC コンソール] - [IPv4 ゲートウェイ] ページに移動します。VPC がデプロイされているリージョンを選択し、[IPv4 ゲートウェイの作成] をクリックします。
IPv4 ゲートウェイの作成: 非標準のプライベート CIDR ブロックにアクセスする必要がある [VPC] を選択します。
IPv4 ゲートウェイの有効化: 非標準のプライベート CIDR ブロックにアクセスする必要がある vSwitch に関連付けられたルートテーブルを選択します。システムは自動的に、IPv4 ゲートウェイを指す
0.0.0.0/0ルートを追加します。これにより、vSwitch 内のリソースが非標準のプライベート CIDR ブロックにアクセスできるようになります。関連付けられたルートテーブルに、宛先 CIDR が
0.0.0.0/0のルートがないことを確認してください。そのようなルートが存在する場合は、[後で有効化] をクリックし、ルートを削除してから IPv4 ゲートウェイを有効化します。有効化後、IPv4 ゲートウェイはインターネット向けのトラフィックを一元管理し、すべてのトラフィックはルートテーブルに従って転送されます。
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_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。この例では、同一アカウントの 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 ゲートウェイは、アウトバウンドのインターネットトラフィックを一元管理します。インバウンドのインターネットトラフィックについては、IPv4 ゲートウェイにアタッチされたゲートウェイルートテーブルを使用して、トラフィックをセキュリティデバイスにリダイレクトして検査およびフィルタリングできます。これにより、悪意のある攻撃や不正アクセスを防ぐことができます。また、カスタムルートテーブルを使用して、アウトバウンドトラフィックを同じセキュリティデバイスにリダイレクトし、包括的なセキュリティ保護を実現することもできます。
IPv4 ゲートウェイは、アウトバウンドのインターネットトラフィックのみを一元管理します。インバウンドのインターネットトラフィックを監視するには、IPv4 ゲートウェイにアタッチされたゲートウェイルートテーブルを使用します。これにより、インバウンドのインターネットトラフィックが検査のためにセキュリティデバイスにリダイレクトされ、悪意のある攻撃や不正アクセスが防止されます。これをカスタムルートテーブルと組み合わせることで、アウトバウンドトラフィックもセキュリティデバイスにリダイレクトして、包括的なセキュリティを実現できます。
IPv4 ゲートウェイは、ボーダーゲートウェイ用のルートテーブルの一種であるゲートウェイルートテーブルにのみ関連付けることができます。各 VPC は 1 つの IPv4 ゲートウェイと 1 つのゲートウェイルートテーブルのみをサポートし、この 2 つは 1 対 1 でバインドされます。
シングルポイントアーキテクチャ
GWLB 高可用性アーキテクチャ
シングルポイントアーキテクチャでは、セキュリティデバイスの障害が業務システムの可用性を中断させます。Gateway Load Balancer (GWLB) を使用して、セキュリティデバイスを高可用性でデプロイし、単一障害点を排除します。
インバウンド IPv4 インターネットトラフィック | アウトバウンド IPv4 インターネットトラフィック |
1. IPv4 トラフィックは、IPv4 ゲートウェイを介して業務 VPC に入ります。 2. トラフィックは、ゲートウェイルートテーブルによって指示され、GWLB エンドポイント (GWLBe) に送信されます。 3. GWLBe はトラフィックを GWLB に転送し、GWLB はトラフィックをセキュリティデバイスに転送します。 4. セキュリティデバイスがチェックを完了した後、トラフィックは GWLB に返され、PrivateLink を介して GWLBe に戻ります。 5. トラフィックは、設定されたルートテーブルに基づいて業務サーバーに送信されます。 | 1. トラフィックは、設定されたルートテーブルに基づいて GWLBe に送信されます。 2. GWLBe はトラフィックを GWLB に転送し、GWLB はトラフィックをセキュリティデバイスに転送します。 3. セキュリティデバイスがチェックを完了した後、トラフィックは GWLB に返され、PrivateLink を介して GWLBe に戻ります。 4. トラフィックは、設定されたルートテーブルに基づいて IPv4 ゲートウェイに送信されます。 5. IPv4 ゲートウェイは、トラフィックをインターネットにルーティングします。 |
コンソール
ゲートウェイルートテーブルのアタッチ
IPv4 ゲートウェイの詳細ページで、[バインド] をクリックします。または、対象のゲートウェイルートテーブルの詳細ページの [関連付けられたボーダーゲートウェイ] タブで、[ボーダーゲートウェイの関連付け] をクリックし、対象の IPv4 ゲートウェイを選択します。
ゲートウェイルートテーブルのデタッチ
対象の IPv4 ゲートウェイの詳細ページ、またはゲートウェイルートテーブルの [関連付けられたボーダーゲートウェイ] タブで、[関連付けの解除] をクリックします。
API
AssociateRouteTableWithGateway を呼び出してゲートウェイルートテーブルをアタッチします。
DissociateRouteTableFromGateway を呼び出してゲートウェイルートテーブルをデタッチします。
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 ゲートウェイしか作成できず、IPv4 ゲートウェイは 1 つの VPC にしか関連付けることができません。
VPC 内にEIP 可視モードのリソースがある場合、IPv4 ゲートウェイを作成することはできません。
たとえば、インターネット NAT ゲートウェイの EIP 関連付けモードがマルチ EIP 可視モードに設定されている場合、そのインターネット NAT ゲートウェイは IPv4 ゲートウェイと互換性がありません。ModifyNatGatewayAttribute 操作を呼び出して、互換性を確保するために
EipBindModeをNATモードに変更する必要があります。共有 VPC シナリオでは、リソース所有者は IPv4 ゲートウェイを作成、変更、または削除できますが、リソースユーザーにはこれらの操作を実行する権限がありません。
EIP または Anycast EIP をプライベート向けの Classic Load Balancer (CLB) インスタンスにアタッチすると、インターネットからの戻りトラフィックは IPv4 ゲートウェイによって管理されません。
課金
IPv4 ゲートウェイに追加料金はかかりません。
EIP や ECS または CLB インスタンスの固定パブリック IP などのパブリック IP には、データ転送料金が課金されます。詳細については、関連プロダクトの課金ドキュメントをご参照ください。
サポートされているリージョン
エリア | リージョン |
アジア太平洋 - 中国 | 中国 (杭州)、中国 (上海)、中国 (南京 - ローカルリージョン)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (フフホト)、中国 (ウランチャブ)、中国 (深圳)、中国 (河源)、中国 (広州)、中国 (成都)、中国 (香港)、中国 (武漢 - ローカルリージョン)、および 中国 (福州 - ローカルリージョン) |
アジア太平洋 - その他 | 日本 (東京)、韓国 (ソウル)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、フィリピン (マニラ)、および タイ (バンコク) |
ヨーロッパ & アメリカ | ドイツ (フランクフルト)、英国 (ロンドン)、米国 (シリコンバレー)、米国 (バージニア)、および メキシコ |
中東 | UAE (ドバイ) および サウジアラビア (リヤド - パートナーリージョン) 重要 サウジアラビア (リヤド - パートナーリージョン) リージョンはパートナーによって運営されています。 |
クォータ
クォータ名 | 説明 | デフォルトの制限 | クォータの引き上げ |
なし | VPC でサポートされる IPv4 ゲートウェイの数。 | 1 | 引き上げできません。 |
IPv4 ゲートウェイでサポートされるゲートウェイルートテーブルの数。 | 1 |