看到你的描述,想必对dns解析还是有一定了解的。我就不科普DNS了。
本想借你的问题,开个子域名到dnspod
分析分析,无奈人家不支持子域名添加。江湖传闻的最大第三方DNS厂子竟然不支持3级域名添加。看看下面,我只能呵呵了...
看来,自从dnspod从了鹅厂后瞧不起咱这小门小户了。得嘞,幸亏我还有CloudXNS这把瑞士军刀在手。
你的问题是域名解析商是怎么知道来源的?也就是如何精确解析的。
这里要抛出一个概念,edns-client-subnet。它是google提交了一份
我的分析过程:
我在cloudXNS添加解析线路:
cloudXNS中的线路相当丰富,精确到省市各个运营商和海外线路;有图为证:
为了解释这个问题,我添加了代表性的 线路。然后分别dig域名:
我从电信北京设备dig域名。
可以看到返回是电信默认线路的A类地址。
然后我直接查询CloudXNS的授权服务器。
发现返回的是8.8.8.8。显然走的是海外线路。
为嘛尼?抓报瞧瞧:
发包:
收包:
从上面可以看到,在additional records区域会携带客户端ip地址。这就是edns-client-subnet的原理。这也是CloudXNS给大家带来的惊喜,当然既然号称瑞士军刀,彩蛋还不止于此,据说CloudXNS最近还推出了httpdns,完全绕过了运营商,解析精确度高达99.999%喽,真心NB...
回归问题,8.8.8.8 是publicDNS,在收到用户请求时候,会把客户的LDNS的ip地址填充到Additional records区域,所以递归后传的还是LDNS的IP。说到这估计你的疑虑已经消除了。
---------------------------分割线----------------------------------------------------------
感谢 橙芒果 同学的评论
若用户用的是 public DNS,填充是用户的源公网IP而不是LDNS了。
你的说法是正确的。看了我的结论估计是短路了。用8.8.8.8 就是绕开LDNS 。 怎么会填充addr区域呢?
空说无凭,上代码:
第一步:更改LDNS:用8.8.8.8来做DNS
第二步:检查公网ip(ip138或者traceroute 公网域名)
看到我们的公网ip是163.53.243.17
第三步发起DNS询问
第四步:抓包查看
00 a3 35 f3 翻译过来就是163.53.243.0
可见携带的是公网ip地址
分享即学习
微信公众号
CDN那些事