有时候上网会遇到这种情况:输入一个正常的网址,结果跳转到了一个完全不相关的页面,或者弹出乱七八糟的广告。这很可能就是遇到了DNS劫持。DNS是域名系统,负责把网址翻译成IP地址,被劫持了就像问路被指了错方向,自然到不了想去的地方。
DNS的工作原理其实很简单。你输入www.example.com,电脑不知道这个域名对应的IP是多少,就去问DNS服务器。DNS服务器查一下告诉你IP地址,电脑再用这个IP去连接服务器。正常情况下这个过程是透明的,但如果中间有人做了手脚,给你返回了一个错误的IP,你访问的就不是真正的网站了。
DNS劫持常见的几种方式。第一种是路由器劫持,攻击者破解了你的路由器管理密码,把路由器里的DNS服务器地址改成他控制的DNS,这样你所有的域名解析都走他的服务器。第二种是运营商劫持,运营商在网络中间节点篡改DNS响应,把流量导向他们合作的网站,这种比较隐蔽。第三种是本机恶意软件劫持,病毒改了你电脑的hosts文件或者DNS设置。
DNS劫持的危害不小。轻的是弹广告、跳转页面,影响上网体验。重的是把你引导到钓鱼网站,窃取你的账号密码,甚至在你下载软件的时候调包成带病毒的版本。特别是支付网站、银行网站被劫持的话,损失可能很大。
怎么防范呢?几个实用的方法。第一,路由器密码一定要改,别用默认的admin,密码设复杂一点,定期检查路由器里的DNS设置有没有被改。第二,手动指定可靠的DNS服务器,比如阿里的223.5.5.5、腾讯的119.29.29.29、Google的8.8.8.8,不要用运营商分配的默认DNS。第三,电脑和手机上装正规的安全软件,定期扫描恶意软件。第四,重要网站尽量用HTTPS访问,DNS劫持只能改IP,改不了HTTPS的证书,跳转到假网站浏览器会报警。
如果怀疑自己被DNS劫持了,可以用nslookup命令手动查一下域名的IP,跟正常的IP对比一下,看是不是被改了。也可以换个DNS服务器试试,如果换了之后正常了,说明原来的DNS有问题。现在还有DNS over HTTPS(DoH)和DNS over TLS(DoT)技术,把DNS查询加密传输,防止中间人篡改,Chrome和Firefox浏览器已经支持了。