Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

操蛋的 DNS 污染

  最近在家访问 B 站老是挂,但似乎又不是 B 站本身挂,于是从网络上找到 B 站一些主要域名的真实 IP,手动绑定了 hosts 解决。虽然我用的是手动配置的国外 DNS 服务器,但运营商的劫持是直接针对 DNS 协议的应答包做伪造,所以这已经不是 DNS 劫持,而是 DNS 污染了。
  作为一个 Web 开发人员,我要考虑的是如何让用户不被劫持,而不仅仅是解决自己上 B 站的问题。如果只是解决自己的问题,其实很容易,可以手动绑个 hosts,也可以开个 VPN。但是我们不可能让一般用户去做这件事情,只有通过技术手段绕过 DNS 解析来解决这个问题。
  之前我以为运营商只会做做 DNS 劫持之类的事情,只要手动配置 DNS 服务器就没事了,还找移动端 App 开发人员聊了聊自建 DNS 服务的方案。但如果运营商使用的都是 DNS 污染这种级别的侵入方式,那就算我们自建 DNS 服务器也是没卵用的。
  目前的 DNS 污染似乎是针对 53 端口的,但是不能排除有直接分析 IP 包的情况。所以我们假设所有基于 DNS 协议的响应都会被伪造,那么解决这个问题的办法就只有一个,那就是不在网络通信中出现 DNS 协议的包。
  如果是纯 Web 应用,这是一个目前无法解决的问题,至少我没有想到任何解决方案,只能等浏览器来解决这个问题了。但如今的 Web 很大一部分已经是跑在移动客户端中了,这种情况下我们自己就是浏览器,当然有可能解决。
  客户端要连接服务器,但又不能有 DNS,那就意味着,服务端必须至少有一个固定 IP 可以让客户端直接访问。之后的所有解决方案都是基于这个 IP 指向的服务器来做的。具体的解决方案有很多,比如首个连接使用 TLS 建立,然后在 TLS 上做自己封装的 DNS 解析协议。
  但是问题来了,即使是在移动客户端中,要劫持所有 WebView 中的网络请求也并不容易(据说可以实现,但我不懂这方面),而且有兼容风险。所以到底受影响的用户有多少?又是否真的有必要冒险去解决这个问题又值得思考了。
  其实刑法里有这么一条,只不过咱们的法制还不完善,民告官的成功率太低,所以没卵用。
  第二百八十六条 【破坏计算机信息系统罪】违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。
  违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。
  故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚。
  最后偷偷告诉大家,千万别用长城宽带,你懂的!
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^