问题发现
研究生招生考试网站上不去,一开始以为是教育部吃屎了,后来才发现同学可以上去,马上换到手机流量登录正常。
- 查看路由器配置发现路由器配置的dns没什么毛病
114.114.114.114 //114 dns
8.8.8.8 // google dns
加上最近91也上不去,学习之余都没法放松,我觉得出了一些问题,遍开始一顿测试…
测试方法
nslookup
- 清理dns缓存(每次)
➜ ~ sudo killall -HUP mDNSResponder #OS X
- nslookup测试
➜ ~ nslookup www.baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53 //默认114dns,貌似正常
Non-authoritative answer: //非权威相应
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 111.13.100.91
Name: www.a.shifen.com
Address: 111.13.100.92
没看出什么毛病继续测试
➜ ~ nslookup baidu.com dns.baidu.com
Server: dns.baidu.com
Address: 202.108.22.220#53
Name: baidu.com //正常响应
Address: 111.13.101.208
Name: baidu.com
Address: 123.125.114.144
Name: baidu.com
Address: 220.181.57.217
好像还是挺对,继续
➜ ~ nslookup baidu.com ns4.baidu.com
Server: ns4.baidu.com
Address: 220.181.38.10#53
Non-authoritative answer:
Name: baidu.com
Address: 111.13.101.208
Name: baidu.com
Address: 220.181.57.217
Name: baidu.com
Address: 123.125.114.144
发现毛病了,我明明用的百度的dns为什么会返回非权威响应!
让我们换成手机流量来试一下相同的测试
➜ ~ nslookup baidu.com ns4.baidu.com
Server: ns4.baidu.com
Address: 220.181.38.10#53
Name: baidu.com //正常了
Address: 111.13.101.208
Name: baidu.com
Address: 123.125.114.144
Name: baidu.com
Address: 220.181.57.217
果然有猫腻!然后我瞎编了一个dns服务器,居然还特么能查出结果
➜ ~ nslookup baidu.com 12.34.56.78
Server: 12.34.56.78 //呵呵呵
Address: 12.34.56.78#53
Non-authoritative answer:
Name: baidu.com
Address: 220.181.57.217
Name: baidu.com
Address: 123.125.114.144
Name: baidu.com
Address: 111.13.101.208
正常应该是如下这样
➜ ~ nslookup baidu.com 12.34.56.78
;; connection timed out; no servers could be reached
所以估计是长城宽带把所有的dns请求都拦掉了,然后换成他们的查询结果,MMP!!!也就是说你修改路由器的配置一点卵用没有
快速检测
在网上找到一个办法快速检测是否你家的网络的dns遭到劫持
➜ ~ nslookup whether.114dns.com 114.114.114.114
这是114家自己的黑科技,如果真的是通过114.114.114.114这台dns服务器来查询whether.114dns.com的结果是会返回给你一个公网地址的,否则会给你个回环地址,如下:
➜ ~ nslookup whether.114dns.com 114.114.114.114
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
Name: whether.114dns.com
Address: 58.217.249.139 //正常
➜ ~ nslookup whether.114dns.com 114.114.114.114
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
Name: whether.114dns.com
Address: 127.0.0.1 // 妈蛋
绕过
经过热心的网友提示,发现运营商们大部分都是劫持的udp53的dns查询流量,而没有动tcp的流量,所以尝试一下:nslookup -vc 可以强制使用tcp解析域名
➜ ~ nslookup -vc whether.114dns.com 114.114.114.114
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
Name: whether.114dns.com
Address: 58.217.249.139
果然可以,所以想办法让你的dns流量使用tcp协议咯
- liunx下解决方案
git clone git://github.com/heiher/hev-dns-forwarder
没时间研究了,有兴趣的自行研究下哈
乱象
- 网友有个记录挺有意思,traceroute 8.8.8.8,结果发现上一跳是个10开头的内网
- 劫持dns,伪造网速,投放广告,虽然发现这些应该都已经持续很久了,行业中也应该都是默许的规矩,投诉也没什么用,不过欺骗消费者仍是一个无耻的行为!!!
- 关于dns还有好多可以说的,有空继续