上一篇我们讨论的IPv6相对于IPv4的诸多变化和相应的基础知识。这一篇,我们要讨论的是如何根据这些变化,具体落实到在公有云上部署一套自己的IPv6系统,以验证或者直接在IPv6的网络世界中提供自己的业务服务。
我们在海外测试IPv6的过程中,在AWS上和Azure云都做了详尽的技术对比和测试,其中的经验藉此分享给大家。
在公有云上IPv6配置部署的方式
在公有云上部署IPv6应用原理上和使用配置部署IPv4的应用和服务是一样的。然而,由于公有云底层架构的不同,具体的配置架构和方法则差距很大。总体来说,有2种方式:
- 直接绑定在VPC的虚机上,和IPv4并存使用
- 需要绑定在VPC的特定网络设备上(如Net Gateway或者Load Balancer)
下面我们就以AWS和Azure分别说明两种VPC配置IPv6的方法。
01
AWS 配置IPv6的方式
AWS的VPC配置IPv6相当的简单直接。从2016年起,AWS的EC2就已经支持IPv6了。
01 为AWS VPC添加IPv6的绑定
首先,通过https://console.aws.amazon.com/vpc/ 通过AWS console访问VPC的配置。
对于没有VPC,需要先创建VPC。
- 通过AWS console中,通过VPC创建向导来创建一个具有 /16 IPv4 CIDR 块的 VPC 并将一个 /56 IPv6 CIDR 块与该 VPC 关联。有关更多信息,请参阅您的 VPC。IPv6 CIDR 块的大小是固定的 (/56),IPv6 地址的范围是从 Amazon 的 IPv6 地址池中自动分配的 (不能手动自选范围)。
- 将 Internet 网关连接到 VPC。
- 在 VPC 中创建一个具有 /24 IPv4 CIDR 块和 /64 IPv6 CIDR 块的子网。IPv6 CIDR 块的大小是固定的 (/64)。
- 创建一个自定义路由表,并将其与您的子网相关联,以便在子网与 Internet 网关之间进行通信。
具体而言,配置IPv6 CIDR就是在第一步的VPC创建向导中实现的:
随后,选择第一个选项,即 VPC with a Single Public Subnet,然后选择 Select。
在配置页面上,在 VPC name 字段中为您的 VPC 输入一个名称 (例如,my-vpc),并在 Subnet name 字段中为您的子网输入一个名称。
然后,就到了配置IPv4和IPv6 CIDR的阶段。对于 IPv4 CIDR block,您可以保留默认设置 (10.0.0.0/16) 或指定自己的设置。对于 IPv6 CIDR block,则选择 Amazon-provided IPv6 CIDR block。
对于 Public subnet’s IPv4 CIDR,保留默认设置或指定您自己的设置。对于 Public subnet’s IPv6 CIDR,选择 Specify a custom IPv6 CIDR。您可以保留 IPv6 子网的默认十六进制对值 (00)。
保留页面上的其余默认配置,然后选择 Create VPC。
02 为已有的VPC添加IPv6地址
作为已经使用了IPv4搭建的EC2 instance,为其所在的VPC 添加IPv6的地址则比上文中提到的从头创建VPC就更加简单了。
首先,仍旧是通过https://console.aws.amazon.com/vpc/ 访问VPC的配置。
随后,选择左侧导航栏里的Your VPCs:
随后,在右侧下拉框选择Edit CIDRs:
这时就会看到IPv6的CIDR还没有配置:
直接选择“Add IPv6 CIDR”来为VPC添加IPv6。
如何查看EC2的IPv6地址
首先访问https://console.aws.amazon.com/ec2/, 进入EC2的配置界面。
然后,在左侧的导航栏里选中自己的Instance,这时,下方的具体信息栏里就可以看到这个Instance的具体配置信息,比如IPv4的内网、外网地址等。
随后,点击actions下拉菜单:
依次选择Networking → Manage IP Addresses:
02
在Azure中为VPC配置IPv6
通过在AWS中配置IPv6简直不能再简单了,然而,到了Azure,你还想鼠标点点点就配置了,那么你就错了。因为,这里只能通过Azure里portal中输入命令,或者运行脚本才能配置。
不过,这里有个好消息,就是使用Windows平台的用户,可以通过按照Azure for PowerShell的插件来在本机运行Azure命令和脚本,比起来直接访问Azure Portal 要速度快的多(想想国内打开Portal的速度……)。
除此2个方法之外,还有一个ARM模板的方法创建。
01 Azure配置的基本方法
我先讨论一下Azure VPC的IPv6的基本原则:
- Azure 的VPC中已有VM不支持添加IPv6,只能为了支持IPv6新创建VM
- 公网可访问的IPv6必须绑定在Load Balance上
- 访问VM的公网IPv6Inbound通过Load Balance上的映射关系实现
- 而出向的IPv6是另外一个绑定关系,Egress IPv6
- 同一个VPC中,VM之间不能使用IPv6相互通信,IPv6只用于VM和外部的IPv6通信
当然,以上原则是我8月份验证的,也许Azure配置原则发生变化了,也未可知。
好在终于找到了一个教程,其完成的结构如上图,即一个Load Balancer对应了2个VM,这样他可以在一个VM升级改造过程中,仍旧有另一个VM提供服务。
不需要那么多VM,其实一个就够了,然而他的script显然有不少bug。 分步运行,然后逐条的排错,最后终于能够顺利运行下来了。
具体步骤如下:(如需脚本,请直接在公号后台联系我们)
- 建立一个新的Resource Group
- 建立vNet的子网
- 建立IPv4和IPv6的公网地址
- Load Balancer的公网一侧的配置
- Load Balancer 内网侧的配置
- Load Balancer 的入向NAT配置
- 建立RDP端口3389的探测
- 建立 Load Balancer上的负载均衡策略
- 创建Load Balancer
- 获取vNet信息
- 给VM的网卡配置IPv4、IPv6
- 配置VM的存储账号(硬盘)
- 配置Admin的用户密码
- 创建VM
脚本运行过程中,会不断有提示信息,所以,你要做的事就是一杯咖啡,慢慢等待。(当然,有了bug请及时删掉已经创建的内容,这个可以从portal做)。