亚马逊AWS官方博客

欢迎进入 IPv6 的云计算世界!

IPv4 地址枯竭的挑战

我是在1994年前后接触到互联网的。至今还能够回忆起来第一次使用telnet登陆到一台SunOS 主机那一刻激动的心情。在好奇心的驱使下,学会了使用ftp下载、chat 聊天以及使用Mosaic 浏览器进行冲浪,不过一个噩耗却在那时候给我当头浇了一瓢冷水 – 赖以支撑互联网IPv4地址即将耗尽。所谓的IPv4,是指固定长度的4个八位(32位)识别源和目的地的Internet地址协议,这实际上是该协议的第四个版本,因此我们将这些地址称为IP Version 4 (IPv4) 地址。

理论上, IPv4仅能提供约42.9亿个IP地址。但是没有人能够预料到1980年早期出现的互联网能够以如此迅猛的速度发展。不过短短的十年,互联网就面临地址枯竭的窘境。以管理亚太地区IP地址的亚太互联网络信息中心(APNIC)为例,其第一阶段枯竭的日期为2011年4月15日,意味着除了最后一块/8地址外,其余的IPv4地址已经全部发放完毕;而第二阶段估计日期预计为2020年底,指的是所有IPv4地址已经全部发放完毕。

而当时唯一的补救方法不过是IETF在1994年3月定义的可重用的私有IP地址。

 

我们可以使用这些保留的标识私有主机。如果这些主机中的任何一台需要连接到外部主机,它的地址需要转换成全局唯一的- Public IP地址。这个过程被称为网络地址转换(NAT),并被广泛流行沿用至今。我们所使用的家庭宽带,AWS云计算中VPC 网络设置等处处可以看到NAT这个技术。

我们为什么需要IPv6?

可以说,NAT虽然缓解了IPv4地址的问题,但却一直被看作是一种临时性的补救手段。首先,在网络技术层面NAT技术本质上不能为网络设备创建真正的IP地址,并且不能参与一些互联网协议。NAT也会使安全协议变的复杂,例如IPsec。而端-端连接是被IAB委员会(Internet Architecture Board)认为是互联网的核心协议之一,因此很多人认为NAT是对互联网端-端特性的破坏。另外,NAT也让主机之间的通信变得复杂,导致了通信效率的降低。

在商业应用的层面,新的业务场景以及新的模式的出现也对互联网应用提出了新的要求,例如-

  • 用户需求呈现个性化、移动化、高带宽的特征
  • 终端设备的多样化,智能终端、可穿戴设备、嵌入式设备、传感器等使得互联网通信延展到人与人、人与物、物与物,万物互联已成为趋势。
  • 云计算、大数据、边缘计算、AI、5G等前沿技术的导入,持续推动着互联创新不断深化应用领域、拓展服务维度,工业互联网、无人驾驶、机器人等日益成为新的增长点

于是终极的解决方案在地址枯竭危机来临之后很快就被制定出来 – 大约在1995年,互联网协议的一个新版本问世,提供了扩展的寻址功能,将IP地址的大小从32位增加到了128位,这就是我们要说的IPv6。

IPv6 现状

截至2019年3月,全球约有43亿网民,互联网普及率是56%。而根据中国互联网络信息中心在2019年2月发表的《第43次中国互联网络发展状况统计报告》,截至2018年12月,中国的网民数量达8.29亿人,为世界首位,互联网普及率达到59.6%。基于IP地址的需求,IPv6 的普及已经迫在眉睫。

虽然在1998年12月,IPv6就成为IETF的一个草案标准,随后在2017年7月14日被正式批准为互联网标准。但由于IPv6与IPv4不是向后兼容的,早期的路由器、防火墙、企业的遗留系统及相关网络应用皆须改造,此外,IPv6虽然能够降低网络复杂性和成本,然而当前却只有网络设备制造商得益于此,网络用户和网络运营商不能直接受益,导了致产业链缺乏推动IPv6的动力。所以在世界范围内长期以来,IPv6的进展较为缓慢。网络技术上仍以IPv4/IPv6双架构并存居多。预计在2025年以前IPv4仍会被支持,以便给新协议的修正留下足够的时间。

不过在2017年,IPv6 的发展与部署却迎来了高速发展的契机。在Google IPv6 报告中,我们看到从2017年开始全球IPv6的部署迎来了高速发展。到目前为止,访问Google 的流量中,IPv6 的占比超过了30%。

 

与此同时,这一年也成为中国IPv6发展的一个转折点。2017年11月,中共中央办公厅、国务院办公厅印发了《推进互联网协议第六版(IPv6)规模部署行动计划》(以下简称《行动计划》),明确提出了未来五到十年我国基于IPv6的下一代互联网发展的总体目标、路线图、时间表和重点任务,是加快推进我国IPv6规模部署、促进互联网演进升级和健康创新发展的行动指南。

截至2019年5月,我国IPv6地址资源总量达到47,282块(/32),居全球第一位。

在用户方面,截至2019年6月,我国IPv6活跃用户数已达1.30亿。我国基础电信企业已分配IPv6地址的用户数达12.07亿。同时我国IPv6流量不断增长,截至2019年5月,中国电信、中国移动和中国联通城域网出口总流量达398.43Gbps,LTE核心网总流量达508.87Gbps,骨干直联点总流量达75.74Gbps,国际出入口的IPv6总流量达到80.45Gbps。

从IPv4到IPv6的转变是一个非常重要的转变,但是现在留给业界继续思考的时间已经不多了。事实上,2011年6月份的时候就可以看到IPv4地址基本会被分配殆尽。如果我们不能及时采取行动,IPv6将成为我们的技术债而不是机遇。无论怎样,我们必须承认这样的一个趋势 – IPv6 的时代已经到来!

IPv6 的技术特点

与IPv4比较

在Internet上,数据以分组的形式传输。IPv6定义了一种新的分组格式,目的是为了最小化路由器处理的消息标头。由于IPv4消息和IPv6消息标头有很大不同,因此这两种协议无法互操作。但是在大多数情况下,IPv6仅仅是对IPv4的一种保守扩展。除了嵌入了互联网地址的那些应用协议(如FTP和NTPv3,新地址格式可能会与当前协议的语法冲突)以外,大多数传输层和应用层协议几乎不需要修改就可以在IPv6上运行。

IPv6编码

IPv6具有比IPv4大得多的编码地址空间。这是因为IPv6采用128位的地址,而IPv4使用的是32位。因此新增的地址空间支持2128(约3.4×1038)个地址,具体数量为340,282,366,920,938,463,463,374,607,431,768,211,456 个,也可以说成1632个,因为32位地址每位可以取16个不同的值。

网络地址转换(NAT)是当前减缓IPv4地址耗尽最有效的方式,而IPv6的地址消除了对它的依赖,被认为足够在可以预测的未来使用。就以地球人口70亿人计算,每人平均可分得约4.86×1028(486117667×1020)个IPv6地址。 IPv6从IPv4到IPv6最显著的变化就是网络地址的长度。RFC 2373和RFC 2374定义的IPv6地址有128位长;IPv6地址的表达形式一般采用32个十六进制数。 在很多场合,IPv6地址由两个逻辑部分组成:一个64位的网络前缀和一个64位的主机地址,主机地址通常根据物理地址自动生成,叫做EUI-64(或者64-位扩展唯一标识)。

IPv6 的优势

除了更大的寻址空间外,IPv6还实现了IPv4中不存在的特性。在更改网络连接提供程序时,它简化了地址配置、网络重编号和路由器通知等方面。特别是,它允许分层的地址分配方法,这些方法促进了Internet上的路由聚合,从而限制了路由表的扩展。多播寻址的使用得到了扩展和简化,并为服务的交付提供了额外的优化。协议的设计考虑了设备移动性、安全性和配置方面的问题。

安全性也是IPv6 设计的重要目标。IPsec协议最初就是为IPv6开发的,但首先在IPv4中发现了广泛的部署,并对其进行了重新设计。IPsec是强制所有IPv6协议实现的一部分。但是在RFC 6434的IPv6实现中IPsec被降级为推荐,而不是强制标准/

IPv4 大量地使用了网络广播,许多网络问题与此有关,最糟糕的就是广播风暴-网络数据不受控制地转发广播并可能耗尽所有带宽,导致整个网络瘫痪。作为改进,IPv6在RFC 4291中定义三种不同类型的传输: unicast(单播)、任播(anycast)和多播(multicast)。IPv6新增的任播可将同一个地址分配给多台设备,而向该地址发送数据流时,它会被路由到共享该地址的最近主机。

IPv6 的迁移

许多人也许在质疑迁移到IPv6是否将要付出巨大的代价?Google 的实践或许能够给我们一些借鉴。Google的网络工程师洛伦佐-考莱迪(Lorenzo Colitti)在2008年的IETF会议中分享,谷歌表示目前所有的应用程序已可以支持下一代因特网传输协议——IPv6。这个业界期待已久的技术升级没有花费什么经费,也没有动用大量的开发人员。事实上,Google只使用了一个“规模很小的核心团队”,从最初的网络构架和软件工程工作到前期试验再到正式对外宣布支持IPv6技术,谷歌前后共花了18个月的时间。谷歌工程师将IPv6技术研发视为一个“20%的项目”,也就是说这项研发工作是在他们日常工作之余完成的。Google从2007年9月开始启动这个项目,2009年1月份正式完工。关于这个项目的细节可以参考这里 :

 

https://datatracker.ietf.org/meeting/72/materials/slides-72-ietf-4-ietf-operations-and-administration-plenary

云计算与IPv6

按照Gartner的预测,到2022年云服务行业将呈指数级增长,无疑云计算正在撼动整个行业。作为一种基于互联网的技术,IP地址的扩展能力就显得至关重要。IPv6不仅提供了资源和能力来扩展云计算的部署,而且还将成为云计计算市场中的一个关键差异。

过去的几年,我们已经看到了市场上客户正在开发的、发生改变的的基于互联网的应用的正在大量的出现,这些应用程序正在陆续迁移到云上。在传统的IT环境中管理这些基于互联网的应用程序是一项挑战,通过IPv6可以实现的灵活性和可伸缩性使得网络的简化与可管理性变得更容易实现。许多开发者、架构师以及技术决策者正在将IPv6视为一种强烈的需求,由于IPv4在市场价格不断上涨,会有有更多的云服务提供者更倾向提供IPv6的网络架构。

AWS 对于IPv6的支持的回顾

AWS 官方正式宣布对于IPv6的支持可以上溯到2011年5月。

 

在那个时期,AWS网络的基础不是我们今天广为使用的VPC(Virtual Private Cloud)而是上一代的EC2-Classic。EC2-Classic ELB支持了单独的IPv4、IPv6或IPv4/IPv6的双栈配置。这个特殊的ELB可以用作DNS64和NAT64。它的意思是,您可以在IPv6公共接口之后部署IPv4实例。该接口将所有入站IPv6流量转换为IPv4,并将从IPv4到IPv6的出站流量转换为IPv4。可以说这是一种有限度的支持,并不完美。不过在2013年之后,VPC取代了 EC2-Classic,我们的期待就是什么时候VPC 支持IPv6?幸好这个期待不是太久。在2016年,我们看到这样的发布 –

 

终于,Amazon Virtual Private Cloud (VPC) 中的 EC2 实例终于可以为 IPv6 协议提供本机支持。凭借此功能,VPC 现在可以在双堆栈模式下运行,并且能够在 EC2 实例上分配 IPv4 和 IPv6 地址。在 VPC 中启用 IPv6 后,可以通过安全组、网络 ACL 和路由表等如今使用的相同的简单方式保护应用程序。此外,其他关键 VPC 功能支持 IPv6,例如Internet Gateway、VPC Peering和 VPC Flow Log。更重要的是,缺省情况下VPC分配的IPv6 地址都是公有的 IP 地址。

2016年9月,AWS正式进入中国云计算市场。从那时起,许多AWS 的用户都在关心这样一个问题,什么时候AWS中国区域能够支持IPv6 ?这个问题答案在今年年初揭晓了。

随着中国IPv6市场的蓬勃发展,可以预期云计算市场上IPv6一定会成为最重要的网络基础技术。而AWS作为云计算市场的重要参与者,其对于IPv6的支持也必将推动对中国IPv6的发展。

如何在AWS上启用IPv6 ?

目前IPv6 在AWS全球所有区域都已开放。作为AWS云计算的用户可以简单的将 IPv6 地址添加到 VPC 及其子网(Subnet)。在使用 IPv6 地址的子网中创建的 Amazon EC2 实例,将同时拥有 IPv6 地址和 IPv4 地址。为了更好的理解这个操作,我找了出来自己使用创建支持IPv6的VPC的脚本。

1.	#!/bin/bash  
2.	#******************************************************************************  
3.	#    AWS VPC Creation Shell Script  
4.	#    Author: Lianghong Fei  
5.	#    Modify date : 2020.5.10  
6.	#******************************************************************************  
7.	set -e  
8.	  
9.	AWS_REGION="us-west-1"  
10.	VPC_NAME="INTERNET-VPC"  
11.	SG_NAME="INTERNET-SG"  
12.	VPC_CIDR="10.0.0.0/16"  
13.	SUBNET_PUBLIC_CIDR="10.0.1.0/24"  
14.	SUBNET_PUBLIC_NAME="10.0.1.0-${SUBNET_PUBLIC_AZ}"  
15.	PORT_LIST="22 80 443 8080"  
16.	  
17.	#tag  
18.	owner="lianghong"  
19.	current_date_time="`date +%Y%m%d%H%M`";  
20.	project="Surfing"  
21.	  
22.	#==============================================================================  
23.	#  Create AWS VPC withone Public Subnet  
24.	#==============================================================================  
25.	#  
26.	# Create VPC  
27.	echo "Creating VPC in preferred region of ${AWS_REGION}..."  
28.	VPC_ID=$(aws ec2 create-vpc \  
29.	    --cidr-block "${VPC_CIDR}" \  
30.	    --amazon-provided-ipv6-cidr-block \  
31.	    --instance-tenancy default \  
32.	    --query 'Vpc.{VpcId:VpcId}' \  
33.	    --output text \  
34.	    --region ${AWS_REGION})  
35.	echo "  VPC ID '${VPC_ID}' CREATED in '${AWS_REGION}' region."  
36.	  
37.	# Add Name tag to VPC  
38.	aws ec2 create-tags \  
39.	    --resources ${VPC_ID} \  
40.	    --tags Key=Name,Value=${VPC_NAME} Key=date,Value=${current_date_time} \  
41.	    --region ${AWS_REGION}  
42.	echo "  VPC ID '${VPC_ID}' NAMED as '${VPC_NAME}'."  
43.	  
44.	# Get IPv6 CIDR block  
45.	IPv6_CIDR=$(aws ec2 describe-vpcs \  
46.	    --vpc-id ${VPC_ID} \  
47.	    --query 'Vpcs[*].Ipv6CidrBlockAssociationSet[*].Ipv6CidrBlock' \  
48.	   --output text \  
49.	   --region ${AWS_REGION}  
50.	)  
51.	echo "  IPv6 CIDR ${IPv6_CIDR} allocated in VPC of ${VPC_ID} "  
52.	  
53.	# Create a Public Subnet  
54.	echo "Creating Public Subnet..."  
55.	IPv6_CIDR=$(echo ${IPv6_CIDR} | sed 's|::/[0-9]*|::/64|g')  
56.	SUBNET_PUBLIC_ID=$(aws ec2 create-subnet \  
57.	    --vpc-id ${VPC_ID} \  
58.	    --cidr-block ${SUBNET_PUBLIC_CIDR} \  
59.	    --ipv6-cidr-block ${IPv6_CIDR} \  
60.	    --query 'Subnet.{SubnetId:SubnetId}' \  
61.	    --output text \  
62.	    --region ${AWS_REGION})  
63.	echo "  Subnet ID" "${SUBNET_PUBLIC_ID}" "CREATED in" "${SUBNET_PUBLIC_AZ}" \  
64.	  "Availability Zone."  
65.	  
66.	# Add Name tag to Public Subnet  
67.	aws ec2 create-tags \  
68.	    --resources ${SUBNET_PUBLIC_ID} \  
69.	    --tags Key=Name,Value=${SUBNET_PUBLIC_NAME} Key=date,Value=${current_date_time} \  
70.	    --region ${AWS_REGION}  
71.	echo "  Subnet ID '${SUBNET_PUBLIC_ID}' NAMED as '${SUBNET_PUBLIC_NAME}'."  
72.	  
73.	# Create Internet Gateway  
74.	echo "Creating Internet Gateway..."  
75.	IGW_ID=$(aws ec2 create-internet-gateway \  
76.	  --query 'InternetGateway.{InternetGatewayId:InternetGatewayId}' \  
77.	  --output text \  
78.	  --region ${AWS_REGION})  
79.	echo "  Internet Gateway ID '${IGW_ID}' CREATED."  
80.	  
81.	# Attach Internet Gateway to your VPC  
82.	aws ec2 attach-internet-gateway \  
83.	  --vpc-id ${VPC_ID} \  
84.	  --internet-gateway-id ${IGW_ID} \  
85.	  --region ${AWS_REGION}  
86.	echo "  Internet Gateway ID '${IGW_ID}' ATTACHED to VPC ID '${VPC_ID}'."  
87.	  
88.	# Create Route Table  
89.	echo "Creating Route Table..."  
90.	ROUTE_TABLE_ID=$(aws ec2 create-route-table \  
91.	  --vpc-id ${VPC_ID} \  
92.	  --query 'RouteTable.{RouteTableId:RouteTableId}' \  
93.	  --output text \  
94.	  --region ${AWS_REGION})  
95.	echo "  Route Table ID '${ROUTE_TABLE_ID}' CREATED."  
96.	  
97.	# Create route to Internet Gateway  
98.	RESULT=$(aws ec2 create-route \  
99.	  --route-table-id ${ROUTE_TABLE_ID} \  
100.	  --destination-cidr-block 0.0.0.0/0 \  
101.	  --gateway-id ${IGW_ID} \  
102.	  --region ${AWS_REGION})  
103.	echo "  Route to '0.0.0.0/0' via Internet Gateway ID '${IGW_ID}' ADDED to" \  
104.	  "Route Table ID '${ROUTE_TABLE_ID}'."  
105.	  
106.	# Create IPv6 traffic route to Internet Gateway  
107.	RESULT=$(aws ec2 create-route \  
108.	  --route-table-id ${ROUTE_TABLE_ID} \  
109.	  --destination-ipv6-cidr-block ::/0 \  
110.	  --gateway-id ${IGW_ID} \  
111.	  --region ${AWS_REGION})  
112.	echo "  Route to '::/0' via Internet Gateway ID '${IGW_ID}' ADDED to" \  
113.	  "Route Table ID '${ROUTE_TABLE_ID}'."  
114.	  
115.	# Associate Public Subnet with Route Table  
116.	RESULT=$(aws ec2 associate-route-table  \  
117.	  --subnet-id ${SUBNET_PUBLIC_ID} \  
118.	  --route-table-id ${ROUTE_TABLE_ID} \  
119.	  --region ${AWS_REGION})  
120.	echo "  Public Subnet ID '${SUBNET_PUBLIC_ID}' ASSOCIATED with Route Table ID" \  
121.	  "'${ROUTE_TABLE_ID}'."  
122.	  
123.	# Enable Auto-assign Public IP on Subnet  
124.	aws ec2 modify-subnet-attribute \  
125.	  --subnet-id ${SUBNET_PUBLIC_ID} \  
126.	  --map-public-ip-on-launch \  
127.	  --region ${AWS_REGION}  
128.	echo "  'Auto-assign Public IP' ENABLED on Subnet ID" \  
129.	  "'${SUBNET_PUBLIC_ID}'."  
130.	  
131.	# Enable Auto-assign IPv6 on Subnet  
132.	aws ec2 modify-subnet-attribute \  
133.	  --subnet-id ${SUBNET_PUBLIC_ID} \  
134.	  --assign-ipv6-address-on-creation \  
135.	  --region ${AWS_REGION}  
136.	echo "  'IPv6 address on Creation' ENABLED on Subnet ID" \  
137.	  "'${SUBNET_PUBLIC_ID}'."  
138.	  
139.	# Create security group  
140.	SG_ID=$(aws ec2 create-security-group \  
141.	    --group-name ${SG_NAME} \  
142.	    --vpc-id ${VPC_ID} \  
143.	    --description "SG for the VPC of ${VPC_ID}" \  
144.	    --region ${AWS_REGION} \  
145.	    --output text)  
146.	echo "  Security Group ID ${SG_ID} CREATED. "  
147.	  
148.	# Adds the specified ingress rules to a security group  
149.	for port in ${PORT_LIST}  
150.	do  
151.	    echo "     Authorize ${port} to ingress for IPv4 ..."  
152.	    aws ec2 authorize-security-group-ingress \  
153.	        --group-id ${SG_ID} \  
154.	        --protocol tcp \  
155.	        --port ${port} \  
156.	        --cidr 0.0.0.0/0 \  
157.	        --region ${AWS_REGION}  
158.	done  
159.	  
160.	# Adds the specified ingress rules to a security group  
161.	for port in ${PORT_LIST}  
162.	do  
163.	    echo "     Authorize ${port} to ingress for IPv6 ..."  
164.	    aws ec2 authorize-security-group-ingress \  
165.	        --group-id ${SG_ID} \  
166.	        --ip-permissions IpProtocol=tcp,FromPort=${port},ToPort=${port},Ipv6Ranges='[{CidrIpv6=::/0}]' \  
167.	        --region ${AWS_REGION}  
168.	done  
169.	  
170.	#check security group permissions  
171.	echo "  Security Group ingresspolocy is:"  
172.	aws ec2 describe-security-groups \  
173.	    --group-ids ${SG_ID} \  
174.	    --region ${AWS_REGION} \  
175.	    --query "SecurityGroups[*].IpPermissions[]" \  
176.	    --output text  
177.	  
178.	echo "Results ==================================================="  
179.	echo "VPC_ID = ${VPC_ID},  SUBNET_PUBLIC_ID = ${SUBNET_PUBLIC_ID}"  
180.	echo "IGW_ID = ${IGW_ID},  ROUTE_TABLE_ID = ${ROUTE_TABLE_ID}"  
181.	echo "SG_ID  = ${SG_ID}"  
182.	echo "==========================================================="  
183.	echo "Done."  

在这个脚本中第一步是创建 VPC 和一个子网。创建中使用了“–amazon-provided-ipv6-cidr-block” 这个参数来声明需要在这个VPC中支持IPv6。在创建 VPC 和子网后,可以将 Internet Gateway连接到VPC,并要创建自定义路由表,并为子网配置到 Internet Gateway的路由,从而使子网成为公有子网。接下来,需要修改子网的公有 IP 寻址行为,以便在子网中启动的实例能够自动接收 IPv6 地址。当我们在子网中启动EC2实例时,系统就会将子网范围中的一个 IPv6 地址分配给该实例的主网络接口 (例如:eth0)。当这一切准备就绪,我们就可以在这个子网中创建实例,这个实例将会被自动的分配一个IPv6 的地址,这意味着我们可以通过例如ssh ec2-user@2001:db8:1234:1a00::123 这样的名令来连接到刚刚建立好的EC2实例。

IPv6的小技巧:

在使用IPv6的过程中,我也找到了一些有用的资源。例如,如果我们需要找到APNIC(Asia-Pacific Network Information Centre,APNIC)分配给中国的IPv6地址,那么这一条命令将会帮助我们得到所需的数据

curl -4sSkL ‘http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest’ | grep CN | grep ipv6 | grep CN | grep ipv6 | awk -F’|’ ‘{printf(“%s/%d\n”, $4, $5)}’

此外,AWS 公开了他的 IP 地址范围(https://docs.aws.amazon.com/zh_cn/general/latest/gr/aws-ip-ranges.html)。这就使得我们能够很容易的得到例如不同区域的IP地址或者不同服务的IP地址。例如,下面这条命令就可以让我们得到在AWS中国(宁夏)区域EC2服务的IPv6 的地址范围。

curl -4sSkL ‘https://ip-ranges.amazonaws.com/ip-ranges.json’ | jq -r ‘.ipv6_prefixes[] | select((.network_border_group==”cn-northwest-1″) and (.service==”S3″))| .ipv6_prefix’

在AWS上使用IPv6的注意事项

最后,是关于AWS上的IPv6使用中的需要留意的几个地方 –

  • 在 AWS的VPC 中使用 IPv6 不收取任何额外费用。
  • 分配给EC2实例的IPv6地址都是全球单播地址,因此不需要NAT 网关。并且IPv6 不支持 NAT 网关。
  • Amazon 的弹性IP地址服务(Elastic IP)目前不支持 IPv6 地址。对于指向实例的常规IPv6地址,该地址对于该实例将始终保持不变。
  • 如果现有 VPC 仅支持 IPv4 并且子网中的资源配置为仅使用 IPv4,则可为VPC 和资源启用 IPv6 支持。VPC 可在双堆栈模式下运行 —资源可通过 IPv4 和/或 IPv6 进行通信。IPv4 和 IPv6 通信彼此独立。
  • 目前不能为 VPC 和子网禁用 IPv4 支持;这是 Amazon VPC 和 Amazon EC2 的默认 IP 寻址系统。
  • 如果使用 Amazon Linux 2016.09.0 或更高版本、Windows Server 2008 R2 或更高版本启动实例,则已经为 IPv6 配置实例,无需执行其他步骤。
  • 关于域名服务,Amazon Route 53 支持正向 (AAAA) 和反向 (PTR) IPv6 记录。Amazon Route 53 服务本身也可通过 IPv6 使用。IPv6 网络上的递归 DNS 解析器可以使用 IPv4 或 IPv6 传输,以便向 Amazon Route 53 提交 DNS 查询。Amazon Route 53 运行状况检查也支持使用 IPv6 协议来监控终端节点。
  • 尽管大部分AWS服务都支持了IPv6,仍有少量服务不支持IPv6,例如RDS。
  • 自带 IP 地址 (BYOIP)服务目前仅支持IPv4,尚不支持IPv6。

遇到问题,就去解决它并制定出新的规则。这是互联网技术蓬勃发展的根本原因,云计算也是如此。也许IPv6 的过度会遭遇到一些痛苦,但我们有理由相信新的技术必定创造出更多新的机遇。既然趋势不可阻挡,那就让我们一起来拥抱这个变化,一起进入这个全新的IPv6 的云计算的世界!

 

本篇作者

费良宏

费良宏,AWS Principal Developer Advocate。在过去的20多年一直从事软件架构、程序开发以及技术推广等领域的工作。他经常在各类技术会议上发表演讲进行分享,他还是多个技术社区的热心参与者。他擅长Web领域应用、移动应用以及机器学习等的开发,也从事过多个大型软件项目的设计、开发与项目管理。目前他专注与云计算以及互联网等技术领域,致力于帮助中国的 开发者构建基于云计算的新一代的互联网应用。