服务器DNS劫持风险,DNS服务器使用可靠公共DNS
服务器DNS劫持是常见的网络攻击手段,攻击者通过篡改DNS解析结果,把访问流量导向钓鱼站或广告页。
对服务器来说,使用不可信的本地DNS、运营商DNS或配置漏洞,都会增加被劫持风险。
本文从风险识别、切换可靠公共DNS、验证解析结果三个层面,给出一套可直接落地的操作流程,零基础用户也能按步骤完成。
先判断你的服务器是否容易中招
登录服务器,先查看当前DNS配置。
Linux系统执行:
cat /etc/resolv.conf
Windows Server 则在命令提示符中执行:
ipconfig /all
重点看 nameserver 或 DNS Servers 字段。
如果指向的是路由器默认地址(如192.168.1.1)、运营商自动下发的地址,或是你完全不认识的IP,就要注意了。DNS劫持通常表现为:域名解析到陌生IP、网页被插广告、nslookup结果与真实IP不一致。
这些现象出现任意一个,都建议尽快改成可靠公共DNS。
可靠公共DNS怎么选
目前常用的公共DNS包括:Cloudflare 的 1.1.1.1、Google 的 8.8.8.8、国内可访问性较好的 114.114.114.114 等。配置公共DNS能显著降低解析篡改风险,但不能替代域名锁和HTTPS。
选择时可以两个一组,一个首选、一个备用。
如果服务器面向国内用户,优先测试 114.114.114.114 和 223.5.5.5(阿里DNS);
面向海外用户则优先 1.1.1.1 和 8.8.8.8。
修改服务器DNS:Linux和Windows两种做法
Linux 临时修改最简单的方式是直接编辑 /etc/resolv.conf:
sudo vim /etc/resolv.conf
在文件开头写入:
nameserver 1.1.1.1
nameserver 8.8.8.8
保存退出后立即生效,但重启网络或服务器后容易被系统覆盖。
如果你用的是 Ubuntu 18.04+ 的 netplan,需要修改 /etc/netplan/*.yaml,在对应网卡配置中加上:
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
然后执行 sudo netplan apply。
CentOS/RHEL 则建议修改 /etc/sysconfig/network-scripts/ifcfg-eth0,添加 DNS1=1.1.1.1 和 DNS2=8.8.8.8。
Windows Server 操作路径:
打开“控制面板 → 网络和 Internet → 网络和共享中心 → 更改适配器设置”,
右键当前网卡选“属性”,
双击“Internet 协议版本 4 (TCP/IPv4)”,
然后选择“使用下面的 DNS 服务器地址”,
填入首选和备用DNS,
点击确定。
验证解析结果和防劫持效果
配置完成后,用 nslookup 或 dig 验证。
Linux 下执行:
nslookup example.com
或者:
dig example.com
重点看响应中的 Server 地址是否是你刚配置的公共DNS,以及返回的 IP 是否来自域名真实解析。如果查询结果来自未知IP,或解析出的域名与真实业务不符,说明DNS劫持依然存在。
还可以用 ping 看域名是否能正常解析,但要注意有些服务器禁ICMP。
常见问题与避坑说明
1. 修改 resolv.conf 后重启失效:很大原因是 systemd-resolved 在管理DNS。
可以执行 systemd-resolve --status 查看当前生效配置,必要时在 /etc/systemd/resolved.conf 中设置 DNS=1.1.1.1,然后重启 systemd-resolved 服务。
2. 公共DNS不是越快越好:不同地区、不同运营商到公共DNS的延迟差异很大。
建议用 dig 做几次解析耗时对比,选择延迟低的组合。
3. 配置后仍然被劫持:此时要检查域名注册商的DNS服务器是否被篡改,同时排查服务器上是否被植入恶意进程或 hosts 文件被修改。
Linux 下可用 cat /etc/hosts 检查,Windows 下检查 C:\Windows\System32\drivers\etc\hosts。
如果你正在处理服务器DNS劫持风险,建议先按本文步骤完成检查和配置,再根据自己的网络环境微调DNS组合。
遇到异常时优先回看避坑部分,多数问题都出在配置文件被系统服务覆盖,或者忽略了 hosts 文件。