小白提问,当使用 dig 命令查询已被 GFW 墙了的域名时,每次解析出来的 IP 都不一样。我将 DNS server 设置为 8.8.8.8 后,依然是如此。如果查询没有被墙的域名,那么每次的结果都是一样的。
我知道肯定是 GFW 做了某些手脚,但是不知道具体原理,有没有明白的 v 友说一说细节,想知道。

小白提问,当使用 dig 命令查询已被 GFW 墙了的域名时,每次解析出来的 IP 都不一样。我将 DNS server 设置为 8.8.8.8 后,依然是如此。如果查询没有被墙的域名,那么每次的结果都是一样的。
我知道肯定是 GFW 做了某些手脚,但是不知道具体原理,有没有明白的 v 友说一说细节,想知道。

|
1
可以开 wireshark 看一下,有可能会有两个 DNS 回复,先回来的是抢答的投毒回复
|
|
2
多数是被抢答了
|
|
knightdfMay 28, 2021
3
还有可能是 DNS 轮询
|
|
henicesMay 28, 2021
4
国内最大的分布式 入侵检测系统
|
|
tankrenMay 28, 2021
5
ping 一下 8.8.8.8 看看是不是真的
|
|
6
@tankren “是不是真的”指什么东西?我能够 ping 通 8.8.8.8
|
|
ho121May 28, 2021
7
利用 DNS 轮询做负载均衡
|
|
8
https://www.senrokumon.com/gfw-dns-hijacking/
dns 抢答 /劫持 dns 走 udp 协议,普通的 dns query 又是明文且不加密的,这样就很容易被蔷或者 isp 做手脚 |
|
zongrenMay 28, 2021
9
本身就有多个 ip 啊
|
|
10
冷知识,你随便指定一个国外的 IP 去查询被墙的域名,不管它开没开 53 端口,甚至存不存在,也会有返回结果哦。
如: $ dig google.com @111.111.11.1 ; <<>> DiG 9.10.6 <<>> google.com @111.111.11.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36728 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 60 IN A 46.82.174.69 ;; Query time: 21 msec ;; SERVER: 111.111.11.1#53(111.111.11.1) ;; WHEN: Fri May 28 16:11:23 CST 2021 ;; MSG SIZE rcvd: 54 |
|
11
@Greenm 我刚刚试了一下,确实是这样,这是为什么呢......dig 命令中的指定 server 没有任何作用吗?
|
|
12
@zongren 你的意思是有几十个 ip ?我查了几十次,每次结果都不一样,这不太可能吧
|
|
13
@AllenHua 原来是抢答造成的,懂了
|
|
GreatshuMay 28, 2021
14
普通 dns 请求是明文而且没有签名的,伪造不要太简单,大学时计算机网络有一个作业就是用 winpcap 实现 DNS 劫持
|