微信优化

weixinyouhua

Linux配置DNS地址怎么做?,DNS地址设置教程

2026-09-16 19:58:27

Linux配置DNS地址的核心操作就一句话:找到系统的DNS配置文件或网络管理工具,写入正确的nameserver地址,并确保重启后配置不被覆盖。

很多人在服务器上遇到域名解析失败,第一反应是网络断了,其实多数情况下只是DNS地址没配对,Linux系统没有统一图形界面,配置DNS需要分发行版、分工具来看,下面按实际使用频率拆解。

linux怎么设置dns地址:先找到配置文件

Linux里DNS配置最常见的入口是/etc/resolv.conf,这个文件直接决定系统向哪台DNS服务器发起查询,先用cat /etc/resolv.conf查看当前内容,正常会看到类似:

nameserver 223.5.5.5
nameserver 114.114.114.114

如果这个文件是空的,或者只有0.0.53,说明系统可能由systemd-resolved或NetworkManager接管了DNS。

临时修改:直接编辑resolv.conf

适合快速测试,重启后可能失效,用root权限编辑:

sudo vim /etc/resolv.conf

改成:

nameserver 223.5.5.5
nameserver 8.8.8.8

保存后执行ping www.baidu.com验证,如果解析恢复,说明问题就出在DNS地址上,但服务器重启后,很多发行版会重新生成这个文件,所以临时改完还得做永久配置。

永久修改:按工具区分

NetworkManager(CentOS、Rocky Linux、部分Ubuntu桌面版)

用nmcli命令最稳:

nmcli con mod eth0 ipv4.dns "223.5.5.5 114.114.114.114"
nmcli con up eth0

eth0要替换成实际网卡名,可通过nmcli con show查看,这种方法会同步写入resolv.conf,重启也保留。

systemd-resolved(Ubuntu Server 18.04+)

Ubuntu的/etc/resolv.conf通常是软链接,指向/run/systemd/resolve/stub-resolv.conf,直接编辑没有用,要改netplan配置:

sudo vim /etc/netplan/00-installer-config.yaml

在对应网卡下加入:

nameservers:
  addresses:
    - 223.5.5.5
    - 114.114.114.114

Linux配置DNS地址怎么做?,DNS地址设置教程

然后执行sudo netplan apply生效,这是Ubuntu上linux怎么设置dns地址的标准答案。

centos配置dns地址和ubuntu配置dns地址的区别

这两个系统是服务器市场主力,但DNS配置路径差异很大,新手容易搞混,下面用表格对比。

对比项 CentOS / Rocky Linux Ubuntu Server
主要工具 nmcli、网卡配置文件 netplan、systemd-resolved
配置文件路径 /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/netplan/.yaml
resolv.conf是否可编辑 可临时编辑,但NetworkManager可能覆盖 不可直接编辑,是软链接
永久配置命令 nmcli con mod ipv4.dns netplan + apply
验证命令 nmcli dev show eth0 resolvectl status

CentOS具体操作

CentOS 7和8都可以用nmcli,如果系统最小化安装没有NetworkManager,则需要编辑网卡文件:

sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0

加入或修改:

DNS1=223.5.5.5
DNS2=114.114.114.114

保存后重启网络:

sudo systemctl restart network

CentOS 8以上建议直接用nmcli,避免network.service与NetworkManager冲突。

Ubuntu具体操作

Ubuntu 20.04和22.04必须通过netplan,编辑配置文件后,用sudo netplan try可以先测试,没问题再正式应用,这比直接apply更安全,因为配置错误会导致断网,try会在超时后自动回滚。

docker容器linux配置dns地址的场景

容器环境下的DNS配置和宿主机不同,很多人在容器里发现/etc/resolv.conf被自动生成,手动改完重启容器又还原,这是docker容器linux配置dns地址时最典型的坑。

单容器指定DNS

docker run时用--dns参数:

docker run -d --dns 223.5.5.5 --dns 114.114.114.114 nginx

这样容器启动后,/etc/resolv.conf会自动写入这两个DNS地址,重启容器也会保留。

Linux配置DNS地址怎么做?,DNS地址设置教程

全局默认DNS

如果不想每个容器都手动指定,可以修改/etc/docker/daemon.json:

{
  "dns": ["223.5.5.5", "114.114.114.114"]
}

然后执行sudo systemctl restart docker重启服务,之后新建容器都会默认使用这些DNS,已经存在的容器需要重新创建才会生效。

docker-compose写法

在compose文件中给某个服务单独配置:

services:
  web:
    image: nginx
    dns:
      - 223.5.5.5
      - 114.114.114.114

这个场景常见于微服务架构中,不同服务走不同DNS解析策略,比如内网服务用内网DNS,公网服务用公共DNS。

国内服务器linux配置dns地址不生效排查

这是搜索量很高的实际问题,有些用户改了DNS,重启后还是原来的,或者解析仍然失败,排查顺序可以从下往上查。

第一步:确认resolv.conf是否被覆盖

执行:

cat /etc/resolv.conf

如果里面出现了不是你设置的地址,比如0.0.53,说明有别的服务在接管,常见的是systemd-resolved,可以用resolvectl status查看当前DNS。

第二步:检查NetworkManager是否关闭了自动获取

CentOS上如果网卡配置里同时存在BOOTPROTO=dhcp和手动DNS,可能出现冲突,把BOOTPROTO改为none或static,再指定DNS。

第三步:测试DNS服务器本身是否可用

用nslookup或dig直接指定DNS测试:

nslookup www.baidu.com 223.5.5.5

如果返回结果正常,说明DNS服务器没问题,是本地配置没生效;如果不正常,换一个DNS地址试试,114.114.114.114和223.5.5.5在国内机房连通性通常较好,但部分云服务器对UDP 53端口有内部限制,需要改用云平台提供的内部DNS。

第四步:查看系统日志

journalctl -u systemd-resolved -n 50

日志中如果有timeout或network unreachable,说明UDP 53端口不通,需要检查安全组或防火墙。

linux配置dns地址收费吗

修改Linux的DNS配置本身

Linux配置DNS地址怎么做?,DNS地址设置教程

不收费,无论你用哪个发行版,编辑配置文件、执行命令都不需要额外付费,DNS解析是否收费取决于你使用的DNS服务商。

  • 公共DNS:如114.114.114.114、阿里223.5.5.5、腾讯119.29.29.29,个人和中小企业免费使用。
  • 云平台内部DNS:简米云、酷番云的VPC内网DNS对云服务器免费,但跨地域解析或私有域名解析可能有少量费用。
  • 企业级DNS服务:如DNSPod企业版、简米云解析企业版,按套餐收费,价格从每年几百元到数千元不等。

行业共识认为,绝大多数Linux服务器直接使用公共DNS或云平台免费内网DNS即可满足需求,不需要额外购买付费DNS解析服务,只有在需要高防DNS、多线路智能解析、私有域名管理时才考虑付费方案。

Linux配置DNS地址的思路比命令更重要:先判断系统由谁管理网络,再选择对应的配置文件或工具,改完记得用nslookup或dig验证,不要只看配置没报错就认为成功了。

Q&A

linux配置dns地址后多久生效

临时修改/etc/resolv.conf立即生效,通过nmcli修改后,重启网络连接生效;通过netplan修改后执行netplan apply立即生效,如果你改的是网卡配置文件,需要重启网络服务,容器里修改daemon.json后,只有新建容器才会生效,旧容器需要重新创建。

linux配置dns地址和windows配置dns地址的区别

Windows在图形界面的网络适配器属性里直接填写DNS,或者用netsh命令修改,Linux没有统一界面,不同发行版配置文件路径不同,Windows修改后通常立即生效,Linux某些方法需要重启服务或重新加载配置,Windows下DNS设置跟随网卡,Linux下可能被多个服务同时管理,更容易出现配置被覆盖的情况。

linux配置dns地址不生效怎么检查

按顺序执行:查看/etc/resolv.conf内容是否为你设置的地址;执行systemd-resolve --status或resolvectl status查看实际生效的DNS;用nslookup www.baidu.com 223.5.5.5测试DNS服务器本身连通性;检查防火墙或云安全组是否放行UDP 53端口,多数情况下,不是DNS地址配错了,而是配置文件被系统服务重新生成覆盖了。

相关文章

2024年,SaaS软件行业碰到获客难、增长慢等问题吗?

我们努力让每一次邂逅总能超越期待