问题背景
晚上正在浏览网页,忽然发现 Bing 无法访问,抖音视频也加载异常。我的第一反应是检查代理,确认其已关闭后,问题依然存在。接着尝试打开百度——竟一切正常。
这个结果让我下意识地认为网络本身没有问题,从而将排查引入了误区。今天就把这次 DNS 污染排查的完整过程记录下来,希望能帮助到遇到类似问题的朋友。
排查过程
第一步:检查代理
首先我怀疑是代理的问题,检查后发现代理已经关闭,但问题依然存在。这说明不是代理导致的。
第二步:Ping 测试
在命令行中 ping bing.com,结果显示可以正常连通。
这里有个值得留意的点:能 ping 通只代表你的设备能通过 IP 联系到目标服务器,但浏览器访问网站还需要先通过 DNS 将域名转换为 IP。
第三步:浏览器排查
既然 ping 能通,我怀疑是浏览器的问题。先后在 Edge 和 Chrome 中尝试了清除数据、重启等操作,均告失败。两个浏览器症状一致,这又将矛头指回了网络。
第四步:切换网络测试
我用手机切换至移动网络测试,访问立刻恢复。这证实了问题局限在本地 WiFi 环境。
第五步:检查路由器
我使用的是软路由,随即进入软路由后台检查各项服务,未见异常。随后进行的网络重置和路由器重启等操作,只带来了短暂的正常访问,不久后故障复现。
第六步:DNS 污染排查
在查阅资料时,"DNS污染"这个词引起了我的注意。我检查了路由器的 DNS 设置,它正处在"自动获取"模式,这意味着它使用的是网络服务提供商(ISP)分配的 DNS 服务器地址。
第七步:更换 DNS 服务器
我将 DNS 手动更改为公共 DNS 服务器 114.114.114.114,并重启路由器。此后,网络访问完全恢复正常。
问题分析
什么是 DNS 污染?
DNS 污染(DNS Poisoning)是一种网络攻击手段,攻击者通过污染 DNS 缓存,使得域名解析到错误的 IP 地址。在国内网络环境中,某些网站可能会被 DNS 污染,导致无法正常访问。
为什么部分网站能访问?
部分网站(如百度)能打开,只能说明:
- 网络链路正常
- 这些网站的 DNS 解析正常
但这并不能排除其他网站的 DNS 解析出现问题。
Ping 能通为什么访问不了?
Ping 命令测试的是网络层的连通性。而浏览器访问网页(HTTP/HTTPS)需要:
- 先进行 DNS 解析,将域名转换为 IP 地址
- 建立 TCP 连接
- 发送 HTTP 请求
如果 DNS 解析失败,即使能 ping 通 IP 地址,浏览器也无法访问网站。
排错关键点
1. 部分可访问 ≠ 网络正常
这是一个常见的误区。部分网站能访问,只能说明这些网站的 DNS 解析正常,不能排除其他网站的 DNS 问题。
2. Ping 与访问网页的区别
- Ping:测试的是网络层的连通性
- 浏览器访问:需要先进行 DNS 解析,再建立 TCP 连接
DNS 故障会导致访问失败,但可能不影响 Ping。
3. DNS 的作用与选择
DNS 如同互联网的通讯录,负责将域名翻译成 IP 地址。"自动获取"的 DNS 有时可能不稳定或受到干扰。
手动更换为公共 DNS 服务器(如 114.114.114.114、8.8.8.8 等)往往是解决此类疑难杂症的有效方法。
常用公共 DNS 服务器
| DNS 服务器 | IP 地址 | 特点 |
|---|---|---|
| 114 DNS | 114.114.114.114 | 国内速度快,稳定 |
| 阿里 DNS | 223.5.5.5 | 防劫持,速度快 |
| 腾讯 DNS | 119.29.29.29 | 响应快,递归解析 |
| Google DNS | 8.8.8.8 | 全球通用,但国内可能慢 |
| Cloudflare DNS | 1.1.1.1 | 注重隐私保护 |
解决方案
方法一:在路由器中设置(推荐)
- 登录路由器管理界面
- 找到 DNS 设置(通常在"网络设置"或"DHCP设置"中)
- 将 DNS 从"自动获取"改为"手动"
- 填入公共 DNS 服务器地址
- 主 DNS:
114.114.114.114 - 备用 DNS:
8.8.8.8或223.5.5.5
- 主 DNS:
- 保存并重启路由器
方法二:在电脑中设置
Windows 系统:
- 右键点击"网络"图标,选择"打开网络和 Internet 设置"
- 点击"更改适配器选项"
- 右键点击当前网络连接,选择"属性"
- 双击"Internet 协议版本 4 (TCP/IPv4)"
- 选择"使用下面的 DNS 服务器地址"
- 填入公共 DNS 服务器地址
- 点击"确定"保存
macOS 系统:
- 打开"系统偏好设置" → “网络”
- 选择当前网络连接,点击"高级"
- 切换到"DNS"标签
- 点击"+"添加 DNS 服务器
- 输入公共 DNS 服务器地址
- 点击"OK"保存
验证 DNS 修改
修改 DNS 后,可以使用以下方法验证:
Windows 系统
ipconfig /flushdns
nslookup bing.com
macOS/Linux 系统
sudo killall -HUP mDNSResponder
nslookup bing.com
如果解析结果显示正确的 IP 地址,说明 DNS 设置成功。
总结
这次经历提醒我,当遇到"部分网站打不开"的奇怪现象时,不妨将 DNS 设为排查的第一站。
希望这篇记录能帮助到遇到类似问题的朋友!如果你有其他 DNS 相关的问题或经验,欢迎在评论区交流。
默认评论
Halo系统提供的评论