设置服务器上的DNS地址,本质上是给服务器配置一个“网络翻译官”,让它能把域名准确解析成IP地址,从而正常访问外部网络或对外提供服务。很多运维新手第一次登录云服务器时,看到“DNS设置”这一栏会有点懵,不知道填什么、在哪里填、填错了会怎样,这篇文章就把这个事讲透,从概念到操作,从纠错到验证,一步步来。
服务器上的DNS地址到底是什么
DNS全称是域名系统,它的核心作用是把类似 example.com 这样的域名,翻译成服务器实际使用的IP地址,没有这个翻译过程,你在浏览器里敲再漂亮的域名也访问不到任何东西。
家用电脑上网时,路由器会自动分配DNS,通常不需要手动管,但服务器不太一样,尤其是独立服务器、云主机和自建机房设备,DNS配置是系统级的网络参数之一,写错了轻则域名解析失败,重则整个服务器对外通信都受影响。
拟人化一点说:DNS地址就是服务器网络请求的“问路指南”,指南上写了几个地名,但地名是错的,那这趟网络出行就彻底跑偏了。
系统里配置的DNS和域名注册商的DNS别搞混
服务器上设置的DNS,指的是“解析者”的位置,也就是这台机器去问谁“某个域名对应哪个IP”,而域名注册商那里配置的DNS(Name Server),是“权威发布者”的位置,它告诉全世界“某个域名归谁管、解析记录在哪里”,两者的区别类比成图书馆:前者是读者去查哪个书架,后者是图书馆对外公布的图书编目总表。
这个区分很关键,很多人把服务器上的DNS地址和域名解析记录的NS地址混为一谈,结果排查了一整天,问题根本不在一个方向上。
服务器dns地址怎么填:实操步骤拆解
系统不同,配置入口也不同,这里按最常见的几类系统给出具体路径,照着操作就不会出错。
Linux系统(CentOS / Ubuntu / Debian)
在CentOS 7及之前的版本,DNS配置文件是 /etc/resolv.conf,直接编辑这个文件即可:
vi /etc/resolv.conf
并保存:
nameserver 223.5.5.5
nameserver 114.114.114.114
在CentOS 8 / Rocky Linux / AlmaLinux以及较新版本的Ubuntu(18.04以后)中,推荐使用 systemd-resolved 或NetworkManager管理DNS配置,走编辑 /etc/resolv.conf 的“老路”可能会被系统重置覆盖,正确做法是使用 nmcli 命令:
nmcli con mod eth0 ipv4.dns "223.5.5.5 114.114.114.114" nmcli con up eth0
注意网卡名称替换为实际名称,可通过 ip addr 查看。
Windows Server系统
打开“网络和共享中心”,进入“更改适配器设置”,右键点击正在使用的网卡,选择“属性”,双击“Internet协议版本4(TCP/IPv4)”,在下方勾选“使用下面的DNS服务器地址”,填入首选和备用DNS即可。

如果只是临时改,也可以在命令行中执行:
netsh interface ip set dns "以太网" static 223.5.5.5
云服务器控制台里的DNS配置
简米云、酷番云、华为云的控制台里,VPC网络和DHCP设置中有DNS配置项,一般默认情况下,云服务商会自动分配内网DNS,这个值不要轻易修改,内网DNS负责解析云内部服务域名,比如RDS数据库连接地址、对象存储内网域名等,改成公共DNS反而会把这些内网域名解析成公网IP,导致连接超时。
修改完怎么立即生效
Linux下修改完 /etc/resolv.conf 是即时生效的,但应用层缓存不一定清空,建议执行:
systemctl restart systemd-resolved
Windows下更简单,禁用网卡再重新启用,或者执行 ipconfig /flushdns 清空DNS缓存。
公共DNS、运营商DNS、内网DNS怎么选
这是服务器dns设置里最让人纠结的部分,选哪个其实取决于服务器用途和网络环境。
| 类型 | 特点 | 适用场景 |
|---|---|---|
| 公共DNS(223.5.5.5、119.29.29.29、8.8.8.8) | 解析速度快,防污染能力强,但跨网访问存在偶尔延迟 | 面向公网提供服务的服务器,尤其是网站和API接口 |
| 运营商DNS(电信114、联通100.10等) | 自动获取的网络出口解析结果,但部分地区存在解析劫持风险 | 单纯访问外网,不做特定业务依赖 |
| 内网DNS(云厂商提供的10.x.x.x) | 解析云厂商内部服务域名,比如数据库、缓存、负载均衡 | 使用云托管数据库、对象存储、容器服务的服务器 |
| 自建DNS(如bind、dnsmasq) | 完全可控、可缓存、可自定义内网域名 | 中大型企业内网或需要精细解析控制的业务 |
选择的核心逻辑其实很简单:内网业务用内网DNS,对外服务用公共DNS兜底,局部区域加速或防解析污染优先公共DNS。很多运维人员犯的错误是把所有场景一刀切,统一填8.8.8.8,结果云数据库的连接串解析到了公网IP,白白增加了网络延迟。
服务器dns设置错误会怎么样:常见故障现象
DNS配错了,服务器通常不会彻底断网,因为IP直连仍然可用,但域名解析这一层会出乱子,以下几种故障现象很有代表性。
能ping通IP,但访问不了域名
这个最典型,服务器的网络是通的,但解析不到域名的IP地址,用 nslookup example.com 会返回 connection timed out 或者 server can't find example.com。
排查方法:换一个DNS地址再试一次,如果换了就好,说明原DNS地址本身有问题,或者该DNS被防火墙策略拦截了出口UDP 53端口。

同一台服务器上,有的域名能开、有的打不开
这是解析污染的典型表现,某些被DNS劫持或污染的域名在特定DNS服务器上返回了错误结果,但其他域名正常,此时把DNS换成加密DNS或改用DoH(DNS over HTTPS)解析可以规避。
内网域名解析到公网IP,连接全部超时
云服务器场景下,这种问题几乎都是因为改掉了云厂商分配的默认内网DNS,MySQL实例的连接地址、Redis的连接域名,在云厂商的体系内只有内网DNS才知道它们的真实内网IP,换成公网DNS后解析结果全是公网地址,端口又不一定开放,自然连接超时。
虚惊一场还是头大问题,取决于改了多久,这里推荐一个快速恢复办法:重启云服务器的网络服务,或者直接在控制台重置DHCP,让系统重新拉取默认DNS配置。
服务器更换dns多久生效取决于缓存TTL
这是一个连老运维都容易答错的点,DNS生效时间不取决于你什么时候改配置,而取决于解析记录的TTL(生存时间)。
当服务器向DNS服务器查询某个域名时,解析结果会被本地缓存一段时间,这个时间就是TTL,单位为秒,比如TTL是600秒,意味着最多10分钟之后,本地缓存过期才会发起新的查询,TTL是3600秒,那就是1小时。
修改服务器上的DNS后,已缓存的解析结果依然有效,直到缓存的记录过期,想立即验证新DNS是否生效,绕过缓存直接查询即可:
dig @223.5.5.5 example.com nslookup example.com 119.29.29.29
行业共识认为,线上服务器更运营商用DNS或公共DNS配置后,绝大多数情况下缓冲期不会超过15分钟,但域名解析记录本身的TTL在权威侧配置为更长时,则另当别论。
为什么改完DNS后,网站还是访问旧IP
这就是缓存叠加问题,服务器本地有缓存,中间还有路由器缓存,运营商DNS节点也有缓存,链条上的每一环都缓存了旧值,改完后不可能立即全链路刷新,这也是为什么很多运维人员改完域名解析记录后,习惯性把自己的电脑DNS临时改成8.8.8.8来验证,因为公共DNS刷新比较快。
验证服务器DNS是否配置正确的完整流程
配置完DNS地址后,别急着收工,按下面这套流程验证一遍,能省去后续很多麻烦。
- 输入
cat /etc/resolv.conf确认配置文件内容正确(Windows是ipconfig /all)。 - 执行
nslookup www.baidu.com,确认能正常解析出IP地址。 - 执行
dig www.baidu.com +time=5 +tries=2,确认响应时间在合理范围内。 - 用
traceroute或ping测一下解析出来的IP连通性,排除“能解析但网络不通”的情况。 - 检查云服务器控制台中的安全组,确认UDP 53端口出方向未被规则拦截。

服务器可以设置多个DNS地址吗
当然可以,但有个讲究,Linux系统 /etc/resolv.conf 中支持多个 nameserver 条目,查询时会按顺序发起请求,如果第一个超时,再尝试第二个,Windows系统的DNS设置里,也支持配置首选和备用DNS,默认情况下,系统会在第一个DNS完全无响应或超时时,切换到备用DNS,而不是根据解析结果内容做智能判断。
因此多个DNS的配置原则是:把最可信的放在第一位,兜底的放在第二位,不要同时配置两个污染严重的运营商DNS,否则解析结果的可靠性没什么保障。
内网环境下服务器dns设置怎么处理比较好
内网服务器集群有自己的一套玩法,业务上要解析内部服务域名,mysql.internal 或 redis.prod.svc,这类域名公网DNS根本不认识,只有内网DNS能返回结果。
搭建内网DNS常用方案是dnsmasq或CoreDNS,将内网域名解析指向私有IP段,同时把外部域名请求转发到公共DNS,服务器上的DNS地址填内网DNS的IP,外部解析由内网DNS代为转发,这样内外分离,运维也方便。
内网DNS主备两条,配置在服务器上时注意优先级,主DNS挂了,备DNS要能无缝接管,用 dig 指向备DNS手动测试解析,确认备端数据同步没有延迟,才能在故障切换时做到不慌。
关于服务器dns地址设置的常见问题
服务器dns地址填公共DNS会影响内网域名解析吗
会,如果服务器同时依赖云厂商的内网服务域名(如数据库连接串、对象存储地址),把DNS改为公共DNS会导致这些域名被解析成公网IP,访问失败或延迟变大,建议保持云厂商默认的DNS作为首选,必要时将公共DNS作为额外的备用条目,若必须使用公共DNS,请通过 /etc/hosts 手动指定内网服务域名到内网IP的映射关系。
修改服务器DNS会导致网站无法访问吗
取决于修改方向,如果将原本正常的内网DNS改为外部公共DNS,且网站依赖的对象存储、数据库等使用了内网域名,访问大概率会出问题,如果只是把自建DNS改为公共DNS,且不依赖内网服务域名,网站访问恢复正常甚至更稳定,修改前先确认全部依赖关系,再做变更,能避免绝大多数服务中断事故。
服务器dns解析超时和防火墙有关联吗
关联很大,DNS解析走UDP 53端口,部分公网DNS也支持TCP 53,服务器所在云厂商的安全组策略、本地iptables规则或firewalld配置中,如果放行设置了仅允许特定端口,默认的UDP 53可能被遗漏,可以用 iptables -L -n | grep 53 或直接临时关闭防火墙测试,确认是否防火墙拦截,若关闭后解析正常,则需在防火墙规则中加白UDP 53端口,并设置合理的超时时间。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/687066.html

