文章
技术

当小明遇上DNS污染

rebecca  ·  2020年9月16日 我不是品葱的神,但是后来发生了一些事情

当小明遇上DNS污染

(本文是对 /t/7462 所述问题的一个简单概括)

小明:我要去白宫上访
小明:(在浏览器输入whitehouse.gov)
浏览器:好的,我看看啊

浏览器:操作系统(Windows),我这里有个地址whitehouse.gov你帮我查一下
Windows:是根据文字地址(域名)查找IP地址吗?
浏览器:是的
Windows:我先看一下网络设置,根据小明的网络设置,“DNS服务器”填写的是上海电信DNS的IP地址, 202.96.209.133

浏览器:所以小明是上海人
Windows:应该只是来上海打工的
浏览器:为什么这么说
Windows:因为他是盗版软件的受害者

Windows:喂,那个,是上海电信吗?
202.96.209.133:上海电信DNS,请问有什么能帮您的
Windows:我需要查一下whitehouse.gov
202.96.209.133:查到了,whitehouse.gov的IP地址是104.85.218.48
Windows:好的谢谢
202.96.209.133:请对本次服务作出评价,满意请按1
Windows:1

Windows:查到了,你看一下
浏览器:可以,就用这个IP
浏览器:(向Windows提出TCP连接请求)
Windows:你要连哪里
浏览器:连104.85.218.48
Windows:根据小明的网络设置,“网关”填写的是路由器IP 192.168.1.1,那我就先把连接丢给路由器

小明的华为路由器:收到,根据上海电信的网络设置,我应该把这个连接丢给上海电信0123号路由器
上海电信路由器0123:收到,根据上海电信的网络设置,我应该把这个连接丢给上海电信0456号路由器
上海电信路由器0456:收到,根据上海电信的网络设置,我应该把这个连接丢给上海电信0789号路由器

(经过几番周折)

香港电信路由器9527:收到,根据香港电信的网络设置,我应该把这个连接丢给104.85.218.48
香港Akamai节点(104.85.218.48):收到,根据Akamai的网络设置,以及目标主机名whitehouse.gov,我应该把这个连接丢给洛杉矶Akamai节点
洛杉矶Akamai节点:收到,根据Akamai的网络设置,我应该把这个连接丢给亚马逊机房的【地址被隐去】服务器
亚马逊【被隐去】服务器:收到,即将返回whitehouse.gov主页,请稍等
亚马逊【被隐去】服务器:主页已经准备好,请帮我发回去
洛杉矶Akamai节点:这就发回去
香港Akamai节点:这就发回去

(经过几番周折)

Windows:收到了另一端的回复
浏览器:让我看看
浏览器:嗯没问题,这就是白宫主页
小明:(看到了白宫主页)

重点是,如果上海电信DNS故意给小明发一个错误的IP地址,小明的连接就到不了香港Akamai,当然也就到不了亚马逊,小明也就看不到亚马逊发回来的网页了。

这种故意发一个错误的IP地址的做法,就是所谓的 DNS污染(DNS poisoning) 。国内DNS服务商受政府控制,政府要求污染DNS的时候,服务商只能同意。而国外的DNS服务器(比如google DNS),要么直接被中国政府屏蔽,要么DNS请求在返回过程中被中国政府篡改,令用户最终收到错误的IP地址。

菜单
  1. 习猪习 抵抗者运动
    习猪习   抵抗者运动
    内容已隐藏
    内容已被作者本人或管理员隐藏。 如有疑问,请点击菜单按钮,查看管理日志以了解原因。
  2. sorrysorrysorry  

    这个老师好!来我们学校试试吧!

  3. 琳不可瑤混 小朋友
    琳不可瑤混   你們可不能混瑤哦!

    小明上廣州 探親友樂同遊 開懷在唱歌 家陣廣州乜都有

    莫名的想起來這歌,被洗腦了一下午

  4. rebecca   我不是品葱的神,但是后来发生了一些事情

    要避免DNS污染,可以不使用上海电信DNS,自己解析地址,也可以通过安全渠道委托其他可信任的DNS服务器解析地址。

    具体教程站长已经写好了,在/t/7462

  5. solids   Ñøñë

    国内DNS服务商受政府控制,政府要求污染DNS的时候,服务商只能同意。而国外的DNS服务器(比如google DNS),要么直接被中国政府屏蔽,要么DNS请求在返回过程中被中国政府篡改,令用户最终收到错误的IP地址。

    「DNS请求被篡改」> 应当是被部署在各地的GFW「节点」(?)抢答。

  6. rebecca   我不是品葱的神,但是后来发生了一些事情

    @solids #100825 谢谢指正。

    从小明的角度来看,DNS请求返回的内容是错误的,似乎被篡改了。

    • 上海电信DNS可以直接篡改返回给小明的DNS响应;
    • 如果小明不找上海电信而找国外DNS服务器,那么GFW会抢先向小明发回错误的UDP包,实现【抢答】的效果。
  7. solids   Ñøñë

    @rebecca #100864 上海电信的篡改结果是由GFW的抢答行为造成的缓存,发生在第一次(或者TTL归零时)上海电信向其他 DNS 服务器请求时。

    政府大概不会「要求」 DNS 提供者修改记录,而是通过造成大量错误的缓存达到目的。

    这种故意发一个错误的IP地址的做法,就是所谓的 DNS污染(DNS poisoning) 。

    我以为 DNS 污染是被观察到的现象:GFW无差别抢答本地区的特定DNS请求,甚至包括来自CN外的,对位于CN境内的根域名服务器的请求,造成地区内大量错误的缓存。

    你所说的情况应当为「DNS劫持」

    See Also: https://www.williamlong.info/archives/3356.html

  8. rebecca   我不是品葱的神,但是后来发生了一些事情

    @solids #100867 谢谢指正,看来不管是query哪儿的DNS,污染源头都是GFW。

  9. 朝思暮想要登基  

    小明用 https 访问。

  10. 邹韬奋 外逃贪官CA
    邹韬奋   虽然韬光养晦,亦当奋起而争(拜登永不为奴:h.2047.one)