デュアルスタック構成に対応したAmazon VPCをTerraformで構築してみた
はじめに
こんにちは、第三SAチームのamaebiです。
今更ではありますが、今年の2月にパブリック IPv4 アドレスが有料化したことを皆さんは覚えておりますでしょうか?
出典:新着情報 – パブリック IPv4 アドレスの利用に対する新しい料金体系を発表 / Amazon VPC IP Address Manager が Public IP Insights の提供を開始
こちらはIPv4の枯渇問題に伴ってIPv6への移行を促すためのものですが、急にIPv6 on AWS 環境を構築するといってもなかなか難しいかと思います。
そこで今回は、IPv4/IPv6両方に対応したデュアルスタック構成をTerraformで構築してみましたので、そちらのご紹介をしていきます。
こちらのテンプレートをTerraform環境上でコピペするだけでデュアルスタック構成を構築できるような内容になっております。
なぜデュアルスタック構成なのか?
ではなぜ、今回の構成内容がデュアルスタックなのかといいますといくつかの問題点を考慮しているからです。
- 現在のAWSサービスではIPv6のみの構成にすることが難しい
- アプリケーションやミドルウェア等の問題でそもそもIPv6が使えない場合がある
- オンプレミスや社内ネットワークがIPv6に対応していない場合がある
現在のAWSサービスではIPv6のみの構成にすることが難しい
現在IPv6のみをサポートしたAWSサービスは非常に少なく、ほとんどがIPv4/IPv6どちらもサポートしたデュアルスタックなのです。
その他にも、一部サービスの中には、IPv6がそもそも対応していないケースがございます。(Amazon CloudFront、Amazon Systems Managerなど)
IPv6 をサポートするサービス
次のテーブルは、デュアルスタックのサポート、IPv6 のみのサポート、および IPv6 をサポートする AWS のサービス を一覧しています。この表は、IPv6 の追加サポートがリリースされたときに更新されます。サービスが IPv6 をサポートする方法についての情報は、そのサービス用のドキュメントを参照してください。
出典:IPv6 をサポートする AWS サービス
「2024/06/07 現在」
アプリケーションがIPv6に対応していない場合がある
IPv6のみAWS環境にオンプレミスで稼働しているアプリケーションサーバーを移行した場合、古いアプリケーションですとそもそもIPv6に対応していないケースが多く、接続できないことが発生する恐れがございます。
そうしますと、アプリケーションの改修コストなどが大幅にかかってしまいます。
オンプレミスや社内ネットワークがIPv6に対応していない場合がある
主にクラウドとオンプレミス両方を使用したハイブリット構成を考える際に、ネットワーク設定の見直しが発生することがございます。
その際、オンプレミスや社内ネットワークがIPv6に対応していない場合、そちら側のネットワーク構成の再構築などの大幅なコストがかかってしまいます。
上記の理由から、IPv4/IPv6両方に対応したデュアルスタック構成で構築しております。
今後IPv6のみがサポートされたAWSサービスが増えていくと思いますので、本ブログで紹介しているTerraformを元に発展させていただけますと幸いです。
その他のIPv6 on AWS構成を考えている方がおりましたら、公式のレファレンスアーキテクチャをご覧ください。
~ Dual Stack and IPv6-only Amazon VPC Reference Architectures ~
構成図
今回は、上記の公式レファレンスアーキテクチャを参考に以下のような構成で構築していきます。
・実際のサンプルコードでは、Amazon 提供のIPv6 CIDR ブロックを使用しておりますので、IPv6アドレスが異なる場合がございます。
・トラフィックの分散を分かりやすくするため、構成図内にEC2インスタンスを配置しております。
Terraform コード
実際のTerraform コードがこちらになります。
・Terraform v1.6.5
providers.tf
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } } } provider "aws" { region = "ap-northeast-1" }
main.tf
#-------------------------------------- # VPC #-------------------------------------- resource "aws_vpc" "vpc" { cidr_block = "10.0.0.0/16" instance_tenancy = "default" enable_dns_support = true enable_dns_hostnames = true assign_generated_ipv6_cidr_block = true tags = { Name = "example-vpc" } } #-------------------------------------- # Subnet #-------------------------------------- resource "aws_subnet" "public_subnet_1a" { vpc_id = aws_vpc.vpc.id availability_zone = "ap-northeast-1a" map_public_ip_on_launch = true cidr_block = cidrsubnet(aws_vpc.vpc.cidr_block, 8, 1) assign_ipv6_address_on_creation = true ipv6_cidr_block = cidrsubnet(aws_vpc.vpc.ipv6_cidr_block, 8, 0) tags = { Name = "example-public-subnet-1a" } } resource "aws_subnet" "private_subnet_1a" { vpc_id = aws_vpc.vpc.id availability_zone = "ap-northeast-1a" map_public_ip_on_launch = true cidr_block = cidrsubnet(aws_vpc.vpc.cidr_block, 8, 2) assign_ipv6_address_on_creation = true ipv6_cidr_block = cidrsubnet(aws_vpc.vpc.ipv6_cidr_block, 8, 1) tags = { Name = "example-private-subnet-1a" } } resource "aws_subnet" "public_subnet_1c" { vpc_id = aws_vpc.vpc.id availability_zone = "ap-northeast-1c" map_public_ip_on_launch = true cidr_block = cidrsubnet(aws_vpc.vpc.cidr_block, 8, 3) assign_ipv6_address_on_creation = true ipv6_cidr_block = cidrsubnet(aws_vpc.vpc.ipv6_cidr_block, 8, 2) tags = { Name = "example-public-subnet-1c" } } resource "aws_subnet" "private_subnet_1c" { vpc_id = aws_vpc.vpc.id availability_zone = "ap-northeast-1c" map_public_ip_on_launch = true cidr_block = cidrsubnet(aws_vpc.vpc.cidr_block, 8, 4) assign_ipv6_address_on_creation = true ipv6_cidr_block = cidrsubnet(aws_vpc.vpc.ipv6_cidr_block, 8, 3) tags = { Name = "example-private-subnet-1c" } } #-------------------------------------- # Route table #-------------------------------------- resource "aws_route_table" "public_rt_1a" { vpc_id = aws_vpc.vpc.id tags = { Name = "example-rt-public-1a" } } resource "aws_route_table_association" "public_rt_1a" { route_table_id = aws_route_table.public_rt_1a.id subnet_id = aws_subnet.public_subnet_1a.id } resource "aws_route_table" "private_rt_1a" { vpc_id = aws_vpc.vpc.id tags = { Name = "example-rt-private-1a" } } resource "aws_route_table_association" "private_rt_1a" { route_table_id = aws_route_table.private_rt_1a.id subnet_id = aws_subnet.private_subnet_1a.id } resource "aws_route_table" "public_rt_1c" { vpc_id = aws_vpc.vpc.id tags = { Name = "example-rt-public-1c" } } resource "aws_route_table_association" "public_rt_1c" { route_table_id = aws_route_table.public_rt_1c.id subnet_id = aws_subnet.public_subnet_1c.id } resource "aws_route_table" "private_rt_1c" { vpc_id = aws_vpc.vpc.id tags = { Name = "example-rt-private-1c" } } resource "aws_route_table_association" "private_rt_1c" { route_table_id = aws_route_table.private_rt_1c.id subnet_id = aws_subnet.private_subnet_1c.id } #-------------------------------------- # Internet Gateway #-------------------------------------- resource "aws_internet_gateway" "igw" { vpc_id = aws_vpc.vpc.id tags = { Name = "example-igw" } } resource "aws_route" "public_rt_igw_1a_ipv4" { route_table_id = aws_route_table.public_rt_1a.id gateway_id = aws_internet_gateway.igw.id destination_cidr_block = "0.0.0.0/0" } resource "aws_route" "public_rt_igw_1a_ipv6" { route_table_id = aws_route_table.public_rt_1a.id gateway_id = aws_internet_gateway.igw.id destination_ipv6_cidr_block = "::/0" } resource "aws_route" "public_rt_igw_1c_ipv4" { route_table_id = aws_route_table.public_rt_1c.id gateway_id = aws_internet_gateway.igw.id destination_cidr_block = "0.0.0.0/0" } resource "aws_route" "public_rt_igw_1c_ipv6" { route_table_id = aws_route_table.public_rt_1c.id gateway_id = aws_internet_gateway.igw.id destination_ipv6_cidr_block = "::/0" } #-------------------------------------- # Egress-Only Internet Gateway #-------------------------------------- resource "aws_egress_only_internet_gateway" "egress_only_igw" { vpc_id = aws_vpc.vpc.id tags = { Name = "example-egress-only-igw" } } resource "aws_route" "private_rt_egress_only_igw_1a" { route_table_id = aws_route_table.private_rt_1a.id egress_only_gateway_id = aws_egress_only_internet_gateway.egress_only_igw.id destination_ipv6_cidr_block = "::/0" } resource "aws_route" "private_rt_egress_only_igw_1c" { route_table_id = aws_route_table.private_rt_1c.id egress_only_gateway_id = aws_egress_only_internet_gateway.egress_only_igw.id destination_ipv6_cidr_block = "::/0" } #-------------------------------------- # Nat Gateway #-------------------------------------- resource "aws_eip" "ngw_1a_eip" { domain = "vpc" tags = { Name = "example-ngw-1a-eip" } } resource "aws_nat_gateway" "public_ngw_1a" { allocation_id = aws_eip.ngw_1a_eip.id subnet_id = aws_subnet.public_subnet_1a.id tags = { Name = "example-nat-gateway-1a" } } resource "aws_route" "private_rt_ngw_1a" { route_table_id = aws_route_table.private_rt_1a.id nat_gateway_id = aws_nat_gateway.public_ngw_1a.id destination_cidr_block = "0.0.0.0/0" } resource "aws_eip" "ngw_1c_eip" { domain = "vpc" tags = { Name = "example-ngw-1c-eip" } } resource "aws_nat_gateway" "public_ngw_1c" { allocation_id = aws_eip.ngw_1c_eip.id subnet_id = aws_subnet.public_subnet_1c.id tags = { Name = "example-nat-gateway-1c" } } resource "aws_route" "private_rt_ngw_1c" { route_table_id = aws_route_table.private_rt_1c.id nat_gateway_id = aws_nat_gateway.public_ngw_1c.id destination_cidr_block = "0.0.0.0/0" }
確認
では、実際に構築できたか確認していきましょう。
VPC
IPv4/IPv6の両方が設定されていることが確認できました。
リソースマップも以下の通りです。
サブネット
IPv4/IPv6の両方が設定されていることが確認できました。
その他、ルーティングテーブルの関連付け、ルーティング設定が正しく設定されていることを確認できました。
example-public-subnet-1a
example-private-subnet-1a
example-public-subnet-1c
example-private-subnet-1c
Internet Gateway
Egress-Only Gateway
Nat Gateway
example-nat-gateway-1a
example-nat-gateway-1c
全ての項目が正しく設定されていることが確認できました。
IPv6の疎通確認
パブリックサブネット、プライベートサブネットそれぞれにEC2インスタンスを構築し、IPv6で疎通できるかどうか確認します。
パブリックサブネット
各種パブリックサブネットに配置したEC2インスタンスに対して、SSHを使用してログインします。
パブリックサブネット1aに配置したインスタンス
[xxxx@xx-xx-xx-xx .ssh]$ ssh -i test.pem ec2-user@2406:da14:151b:f200:d36c:2776:fbc6:95c7 The authenticity of host '2406:da14:151b:f200:d36c:2776:fbc6:95c7 (2406:da14:151b:f200:d36c:2776:fbc6:95c7)' can't be established. ED25519 key fingerprint is SHA256:+H8KsquY6nyWyKF2IZlbGaGurWese0Le7EPKzduh/Is. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '2406:da14:151b:f200:d36c:2776:fbc6:95c7' (ED25519) to the list of known hosts. , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' [ec2-user@ip-10-0-1-84 ~]$
現在ログインしているサーバーから自身のサーバーに対してIPv6でpingを通して疎通確認を行います。
[ec2-user@ip-10-0-1-84 ~]$ ping -6 2406:da14:1129:1d00:f915:b478:c250:ce74 PING 2406:da14:1129:1d00:f915:b478:c250:ce74(2406:da14:1129:1d00:f915:b478:c250:ce74) 56 data bytes 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=1 ttl=63 time=0.437 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=2 ttl=63 time=0.576 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=3 ttl=63 time=0.518 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=4 ttl=63 time=0.429 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=5 ttl=63 time=0.440 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=6 ttl=63 time=0.597 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=7 ttl=63 time=0.523 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=8 ttl=63 time=0.487 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=9 ttl=63 time=0.437 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=10 ttl=63 time=0.550 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=11 ttl=63 time=0.516 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=12 ttl=63 time=0.477 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=13 ttl=63 time=0.514 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=14 ttl=63 time=0.469 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=15 ttl=63 time=0.489 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=16 ttl=63 time=0.473 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=17 ttl=63 time=0.477 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=18 ttl=63 time=0.507 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=19 ttl=63 time=0.535 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=20 ttl=63 time=0.487 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=21 ttl=63 time=0.478 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=22 ttl=63 time=0.448 ms ^C --- 2406:da14:1129:1d00:f915:b478:c250:ce74 ping statistics --- 22 packets transmitted, 22 received, 0% packet loss, time 21813ms rtt min/avg/max/mdev = 0.429/0.493/0.597/0.043 ms [ec2-user@ip-10-0-1-84 ~]$
疎通が確認できました。
パブリックサブネット1cに配置したインスタンス
[xxxx@ip-xx-xx-xx-xx .ssh]$ ssh -i test.pem ec2-user@2406:da14:151b:f202:6c5:7127:4e63:c34b The authenticity of host '2406:da14:151b:f202:6c5:7127:4e63:c34b (2406:da14:151b:f202:6c5:7127:4e63:c34b)' can't be established. ED25519 key fingerprint is SHA256:GKAOAA/7qtbI5EelGUuIUAMqKNWRDIAzwi4auTVscL0. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '2406:da14:151b:f202:6c5:7127:4e63:c34b' (ED25519) to the list of known hosts. , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' [ec2-user@ip-10-0-3-15 ~]$
現在ログインしているサーバーから自身のサーバーに対してIPv6でpingを通して疎通確認を行います。
[ec2-user@ip-10-0-3-15 ~]$ ping -6 2406:da14:1129:1d00:f915:b478:c250:ce74 PING 2406:da14:1129:1d00:f915:b478:c250:ce74(2406:da14:1129:1d00:f915:b478:c250:ce74) 56 data bytes 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=1 ttl=63 time=1.96 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=2 ttl=63 time=1.95 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=3 ttl=63 time=2.00 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=4 ttl=63 time=1.99 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=5 ttl=63 time=1.98 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=6 ttl=63 time=1.99 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=7 ttl=63 time=2.01 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=8 ttl=63 time=1.96 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=9 ttl=63 time=1.96 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=10 ttl=63 time=1.96 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=11 ttl=63 time=1.99 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=12 ttl=63 time=1.95 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=13 ttl=63 time=2.03 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=14 ttl=63 time=1.96 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=15 ttl=63 time=1.96 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=16 ttl=63 time=1.95 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=17 ttl=63 time=1.98 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=18 ttl=63 time=1.98 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=19 ttl=63 time=1.99 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=20 ttl=63 time=1.96 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=21 ttl=63 time=2.02 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=22 ttl=63 time=2.11 ms ^C --- 2406:da14:1129:1d00:f915:b478:c250:ce74 ping statistics --- 22 packets transmitted, 22 received, 0% packet loss, time 21025ms rtt min/avg/max/mdev = 1.952/1.984/2.111/0.036 ms [ec2-user@ip-10-0-3-15 ~]$
疎通が確認できました。
プライベートサブネット
次に現在ログインしているEC2インスタンスを経由して、各種プライベートサブネットに配置したEC2インスタンスに対して、SSHを使用してログインします。
プライベートサブネット1aに配置したインスタンス
[ec2-user@ip-10-0-1-84 .ssh]$ ssh -i test.pem ec2-user@2406:da14:151b:f201:a75:2da:d8d7:bcf9 The authenticity of host '2406:da14:151b:f201:a75:2da:d8d7:bcf9 (2406:da14:151b:f201:a75:2da:d8d7:bcf9)' can't be established. ED25519 key fingerprint is SHA256:whEkaOvBy75F6niW4EwuE0l4GhIYQ+4gybF/K52/2i0. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '2406:da14:151b:f201:a75:2da:d8d7:bcf9' (ED25519) to the list of known hosts. , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' [ec2-user@ip-10-0-2-98 ~]$
現在ログインしているサーバーから自身のサーバーに対してIPv6でpingを通して疎通確認を行います。
[ec2-user@ip-10-0-2-98 ~]$ ping -6 2406:da14:1129:1d00:f915:b478:c250:ce74 PING 2406:da14:1129:1d00:f915:b478:c250:ce74(2406:da14:1129:1d00:f915:b478:c250:ce74) 56 data bytes 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=1 ttl=63 time=0.442 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=2 ttl=63 time=0.463 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=3 ttl=63 time=0.522 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=4 ttl=63 time=2.23 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=5 ttl=63 time=1.97 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=6 ttl=63 time=0.450 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=7 ttl=63 time=2.80 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=8 ttl=63 time=0.530 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=9 ttl=63 time=0.508 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=10 ttl=63 time=0.442 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=11 ttl=63 time=0.515 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=12 ttl=63 time=0.477 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=13 ttl=63 time=0.478 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=14 ttl=63 time=0.747 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=15 ttl=63 time=0.438 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=16 ttl=63 time=0.483 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=17 ttl=63 time=0.647 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=18 ttl=63 time=0.463 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=19 ttl=63 time=0.434 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=20 ttl=63 time=0.449 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=21 ttl=63 time=0.475 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=22 ttl=63 time=1.58 ms ^C --- 2406:da14:1129:1d00:f915:b478:c250:ce74 ping statistics --- 22 packets transmitted, 22 received, 0% packet loss, time 21793ms rtt min/avg/max/mdev = 0.434/0.797/2.804/0.667 ms [ec2-user@ip-10-0-2-98 ~]$
疎通が確認できました。
プライベートサブネット1cに配置したインスタンス
[ec2-user@ip-10-0-3-15 .ssh]$ ssh -i test.pem ec2-user@2406:da14:151b:f203:a3f5:34b2:8738:a20f The authenticity of host '2406:da14:151b:f203:a3f5:34b2:8738:a20f (2406:da14:151b:f203:a3f5:34b2:8738:a20f)' can't be established. ED25519 key fingerprint is SHA256:BQuj6KkiOaV9MWh2XqkvstATNz8MulakhNmauvyzc0w. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '2406:da14:151b:f203:a3f5:34b2:8738:a20f' (ED25519) to the list of known hosts. , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' [ec2-user@ip-10-0-4-172 ~]$
現在ログインしているサーバーから自身のサーバーに対してIPv6でpingを通して疎通確認を行います。
[ec2-user@ip-10-0-4-172 ~]$ ping -6 2406:da14:1129:1d00:f915:b478:c250:ce74 PING 2406:da14:1129:1d00:f915:b478:c250:ce74(2406:da14:1129:1d00:f915:b478:c250:ce74) 56 data bytes 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=1 ttl=63 time=1.84 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=2 ttl=63 time=1.93 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=3 ttl=63 time=1.93 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=4 ttl=63 time=1.99 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=5 ttl=63 time=1.98 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=6 ttl=63 time=1.91 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=7 ttl=63 time=1.86 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=8 ttl=63 time=1.97 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=9 ttl=63 time=1.90 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=10 ttl=63 time=1.95 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=11 ttl=63 time=1.94 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=12 ttl=63 time=1.86 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=13 ttl=63 time=1.94 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=14 ttl=63 time=1.91 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=15 ttl=63 time=1.98 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=16 ttl=63 time=1.92 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=17 ttl=63 time=1.94 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=18 ttl=63 time=1.94 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=19 ttl=63 time=1.97 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=20 ttl=63 time=1.90 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=21 ttl=63 time=1.97 ms 64 bytes from 2406:da14:1129:1d00:f915:b478:c250:ce74: icmp_seq=22 ttl=63 time=1.98 ms ^C --- 2406:da14:1129:1d00:f915:b478:c250:ce74 ping statistics --- 22 packets transmitted, 22 received, 0% packet loss, time 21026ms rtt min/avg/max/mdev = 1.843/1.931/1.985/0.039 ms [ec2-user@ip-10-0-4-172 ~]$
IPv6の疎通が確認できました。
これで全ての設定の確認が完了しました。
最後に
デュアルスタック構成に対応したAmazon VPCをTerraformで構築してみました。
今後、AWS上のIPv4が使えなくなる恐れもございますので、今からIPv6への移行を検討するものいいかもしれません。
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitteramaebiと申します。クラウドエンジニアとしてまだまだ未熟ですが、これから精進していきたいです。
Recommends
こちらもおすすめ
-
Terraform を運用するについて考える ~第2回 Terraformを始める~
2022.10.26
-
AWS CodePipelineでTerraformパイプラインを実装する
2024.3.28
Special Topics
注目記事はこちら
![これから始めるBigQuery基礎知識](https://techblog.nhn-techorus.com/wp-content/uploads/2024/04/BigQuery-thumbnail.png)
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
![AWSの請求代行リセールサービス](https://techblog.nhn-techorus.com/wp-content/uploads/2021/11/OGP11.png)
AWSの料金が 8 %割引になる!
『AWSの請求代行リセールサービス』
2023.01.15