如何解决跨境DNS解析失败问题?

频道:行业资讯 日期: 浏览:288
问题

公司使?的是阿?云基础设施,DNS解析使?的是境外的Akamai作为域名的DNS解析服务商。

当前有部分应?需要被第三?应?调?,同时也有主动调?第三?应?的需求。最近突发了很多调?失败问题。

应?调?失败:

Gitlab拉取失败:

故障排查

1.?在ECS上进?循环抓包并修改resolv.conf配置

抓包命令:tcpdump -i any -s 0 port 53 and host?【域名】?-C 100 -W 50 -w

/tmp/dns.pcap

参数说明:

-i:指定要过滤的?卡接?,如果要查看所有?卡,可以-i any

-s:?tcpdump?默认只会截取前96字节的内容,要想截取所有的报?内容,可以使?-s

number,number就是你要截取的报?字节数,如果是?0?的话,表示截取报?全部内容

-C:file-size,tcpdump?在把原始数据包直接保存到?件中之前,?检查此?件??是否超过file-size。如果超过了,?将关闭此?件,另创?个?件继续?于原始数据包的记录,新创建的?件名与-w?选项指定的?件名?致,但?件名后多了?个数字。该数字会从1开始随着新创建?件的增多?增加。file-size的单位是百万字节(nt:?这?指1,000,000个字节,并?1,048,576个字节,后者是以1024字节为1k,1024k字节为1M计算所得,即1M=1024?*1024?=?1,048,576)。这?是100M

-W参数:与-C参数?起使?时,可以达到循环写??件的作?。这?是抓50个?件

-w??件路径和?件名 ?于指定保存?件的路径和名称,没有指定路径默认在系统默认路径下;

标准默认resolv.conf标准配置:

options timeout:2 attempts:3 rotate single-request-reopen

#这条配置使得在解析域名时在所有的nameserver中进??随机?的选择。

nameserver 100.100.x.xxx

nameserver 100.100.x.xxx

2.?频繁执?git pull命令等待报错出现

3.?确认DNS的出?IP地址

多次执?命令:dig whoami.ds.akahelp.net txt +short

"ns" "106.xx.xxx.8"

"ns" "106.xx.xxx.8"

"ns" "106.xx.xxx.7"

"ns" "106.xx.xxx.6"

"ns" "106.xx.xxx.6"

"ns" "106.xx.xxx.7"

"ns" "106.xx.xxx.1"

"ns" "106.xx.xxx.6"

"ns" "106.xx.xxx.8"

"ns" "106.xx.xxx.6"

"ns" "106.xx.xxx.6"

"ns" "106.xx.xxx.7"

4.通过云?商服务端检查发现问题原因

原因如下:

a.??先阿?云的DNS服务没有缓存

b.?当?户或应?发起域名解析后

c.?如果阿?云DNS服务器?有请求过的地址且TTL时间未过期的话就直接返回结果

d.?否则阿?云DNS服务器将去境外Akamai去请求解析记录,但由于从国内到境外的?络

波动会导致部分请求失败

临时解决方案

在?期解决?案未落地前我们使?了2个临时解决?案。

1.?如果是A记录的通过临时绑定Hosts解决

2.?如果是CNAME记录或其它的则使?阿?云的Private Zone临时内?DNS解析服务解决

长期解决方案

为了能?期解决这个问题,我们还是准备把域名解析服务放到阿?云的云解析上。保证国内访问没有问题。同时应?也要做两个变更:

1.?要设置调?失败的重试机制,?如失败后重试3次每次间隔3秒

2.?要设置重试后任然失败的补偿机制,这个需要业务负责?去制定具体的补偿规则

0 留言

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。