DNS(Domain Name System,域名系统)负责把人们容易记忆的域名翻译成机器可识别的IP地址,是整个互联网访问链路中的第一环。一旦DNS配置出现问题,哪怕网络本身是通的,也会出现网页无法打开、解析缓慢或者跳转到错误站点的现象。这篇文章围绕dns怎么配置这个核心问题,详细讲解Windows、Linux、路由器三种常见环境下的配置步骤,并梳理配置后的验证方法和常见故障的排查思路。

一、配置之前:先弄清楚DNS的工作流程
在动手修改配置之前,理解DNS的解析流程能帮助后续排查问题。当你在浏览器输入一个域名后,系统会先查询本地缓存,缓存中没有再询问配置的DNS服务器,DNS服务器如果自身没有记录,会代替客户端逐级向上查询根服务器、顶级域名服务器和权威服务器,最终把对应的IP地址返回给客户端。整个过程通常在几十毫秒内完成。
客户端使用的DNS服务器地址,通常来自两种途径:一是通过DHCP自动获取,运营商或者路由器会下发默认的DNS地址;二是用户手动指定的静态DNS,比如常见的114.114.114.114、223.5.5.5(阿里)、119.29.29.29(腾讯)、8.8.8.8(谷歌)等公共DNS。手动指定的好处是可以绕开运营商DNS可能存在的劫持和广告注入问题,缺点是如果该DNS服务不稳定,反而会影响上网体验。
另外要区分DNS配置和hosts文件的关系。hosts文件是本地的静态解析记录,优先级高于DNS查询,排查问题时别忘了检查hosts里是否残留了旧的解析条目,很多人修改了DNS却发现访问的还是旧IP,最后发现是hosts文件在起作用。
二、Windows系统下的DNS配置步骤
以Windows 10和Windows 11为例,图形界面的配置路径是:打开设置,进入网络和Internet,点击更改适配器选项,找到当前使用的网卡,右键选择属性,双击Internet协议版本4(TCP/IPv4),在弹出的窗口中勾选使用下面的DNS服务器地址,然后填入首选和备用DNS。首选填223.5.5.5,备用填119.29.29.29,是比较稳妥的组合。如果使用IPv6,则在Internet协议版本6中做同样的设置。
除了图形界面,也可以用命令行快速完成,适合脚本化批量操作:
:: 查看当前网络连接的名称 netsh interface show interface :: 设置主DNS和备用DNS(以"以太网"为例) netsh interface ip set dns name="以太网" source=static addr=223.5.5.5 netsh interface ip add dns name="以太网" addr=119.29.29.29 index=2 :: 清理本地DNS缓存 ipconfig /flushdns
配置完成后需要验证是否生效。打开命令提示符,执行ipconfig /all查看网卡详情中的DNS服务器字段,确认地址已经变更。再用nslookup www.baidu.com测试解析,观察返回的结果是否来自你设置的DNS服务器。如果nslookup显示的Server还是旧地址,多半是修改没有保存,或者改错了网卡,比如笔记本同时有有线和无线两块网卡,实际联网的是无线网卡。
三、Linux系统下的DNS配置步骤
Linux下的配置方式取决于发行版使用的网络管理工具。传统方式是直接编辑/etc/resolv.conf文件,写入nameserver配置:
# 编辑DNS配置文件 vim /etc/resolv.conf # 写入以下内容 nameserver 223.5.5.5 nameserver 119.29.29.29
但要注意,在很多新版系统中直接修改这个文件会在重启网络服务后被覆盖,因为NetworkManager或者systemd-resolved会动态生成它。正确持久化的做法是通过NetworkManager的配置工具,例如执行nmcli con mod命令修改对应连接的ipv4.dns属性:
# 查看连接名称 nmcli con show # 为指定连接设置DNS并禁用DHCP下发的DNS nmcli con mod "Wired connection 1" ipv4.dns "223.5.5.5 119.29.29.29" nmcli con mod "Wired connection 1" ipv4.ignore-auto-dns yes # 重新加载配置使其生效 nmcli con up "Wired connection 1" # 验证解析结果 dig www.baidu.com +short
使用systemd-resolved的系统则要编辑/etc/systemd/resolved.conf中的DNS字段,然后重启systemd-resolved服务。验证解析优先使用dig或者host命令,nslookup功能相对有限。dig命令返回的ANSWER SECTION里能看到完整的解析记录和TTL,对于判断解析是否正常非常有用。
四、路由器DNS配置与公共DNS的选择
在路由器管理界面配置DNS,可以让家里所有设备统一使用指定的解析服务,不用逐台设置。登录路由器后台(一般是192.168.1.1或192.168.0.1),在上网设置或者WAN口设置中找到DNS选项,把自动获取改为手动,填入首选和备用DNS后保存重启即可。部分路由器在DHCP服务设置中也有DNS下发选项,修改后新接入的设备会自动拿到新的DNS地址,已经连过的旧设备需要断开重连或手动刷新。
公共DNS的选择没有绝对标准,主要看延迟和准确性。可以在命令行用ping分别测试几个公共DNS到本机的延迟,一般来说国内用户使用阿里、腾讯、114的延迟最低,谷歌的8.8.8.8和Cloudflare的1.1.1.1在部分线路下延迟较高甚至不稳定。如果访问的网站以国内为主,选国内公共DNS;如果有较多海外访问需求,可以考虑组合使用,比如主用国内DNS、备用海外DNS。
需要提醒的是,某些企业内网环境必须使用内部DNS服务器,因为内网域名(比如oa.company.local)只有内部DNS才能解析,换成公共DNS后反而打不开内网系统。这种情况要在网卡配置中同时填写内网DNS和公共DNS,或者保持使用内网DNS不动。
五、常见问题排查与注意事项
配置后无法上网是最常见的情况,排查思路建议按顺序进行:第一步执行ping 223.5.5.5确认网络本身是通的;第二步执行nslookup www.baidu.com 223.5.5.5指定DNS测试解析,如果指定DNS能解析而默认不能,说明当前DNS服务器有问题或者不可达;第三步检查是否有多块网卡或虚拟网卡干扰,禁用不用的网卡再试;第四步清理本地缓存,Windows用ipconfig /flushdns,Linux根据系统使用systemd-resolve --flush-caches或重启nscd服务。
解析到了错误IP或者访问网站弹出广告,通常是运营商DNS劫持的表现,换成可信的公共DNS就能解决。而解析部分域名正常、部分域名失败,可能是DNS的TTL缓存导致的新旧记录交替,等待一段时间或者清理缓存即可恢复。还有一点容易被忽略:DNS服务器本身也可能故障,所以配置时务必同时填写首选和备用两个地址,不要只填一个,这样在其中一台宕机时系统可以自动切换到备用服务器,避免整台设备断网。