因微信支付API对IPv6支持不完整引起的一次故障(2)
时间:2018-12-10 18:53 来源:网络整理 作者:墨客科技 点击:次
如上图,当一个客户端发起DNS解析请求时,会有一个优先级的,按照本地DNS缓存->/etc/hosts的DNS配置->isp或本地域名解析缓存服务器->根域名服务器->顶级域名服务器->...->目标站点权威服务器的顺序一路解析下来。 结合本次故障来看,问题应该是在权威服务器这里。究竟如何,且看下文解说。 先来看看对比的解析结果: A.api.mch.weixin.qq.com的IPv4解析结果 dig api.mch.weixin.qq.com A +trace weixin.qq.com. 86400 IN NS ns-cnc1.qq.com. weixin.qq.com. 86400 IN NS ns-cnc2.qq.com. api.mch.weixin.qq.com. 600 IN CNAME forward.qq.com. forward.qq.com. 120 IN A 123.126.122.46 forward.qq.com. 120 IN A 125.39.133.115 B.api2.mch.weixin.qq.com的IPv4解析结果 $ nslookup api2.mch.weixin.qq.com Non-authoritative answer:: api2.mch.weixin.qq.com Addresses: 182.254.10.62 182.254.12.36 C.api.mch.weixin.qq.com的IPv6解析结果 dig @ns-tel1.qq.com weixin.qq.com AAAA weixin.qq.com. ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 53871 api.mch.weixin.qq.com. 600 IN CNAME forward.qq.com. D.api2.mch.weixin.qq.com的IPv6解析结果 dig api2.mch.weixin.qq.com AAAA weixin.qq.com. 30 IN SOA ns-tel1.qq.com. webmaster.qq.com. 1293502040 300 600 86400 300 从上面的测试结果可看出,api2.mch.weixin.qq.com IPv6解析正常,api.mch.weixin.qq.com.IPv6解析失败是因为多了一层: api.mch.weixin.qq.com. 600 IN CNAME forward.qq.com.,然后 forward.qq.com AAAA 的解析返回是错误的,这里是权威服务器处理失败了。 为什么客户端解析的是 api.mch.weixin.qq.com AAAA,而缓存回去查询 forward.qq.com AAAA 呢? 这是因为 api.mch.weixin.qq.com. 600 IN CNAME forward.qq.com. 这条记录被缓存了,导致后边后续的查询都会变成查 forward.qq.com 对应的记录。 下面再对比一下解析和api.mch.weixin.qq.com看看在权威服务器层面有何不同。 #+++++++++++++++++++++++++++++++++++++++++++ dig AAAA ; IN AAAA ;; ANSWER SECTION: 600 IN CNAME 216 IN CNAME 163.xdwscache.ourglb0.com. ;; AUTHORITY SECTION: ourglb0.com. 30 IN SOA DNS1.ourglb0.org. webmaster.ourglb0.com. 1107011041 10800 3600 64800 60 #+++++++++++++++++++++++++++++++++++++++++++ dig api.mch.weixin.qq.com AAAA @ns-cnc1.qq.com. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9615 ;; WARNING: recursion requested but not available ;; AUTHORITY SECTION: weixin.qq.com. 43200 IN SOA ns-tel1.qq.com. webmaster.qq.com. 1293502040 300 600 86400 300 这里api.mch.weixin.qq.com的AAAA 解析返回有问题,是SOA,按协议应该还是返回 CNAME 记录;可以对比 的解析结果发现后者就是返回的SOA。 (责任编辑:admin) |