一、IPv6优势
从VoLTE全面商用开始,国内移网IPv6使用率节节攀升,IPv6移网流量已超过50%;家庭固网的局端IPv6改造也已完成,并且多数的光猫在配置时已默认开启。确切的说IPv6已经实实在在来到了我们的生活中,但对个人用户而言,多数人处于一种并没有明显感知的环境中。云计算平台开启IPv6的好处,大的方面AWS Blog(点击前往)讲的比较全面了,在各家的宣传材料中都不难找到。
但是IPv6终究只是一个如同门牌号般的地址,不会减少网络本身所需的设备、带宽成本,甚至短期内更新网络设备来支持IPv6是一种额外的开销。因此国内的服务侧除了节点托管到运营商机房的CDN外,大多处于IPv4不能没有但是IPv6可有可无的态度之下,并且把成本完全转嫁给了用户。
当IPv6的成本需要自己额外支出的时候,个人站长而言这种可有可无的感觉更为明显,比如博主就完全不想给IPv6的流量费单独掏钱。但是回过头来,IPv6最大的特点就是它的地址本身,不论移网还是固网每个设备都能拥有唯一的IPv6地址。想想看从服务器直接访问家里的打印机,中间不需任何的中间件,这也是很酷的一件事情。对腾讯云轻量而言,以下整理的几点是博主认为会带来比较实在的体验提升。
不易泄露
IPv6地址一共128位,可分配IP的数量级能够达到38次方,对全网IPv6进行遍历扫描几乎是不可能的。相比之下,腾讯云轻量IPv6在子网CIDR分配这块显得有点抠门了,每个地域分配到账号上的IPv6地址为/124,该段向实例分配满后才会扩充另一段/124。向网络的产品询问后得知,虽然IPv6本身几乎没用成本,但是用于绑定IPv6的硬件设备成本较高(要实现单个IP级别的备案检测、DDoS防护),预配更多地址空间成本难以接受。不过即使如此,IPv6天然具有的良好隐蔽性也能起到一定的作用。
备用链路
IPv6单独享有2Gbps的ddos防护,当IPv4受到攻击而黑洞时,IPv6网络不会受到影响。当IPv4受到攻击而黑洞时,仍可通过IPv6+CDN这样的形式正常为外界提供服务。此外,在跨境场景中,IPv4与IPv6途经交换电路不完全相同,在网络质量相同的情况下能够作为保证访问的一个备份。
网络友好
目前中国移动、中国联通、中国电信近乎100%的移动网络、绝大多数的家庭宽带以及教育网都进行了IPv6双栈改造,且末端设备均分配的可外部访问的IPv6地址。支持IPv6的链路网络设备相对较新,国内互联延迟一般略优于IPv4。此外,相对轻松的网络环境能够允许更多小众协议的存在,甚至PPTP、L2TP都不会受到明显的影响。
二、启用IPv6
自动配置
按照官方文档(点击前往),目前只有OpenCloudOS 8.6、CentOS 7.6、Ubuntu 22.04以及Debian12四种镜像支持开启IPv6。腾讯云现行的ipv6分配策略是无法通过dhcp6下发的,所以自动配置的逻辑是通过系统中内置的TAT助手下发配置实现的,因此只有经过测试后的镜像才允许使用。需要注意的是,以上的系统模板特指该地域IPv6上线后更新的版本,即使你现在运行的是以上Linux发行版的其中之一,可能也要重装为新的系统模板之后才能够通过校验。
除了系统模板的校验,此外还有实例代次支持,这一点可以通过cat /proc/cpuinfo查看服务器的CPU型号来确定。CPU为EPYC 7K62(SA2)、Platinum 8255C(S5)的实例是可以直接进行开启的,而CPU为Gold 6133/6148(S3/S4)的实例暂时不支持,在可用性适配完成前,会自动在同可用区内迁移到到支持IPv6的SA2或S5宿主后再开启。目前最老的代次E5 2680v4(S2)实例已确认未来是无法支持的,在目前内测的香港一区就会遇到实例代次不支持并且同可用区没有可迁移的新代次宿主的情况,这个问题在跨可用区迁移下放前是无法解决的。
如果没有以上的问题,在【网络与域名】模块中的开启IPv6的按钮会变绿,点击启用后服务器会自动重启,等再次启动后IPv6就可以正常使用了。然后你就可以在该选项卡中的【分配公网带宽】中设置IPv4与IPv6带宽的比例,IPv4带宽最低设置为1M,IPv6带宽可随意设置,当IPv6带宽设置为0时IPv6地址不会回收,但会处于无法连通的断网状态。
手动配置
稍微有些动手能力的小伙伴就能看出来,镜像的限制只是为了适应TAT自动化配置模板,而不是我们当前使用的系统不支持。所以如果想保留目前的系统的话,可以先在控制台中为当前系统打一个快照(每个地域都有免费额度),然后重装成受支持的系统如Debian12执行开启IPv6,在TAT的界面【执行命令】中记录下来我们需要的IPv6参数,随后回滚快照到我们之前的系统进行手动配置。
点击查看执行详情,展开命令参数,我们可以看到IPv6内网IP(ula)和IPv6公网IP(gua),可以将它们保存下来。其实ula都是没有必要的,一方面ula可以从dhcp6下发,另一方面同vpc下的机器互联为什么不使用更方便的IPv4呢~
回退镜像后便可以编辑网卡文件添加IPv6的条目,主要就是IPv6的/128地址(gua)和gateway网关地址fe80::ecff:ffff:feff:ffff
,在此以Debian10.2、Ubuntu 18.04和CentOS 7为例。其余的系统也基本都是这几个格式,如果用到内网IPv6的话就额外写一下ula的address或者开启一下dhcpv6就可以了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# Debian 10.2 nano /etc/network/interfaces #编辑interfaces配置 # 修改其中的网卡配置(配置时删除其中注释) auto ens5 #注意实例网卡接口名称,可通过ifconfig查看 iface ens5 inet dhcp #不要动IPv4的dhcp iface ens5 inet6 static #IPv6设置为固定IP address 2402:4e00:170f:cc00:a876:dd58:567a:0/128 #此处为IPv6的/128地址(gua) gateway fe80::ecff:ffff:feff:ffff #IPv6的网关 # Ubuntu 18.04 nano /etc/netplan/01-netcfg.yaml #编辑netcfg配置 # 在其中添加以下内容(配置时删除其中注释) network: version: 2 renderer: networkd ethernets: eth0: #注意实例网卡接口名称,可通过ifconfig查看 addresses: - "2402:4e00:170f:cc00:a876:dd58:567a:0/128" #此处为IPv6的/128地址(gua) gateway6: "fe80::ecff:ffff:feff:ffff" #IPv6的网关 # CentOS 7.9 nano /etc/sysconfig/network-scripts/ifcfg-eth0 #注意实例网卡接口名称,可通过ifconfig查看 # 在其中添加以下内容(配置时删除其中注释) IPV6INIT=yes #开启双栈配置 IPV6_AUTOCONF=no #不使用自动配置 IPV6ADDR=2402:4e00:170f:cc00:a876:dd58:567a:0/128 #此处为IPv6的/128地址(gua) IPV6_DEFAULTGW=fe80::ecff:ffff:feff:ffff #IPv6的网关 |
在Windows上的配置也是相同的,境内地域可以重装为Debian12开启后进行手动配置,但是海外的Windows实例就只能等待官方适配了或者开放手动配置流程之后才能使用了。
至此,你就获得了一个支持IPv6并且保留了原来配置的系统。
配置防火墙
在添加好IPv6地址后,IPv6的防火墙条目是独立于IPv4的,IPv6要使用的端口需要在以前的基础上重新添加IPv6的条目。唯一的不同是在选择来源时要填写::/0
这样的IPv6 CIDR或【选择全部IPv6地址】,这里就不多赘述了。
三、网络概览
这里就以香港为例,因为国际链路的变化非常快,这里的测试结果只能代表博主在发文时测的水平。境内连通性如所示图,回程电信联通直连,而移动走PCCW绕美。电信的互联质量与IPv4基本一致,联通部分地区丢包较为严重,移动则因为绕美延迟较高。
境外IDC间的连通性在PCCW和HGC的加持下基本不存在比较大的问题,中规中矩。
境内地域的IPv6跨境全部通过中国电信进行互连,因此IPv6和IPv4一样丢包比较严重,并不会提升国内服务器较为糟糕的跨境质量。
四、推荐配置
IPv4优先
IPv6作为下一代的IP地址协议,当IPv4+IPv6双栈联网时系统及应用默认会优先使用IPv6地址。但在目前腾讯云轻量的兼容方式中,IPv6是从IPv4共享带宽包分割的带宽额度,上行和下行对等均为设置的分割值,导致在服务器上通过IPv6下载远比IPv4缓慢。此外,当IPv6带宽设置为0时,IPv6处于断网超时状态,可能会导致对外访问超时。这部分我们可以编辑gai.conf
,将IPv4映射地址的前缀::ffff:0:0/96
优先级100的条目取消注释去掉使其生效。
1 2 3 4 5 6 7 8 |
#使用vi/nano编辑gai.conf nano /etc/gai.conf #找到以下内容行并删除'#'注释 #precedence ::ffff:0:0/96 100 # 修改好后,保存文件,执行重启生效 precedence ::ffff:0:0/96 100 |
禁用IPv6
当IPv6开启并在系统配置好后,如决定以后不再使用,这时从网卡删除配置文件是比较麻烦的,可通过编辑/etc/sysctl.conf
快速禁用。向sysctl.conf中添加好以下内容后,执行sysctl -p
即可生效。若再启用,仅需注释掉这三行内容即可。当然,也可以发工单找客服回收IPv6地址,回收后再次开启会分配新的IP地址。
1 2 3 4 5 6 7 |
# 禁用全部网卡 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 # 禁用单个网卡(如eth0) net.ipv6.conf.eth1.disable_ipv6 = 1 |
五、结语
虽然国家推行IPv6建设已经数年,IPv6使用率逐年升高,但是腾讯云CVM、阿里云ECS、华为云HECS等等均要为IPv6的带宽支付额外的费用,腾讯云轻量是目前国内云计算市场中第一个为入门级云服务器提供免费IPv6支持的厂商。但是腾讯云轻量的IPv6支持在创新中也夹杂了一些无奈,最主要的矛盾是轻量的带宽有限,为IPv6划分之后有效带宽上限更加捉襟见肘。所以博主建议没有特殊需要的情况下仍以IPv4为主,将IPv6作为备用网络使用,在资源有效利用率与新功能间寻找一个权衡点。
这些无奈可能来自他们最初选择的OpenStack平台,在VPC网络设计中IPv4与IPv6使用了不同的网关,两者共用带宽、合并限速实现起来非常困难。在国内的特殊环境下,既不能增加用户开销,流量计费和带宽限制二者还都要实现,权衡之下就出现了现在这样一个并不完美的方案。
总的来说腾讯云轻量解决了从无到有的问题,毕竟对国内成熟的云平台而言,启用IPv6短期内是一个增加成本的过程,设法不增加客户开销带来IPv6的功能是腾讯云走出有意义的一步。这些事情一步到位是件很困难的事情,希望未来还能有进一步的优化,让IPv6在日常使用中不受如此多的限制。
*原创文章,转载无需注明出处
关于我从腾讯云群看到的这篇文章
国内的几个云厂商 ipv6 是真的繁琐,一直都没有开箱即用的体验
在RSS阅读器看到标题——哇,太棒了,给轻量云添加免费的备用链路,等阿里云的到期了就买腾讯云去~
看到文章内容——似乎不是特别完美的解决方案啊……毕竟是抢先体验,再看看……
看完文章后——不是哥们,分开记账就算了,为啥还要抢占那少的可怜的带宽?为了一个不到10%时间要用到的特性牺牲在100%的时间牺牲部分带宽?这是人想出来的“折中方案”?
算了,大概还是有人要用到的吧,希望不是应付IPv6改造的半成品功能(哭笑)
国内公有云的IPv6流量居然要单独购买,也是没谁了~应该是IPv4和IPv6合并计费并且默认开启才合理。不然,一般的业务场景没人会专门去买IPv6流量