デフォルトでは、VPC (Virtual Private Cloud) 内のリソースは、パブリック IP アドレスが割り当てられると、IPv4 を介してインターネットにアクセスできます。しかし、事業部門が承認なしに Elastic Compute Service (ECS) インスタンスにパブリック IP アドレスを割り当てるなど、管理されていないインターネットアクセスはセキュリティリスクをもたらす可能性があります。IPv4 ゲートウェイと関連するルートテーブルを使用すると、すべてのインターネット宛のトラフィックを中央のポイントに集約し、分散アクセスによるセキュリティリスクを軽減できます。
IPv4 ゲートウェイを使用する理由
ディメンション | インターネットアクセス (デフォルト) | IPv4 ゲートウェイによる一元管理 |
例 | ECS インスタンスは、固定パブリック IP アドレス、EIP (Elastic IP Address)、またはインターネット NAT ゲートウェイを使用して、直接インターネットにアクセスします。 | インターネットアクセストラフィックの一元管理を提供します。 |
利用シーン | 少数の ECS インスタンスが、独立した直接のインターネットアクセスを必要とします。 インターネットアクセスの要件が頻繁に変わる場合に最適です。 | 大規模で多層的なネットワークアーキテクチャに適しています。 ネットワークセキュリティとコンプライアンスに対する厳しい要件があるエンタープライズ環境。 |
複雑さ | シンプルで高速です。ルート設定は不要です。 | ネットワーク計画とルーティングルールの設定が必要です。 |
柔軟性 | 各インスタンスは独立して管理され、他のインスタンスに影響を与えません。 | ネットワークポリシーの変更は、VPC 内のすべてのインスタンスに影響します。 |
セキュリティ | セキュリティ保護は、主に各インスタンスに設定されたセキュリティグループルールに依存します。 | IPv4 ゲートウェイの一元管理モードにより、一貫性のある包括的なネットワークポリシーの適用が保証されます。 |
IPv4 ゲートウェイと NAT ゲートウェイの比較
IPv4 ゲートウェイとインターネット NAT ゲートウェイは併用できます。詳細については、「インターネットアクセス」をご参照ください。
ディメンション | IPv4 ゲートウェイ | インターネット NAT ゲートウェイ |
目的 | VPC の境界にあるコンポーネントで、パブリック IPv4 トラフィックを制御します。 | VPC 内のネットワークアドレス変換 (NAT) デバイス。 |
シナリオ | インターネットアクセストラフィックを一元管理します。 | インターネット宛のトラフィックに統一された出口を提供します。 |
サポートされるインターネットアクセス | いいえ。インターネットトラフィックのみを制御します。 | EIP をアタッチすることでインターネットアクセスを提供します。 (インターネットアクセス機能は EIP によって提供され、NAT Gateway 自体では提供されません。) |
IPv4 ゲートウェイを作成すると、vSwitch は次の 2 種類に分類されます:
パブリック vSwitch:関連付けられたルートテーブルに、CIDR が
0.0.0.0/0で、ネクストホップ が IPv4 ゲートウェイであるルートが含まれています。この vSwitch 内のリソースは、パブリック IP アドレスが割り当てられていればインターネットにアクセスできます。プライベート vSwitch:関連付けられたルートテーブルに、IPv4 ゲートウェイを指すルートが含まれていません。この vSwitch 内のリソースは、パブリック IP アドレスが割り当てられていても、直接インターネットにアクセスすることはできません。
IPv4 ゲートウェイをインターネット NAT ゲートウェイと併用する場合、インターネット NAT ゲートウェイをパブリック vSwitch にデプロイします。プライベート vSwitch 内の ECS インスタンスがインターネットにアクセスできるようにするには、インターネット NAT ゲートウェイを指すルートを設定します。このルートは、インターネット宛のトラフィックをインターネット NAT ゲートウェイに転送し、インターネット NAT ゲートウェイはアタッチされたパブリック IP アドレスを使用してインターネットにアクセスします。次の点にご注意ください:
インターネット NAT ゲートウェイの
EipBindModeが、IPv4 ゲートウェイとの互換性のためにNATモードに設定されていることを確認してください。コンソールで作成されたインターネット NAT ゲートウェイは、デフォルトで
NATモードです。CreateNatGateway 操作を呼び出すときは、EipBindModeをNATに設定します。ゲートウェイの作成後、ModifyNatGatewayAttribute 操作を呼び出してEipBindModeを変更できます。EipBindModeがMULTI_BINDEDモードに設定されているインターネット NAT ゲートウェイがある場合、両者に互換性がないため、IPv4 ゲートウェイを作成できません。IPv4 ゲートウェイが既に存在する場合に、CreateNatGateway 操作を呼び出して
EipBindModeをMULTI_BINDEDモードに設定してインターネット NAT ゲートウェイを作成した場合、NAT ゲートウェイに EIP をアタッチできません。
IPv4 ゲートウェイをアクティブ化した後もプライベート vSwitch 内のリソースがインターネットアクセスを維持できるように、アクティブ化の前にルートを設定してください。
仕組み
IPv4 ゲートウェイを使用したインターネットアクセスの制御
VPC の IPv4 ゲートウェイを作成して有効化すると、すべてのインターネットトラフィックが一元的に管理されます。vSwitch に、IPv4 ゲートウェイを指すルートを設定します。これにより、vSwitch 内のリソースがインターネットにアクセスできるようになります。VPC 詳細ページで、IPv4 ゲートウェイがインターネットトラフィックを一元的に制御しているかどうかをIPv4 パブリックネットワークへのアクセスモードで確認します。
IPv4 ゲートウェイがアクティブ化される前は、VPC 内のインターネットトラフィックは影響を受けません。ただし、アクティブ化中にトラフィックパスが切り替わるため、一時的にネットワークが中断される可能性があります。
IPv4 ゲートウェイの削除
IPv4 ゲートウェイを削除する前に、まず gateway route table の関連付けを解除します。対象の IPv4 ゲートウェイの 操作 列で 削除 をクリックするか、DeleteIpv4Gateway 操作を呼び出して IPv4 ゲートウェイを削除します。ゲートウェイを削除すると、選択したモードによって VPC 内のリソースがインターネットにアクセスする方法が決まります。
パブリックモード:システムは IPv4 ゲートウェイを指すすべてのルートを自動的に削除します。VPC は初期状態に戻り、パブリック IP アドレスを持つインスタンスがインターネットにアクセスできるようになります。
プライベートモード:まず、ルートテーブルから IPv4 ゲートウェイを指すすべてのルートを削除します。ゲートウェイが削除されると、VPC 内のすべてのリソースはインターネットアクセスを失います。直接のインターネットアクセスを復元するには、新しい IPv4 ゲートウェイを作成し、それをパブリックモードで削除します。
重要プライベートモードで IPv4 ゲートウェイを削除すると、パブリック IP アドレスを持っているかどうかに関わらず、VPC 内のすべてのリソースがインターネットアクセスを失います。慎重に進めてください。
インターネットアクセスの一元管理
事業部門が承認なしに ECS インスタンスにパブリック IP アドレスを割り当てるなど、管理されていないインターネットアクセスは、運用保守 (O&M) チームがインターネットアクセスを一元管理することを困難にします。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 のルートテーブルには、パブリック 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 ゲートウェイを指す 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 に接続する場合、インターネットアクセスを持つクラウドリソースから非標準のプライベート CIDR ブロックへのリクエストは、設定されたプライベートルートに基づいて転送されるのではなく、インターネット経由でルーティングされます。
VPC 用に IPv4 ゲートウェイを作成してアクティブ化すると、IPv4 ゲートウェイがインターネットアクセスを一元管理し、すべてのトラフィックがルートテーブルに基づいて転送されます。vSwitch 内のリソースが直接インターネットにアクセスできるようにするには、vSwitch に IPv4 ゲートウェイを指す 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 ゲートウェイはインターネット宛のトラフィックを一元管理し、すべてのトラフィックはルートテーブルに基づいて転送されます。
API
CreateIpv4Gateway を呼び出して IPv4 ゲートウェイを作成します。
EnableVpcIpv4Gateway を呼び出して IPv4 ゲートウェイをアクティブ化します。
RouteTableListをパブリック vSwitch に関連付けられたルートテーブルに設定します。このパラメーターが指定されていない場合は、CreateRouteEntry を呼び出して、IPv4 ゲートウェイを指す0.0.0.0/0ルートを追加します。
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 は同じアカウントに属しています。クロスアカウントピアリング接続を作成する場合、ピアアカウントが 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 ゲートウェイにアタッチされたゲートウェイルートテーブルを使用して、トラフィックをセキュリティデバイスにリダイレクトし、ディープインスペクションとフィルタリングを行います。これにより、悪意のある攻撃や不正アクセスを防ぎ、セキュリティ保護を提供します。また、カスタムルートテーブルを使用してアウトバウンドトラフィックをセキュリティデバイスにリダイレクトし、包括的なインバウンドおよびアウトバウンドのセキュリティ保護を実現することもできます。
IPv4 ゲートウェイは、ボーダーゲートウェイ用のルートテーブルの一種であるゲートウェイルートテーブルにのみアタッチできます。各 VPC は 1 つの IPv4 ゲートウェイと 1 つのゲートウェイルートテーブルのみをサポートし、これらは 1 対 1 でアタッチされます。
インバウンドトラフィックをリダイレクトするには、ゲートウェイルートテーブルのシステムルートエントリを変更し、vSwitch CIDR ブロックのネクストホップをセキュリティアプライアンスに設定します。[ルートエントリの追加] をクリックしてゲートウェイルートテーブルにカスタムルートを作成することはできません。
シングルポイントアーキテクチャ
GWLB 高可用性アーキテクチャ
シングルポイントアーキテクチャでは、セキュリティデバイスの障害が業務システムの可用性に影響します。Gateway Load Balancer (GWLB) を使用すると、セキュリティデバイスを高可用性でデプロイし、単一障害点を排除できます。
インバウンド IPv4 インターネットトラフィックパス | アウトバウンド IPv4 インターネットトラフィックパス |
1. IPv4 トラフィックは、IPv4 ゲートウェイを介してビジネス VPC に入ります。 2. ゲートウェイルートテーブルに基づいて、トラフィックはゲートウェイロードバランサーエンドポイント (GWLBe) に送信されます。 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 ゲートウェイはトラフィックをインターネットにルーティングします。 |
gateway route table を設定するには、対象の vSwitch CIDR ブロックのシステムルートを検索します。操作 列で、編集 をクリックします。Gateway Load Balancer エンドポイントをネクストホップとして設定します。変更を保存すると、ルートエントリが カスタムルート タブに表示されます。
コンソール
ゲートウェイルートテーブルのアタッチ
対象の IPv4 ゲートウェイの詳細ページで、関連付け をクリックします。または、対象の ゲートウェイルートテーブル の詳細ページの 関連付けられたボーダーゲートウェイ タブで、ボーダーゲートウェイの関連付け をクリックし、対象の IPv4 ゲートウェイを選択します。
ゲートウェイルートテーブルのデタッチ
対象の IPv4 ゲートウェイの詳細ページ、または対象の gateway route table の詳細ページの 関連付けられたボーダーゲートウェイ タブで、バインド解除 をクリックします。
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
}
詳細情報
制限事項
1 つの VPC は 1 つの IPv4 ゲートウェイのみをサポートし、1 つの IPv4 ゲートウェイは 1 つの VPC にのみ関連付けることができます。
VPC 内に EIP 可視モードで動作するリソースが存在する場合、IPv4 ゲートウェイを作成することはできません。
たとえば、VPC 内のインターネット NAT ゲートウェイの EIP 関連付けモードがマルチ EIP 可視モードに設定されている場合、インターネット NAT ゲートウェイは IPv4 ゲートウェイと互換性がありません。ModifyNatGatewayAttribute 操作を呼び出して、互換性を確保するために
EipBindModeをNATモードに変更します。共有 VPC シナリオでは、リソース所有者は IPv4 ゲートウェイを作成、変更、または削除できますが、プリンシパルにはこれらの操作を実行する権限がありません。
EIP または Anycast EIP をプライベート向きの Classic Load Balancer (CLB) インスタンスにアタッチする場合:
イギリス (ロンドン)、日本 (東京)、サウジアラビア (リヤド - パートナー運営)、マレーシア (クアラルンプール)、中国 (フフホト)、および 米国 (バージニア) では、インターネットアクセストラフィックも IPv4 ゲートウェイによって制限されます。
サポートされているリージョンは変更される可能性があります。
パブリック vSwitch にデプロイされたプライベート向きの CLB インスタンスは、パブリック IP アドレスがアタッチされた後、インターネットにアクセスできます。
プライベート vSwitch にデプロイされたプライベート向きの CLB インスタンスは、パブリック IP アドレスがアタッチされていてもインターネットにアクセスできません。インターネット NAT ゲートウェイを指すルートを設定して、インターネット宛のトラフィックをインターネット NAT ゲートウェイにルーティングできます。これにより、CLB インスタンスはインターネット NAT ゲートウェイのパブリック IP アドレスを使用してインターネットにアクセスできます。
他のリージョンでは、インターネットアクセストラフィックは IPv4 ゲートウェイによって制限されません。
課金
IPv4 ゲートウェイは無料です。
データ転送料金は、EIP や ECS または CLB インスタンスの固定パブリック IP アドレスなどのパブリック IP アドレスによって発生します。詳細については、関連製品の課金ドキュメントをご参照ください。
サポートされているリージョン
エリア | IPv4 ゲートウェイをサポートするリージョン |
アジアパシフィック - 中国 | 中国 (杭州)、中国 (上海)、中国 (南京-ローカルリージョン - 提供終了)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (フフホト)、中国 (ウランチャブ)、中国 (深セン)、中国 (河源)、中国 (広州)、中国 (成都)、中国 (香港)、中国 (武漢 - ローカルリージョン)、中国 (福州-ローカルリージョン - 提供終了) |
アジアパシフィック - その他 | 日本 (東京)、韓国 (ソウル)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、フィリピン (マニラ)、タイ (バンコク) |
ヨーロッパおよびアメリカ | ドイツ (フランクフルト)、イギリス (ロンドン)、米国 (シリコンバレー)、米国 (バージニア)、メキシコ |
中東 | UAE (ドバイ)、サウジアラビア (リヤド - パートナー運営) |
クォータ
クォータ名 | 説明 | デフォルトの制限 | 調整可能 |
なし | VPC ごとの IPv4 ゲートウェイ。 | 1 | いいえ。 |
IPv4 ゲートウェイごとのゲートウェイルートテーブル。 | 1 |