网站支持IPv6访问需要注意的域名问题
让我们先看几个例子(略去部分和此次分析无关的内容): C:\>nslookup Default Server: dns.sjtu.edu.cn Address: 202.120.2.101 > set type=all > www.dlut.edu.cn Non-authoritative answer: www.dlut.edu.cn AAAA IPv6 address = 2001:da8:a800:3::66 www.dlut.edu.cn internet address = 202.118.66.66 > www.fudan.edu.cn Non-authoritative answer: www.fudan.edu.cn AAAA IPv6 address = 2001:da8:8001:2:21e:c9ff:feb5:eace www.fudan.edu.cn internet address = 202.120.224.5 > www.xmu.edu.cn Non-authoritative answer: www.xmu.edu.cn AAAA IPv6 address = 2001:da8:e800::12 www.xmu.edu.cn internet address = 210.34.0.12 > 如果用户端安装了IPv6协议,并可以正常访问CERNET2,那么用户访问以上三所 大学的网站会优先使用解析出的IPv6地址访问,不会有什么问题。 如果用户端没有安装IPv6协议,可以正常访问IPv4网络,那么用户访问以上三所 大学的网站只会使用解析出的IPv4地址访问,不会有什么问题。 But: 如果用户端安装了IPv6协议,但不能正常访问CERNET2(这种情况是可能存在的), 虽然可以正常访问IPv4网络,但在使用某些操作系统和某些浏览器的情况下,上面的几 个网站可能就表现为无法访问了。 虽然这是个别情况,但是需要注意。
Tips 1,253 views
请问我已经安装了ipv6,并且能访问ipv6网站,但我像你一样执行命令行的时候,只有ipv4的地址,没有ipv6的地址?这是何因?我ipv6里面的dns并没有添,因为学校没有ipv6的DNS服务器。
nslookup 查询时需要设定一下 set type=all 或 set type=AAAA。
ipv6里面的DNS服务器未必一定要添加,双栈环境下可以使用IPv4的DNS来解析IPv6域名。
引用一下我一位同事之前对此的解释:
如果client查询A记录,服务器只能返回A记录,返回其它记录都是错的。
对于大多支持ipv6的client来说,流程是这样的:
client query a bbs6.sjtu.edu.cn
server response NOERROR bbs6.sjtu.edu.cn 但是没有A记录答复,只有一个SOA记录在
Authority Section。
这个NOERROR很重要,因为域名不存在的答复是NXDOMAIN
这个时候client就认识到bbs6.sjtu.edu.cn有域名记录,但不是A记录,所以会再次发出查询 client query aaaa bbs6.sjtu.edu.cn
如果这个时候server返回一个AAAA记录的答复,client就开始ipv6的连接
如果还是没有AAAA记录,client就认为无法找到域名
当然,有些client是同时查询A和AAAA记录,对于这些软件,他们会自己选择一个可用的记录进行连接。