上周四凌晨两点,劫解决我的持何路由器日志里突然多了一整页的DNS查询记录,目标域名全是劫解决陌生地址。那会儿我正在排查一个客户网站打不开的持何问题——浏览器地址栏明明输入的是正确的域名,跳转的劫解决却是满屏赌博广告的页面。这不是持何什么高深黑客攻击,纯粹是劫解决DNS劫持在作祟。
DNS劫持的持何原理说白了就一句话:你的设备问“example.com在哪”,本该回答正确IP的劫解决DNS服务器,却给了个假地址。持何最常见的劫解决坑出在路由器上,很多人家里的持何路由器还是出厂默认密码,黑客扫到后直接登录管理后台,劫解决把DNS设置改成恶意服务器地址。持何我见过最离谱的劫解决一例,受害者整个小区的路由器都被改了,因为那个牌子的路由器有个统一的管理端口漏洞。
解决的第一步,先别急着查电脑。拿起手机,断开WiFi用流量访问同一个网站。如果手机能正常打开,问题基本锁定在你的路由器或局域网DNS设置上。登录路由器管理界面(通常是192.168.1.1或192.168.0.1),找到“网络设置”或“WAN口设置”,看看DNS服务器那一栏是不是被填了奇怪的IP。正常运营商分配的DNS一般是像114.114.114.114或223.5.5.5这种公共DNS,如果看到一串陌生的数字,比如45.155.205.xxx这种,十有八九被劫持了。
改回DNS后,记得顺手把路由器管理密码改了,别再用admin/admin这种组合。我习惯设置成强密码后拍照存手机备忘录,虽然不完美但比裸奔强。要是路由器固件有更新,也一并升级,很多劫持漏洞都是老版本固件的锅。
第二步,查你的电脑本身。Windows系统打开命令提示符,输入ipconfig /all,看“DNS服务器”那行是不是你预期设置的地址。如果显示的是127.0.0.1或一些奇怪的本地地址,可能是中了修改hosts文件的恶意软件。这时候用杀毒软件全盘扫描,或者手动打开C:\Windows\System32\drivers\etc\hosts文件,看看有没有被追加奇怪的映射记录。正常hosts文件里应该只有注释行,如果看到类似“0.0.0.0 adservice.google.com”这样的条目,删掉多余的行保存即可。
还有一个容易被忽略的角落——浏览器本身的DNS缓存。Chrome地址栏输入chrome://net-internals/#dns,点“Clear host cache”按钮。这招对付那种只劫持浏览器DNS解析的恶意插件特别管用。我遇到过一个案例,用户所有浏览器都被劫持,但命令行ping域名却返回正确IP,最后发现是浏览器扩展在搞鬼。
如果你用的是公司或学校的网络,DNS劫持可能发生在更上游的服务器上。这种个人层面基本无解,只能联系网络管理员处理。去年帮朋友排查一家小公司的网络故障,发现是他们路由器上开了“DNS代理”功能,但该功能有个已知漏洞,被外部扫描利用。关闭代理功能后,问题立刻消失。
最后说个偏方,适合技术党。自己搭一个DNS over HTTPS隧道,用加密查询绕过本地DNS转发。Windows和macOS都支持配置DoH,把系统DNS设置成https://dns.alidns.com/dns-query 这种地址。虽然配置起来多几步,但能从根本上防止中间人篡改DNS响应。我自己的电脑就常年开着DoH,效果立竿见影。
处理完这些,回头再看那个客户网站——原来是他服务器上的DNS记录被黑客改了一条子域名解析。登录域名管理后台,删掉那条指向恶意IP的A记录,重新添加正确的解析,十分钟搞定。DNS劫持看着吓人,但九成案例都是低级错误导致的,按着路由器和系统设置排查一遍,基本能解决。要是还不行,把网线拔了,用手机热点连电脑试试——要是热点下一切正常,那问题铁定出在你的网络设备上。