很多用户参考文档为服务器配置好IPv6后,发现外部访问IPv6地址(或IPv6网站)不通,这里为大家提供一个较为完整的排查步骤和测试方法,帮助大家快速定位问题。
IPv6地址访问不通排查步骤
第1步:检查Web程序是否设置了监听IPv6地址
此处以常用的Nginx为例,配置Nginx监听IPv6地址的方法如下:
设置完毕后,使用如下命令验证Nginx是否已监听了IPv6:
第2步:检查系统内部ip6tables服务是否关闭
有的用户系统内部可能开启了IPv6防火墙,需要通过如下命令确认:
CentOS 6.X 系统:service ip6tables status
CentOS 7.X 系统:systemctl status ip6tables
如果发现系统开启了IPv6防火墙,可以通过如下命令关闭:
CentOS 6.X 系统:service ip6tables stop
CentOS 7.X 系统:systemctl stop ip6tables
第3步:检查安全组是否放行了IPv6
由于IPv4和IPv6是两套不同的协议,因此还需要在安全组中单独再配置IPv6规则,允许外部访问我们的端口。
第4步:检查是否开通了IPv6公网带宽
和IPv4地址一样,IPv6也是需要购买公网带宽的。
第5步:检查VPC路由表中是否存在IPv6路由条目
根据ECS所属的VPC,找到对应的路由表,进去查看是否存在下一跳类型为 IPv6Gateway 的自定义路由条目。
第6步:检查IPv6网关是否配置了"仅主动出规则"
开通IPv6公网带宽后,IPv6地址默认具备访问互联网(出方向)和被外部IPv6用户访问(入方向)的权限。
用户如果不希望外部能主动访问ECS实例的IPv6地址,可以为ECS实例的IPv6地址创建"仅主动出规则"。这样配置以后,ECS就只能主动去访问外部的IPv6,而不能被外部的IPv6地址所访问。也就是只出不进。
通常,我们希望自己的IPv6网站可以被外部访问,所以务必不要创建"仅主动出规则"!
第7步:确保客户端机器以及运营商网络支持IPv6
客户端机器 --> 中间运营商网络 --> ECS服务器,这是我们常见的网络访问模式。
要想ECS服务器上的IPv6网站能被外网访问,除了ECS服务器需要好配置IPv6地址以外,还需要客户端机器、中间运营商的网络也得支持IPv6才行。
第8步:确保云解析DNS添加了IPv6地址的解析记录
如果IPv6地址是用于网站,那么记得在云解析DNS中为域名添加4A(AAAA)解析记录。
IPv6地址端口连通性的测试方法
命令:telnet -6 <IPv6地址或者IPv6网站域名> <端口>
示例:telnet -6 2408:400a:142:3100:4a8d:3adb:6645:3b0c 80
IPv6网站的测试方法
方法一:使用命令行测试
curl -6 -v -I <IPv6网站域名>
方法二:使用第三方网站测试
IPv6常见问题问答
问:ECS申请开通IPv6地址后,IPv4地址会消失吗
答:为VPC开启IPv6后,VPC将同时支持IPv4、IPv6双协议栈,ECS将同时具备IPv4地址和IPv6地址,IPv4地址不会消失。
问:在网站服务器同时具有IPv4和IPv6的情况下,客户端访问时优先使用哪个地址
答:客户端访问IPv4/IPv6双栈站点时,如果DNS返回有IPv6地址,则IPv6访问优先。