Linux中DNS解析优先级为:/etc/hosts → 本地缓存 → /etc/resolv.conf指定的DNS服务器;/etc/resolv.conf可能被NetworkManager或systemd-resolved动态管理,直接编辑常无效,应通过对应工具配置,且需用getent hosts等命令验证真实解析路径。

Linux基础运维中,网络配置、IP地址修改和DNS解析设置是日常高频操作。掌握这些能力,能快速定位连通性问题、修复域名无法访问、应对DHCP环境变更等场景。关键不在于死记命令,而在于理解配置层级与生效逻辑——尤其是/etc/resolv.conf常被服务动态接管,直接编辑往往无效。
IP地址与网络接口配置
临时修改IP适用于调试或应急,永久配置则需匹配发行版默认网络管理工具:
- 临时设置(重启失效):
sudo ip addr add 192.168.1.100/24 dev eth0 && sudo ip link set eth0 up - Ubuntu 18.04+(Netplan):编辑
/etc/netplan/01-network-manager-all.yaml,指定addresses、gateway4和nameservers,再运行sudo netplan apply - RHEL/CentOS(NetworkManager):用
nmcli修改连接,如sudo nmcli connection modify "System eth0" ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual,然后重载连接 - 注意:手动改
/etc/sysconfig/network-scripts/ifcfg-eth0(RHEL系)或/etc/network/interfaces(Debian旧版)前,先确认系统未启用Netplan或NetworkManager,否则会冲突
resolv.conf 的作用与常见陷阱
/etc/resolv.conf不是“写进去就生效”的静态文件,而是glibc解析器读取的最终配置入口。它可能指向:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
/run/systemd/resolve/stub-resolv.conf(systemd-resolved启用时) -
/var/run/NetworkManager/resolv.conf(NetworkManager管理时) - 或本身就是普通文件(静态配置模式)
执行ls -l /etc/resolv.conf可立刻判断类型。若为软链接,直接编辑该文件无效;若为普通文件,仍需确认是否被dhclient、cloud-init等进程在下次获取DHCP时覆盖。
DNS服务器地址的可靠配置方法
按优先级推荐以下三种方式,兼顾兼容性与持久性:
-
首选:通过NetworkManager设置(桌面/云服务器通用)
用nmcli connection modify "Wired connection 1" ipv4.dns "223.5.5.5 114.114.114.114" ipv4.ignore-auto-dns yes,再down && up连接。此法自动更新/etc/resolv.conf,且不受DHCP干扰 -
次选:停用systemd-resolved后静态写入
执行sudo systemctl disable --now systemd-resolved→sudo rm /etc/resolv.conf→echo -e "nameserver 223.5.5.5\nnameserver 1.1.1.1" | sudo tee /etc/resolv.conf。适合需要完全掌控DNS路径的服务器环境 -
轻量替代:用dnsmasq本地转发
安装后配置上游DNS,并设resolv.conf只指向127.0.0.1。既避免端口冲突,又支持缓存与自定义规则,适合开发或边缘设备
验证DNS是否真正生效
别只信nslookup或dig——它们可能绕过系统resolver机制。更准确的方式是:
- 查当前实际使用的配置:
cat /etc/resolv.conf+systemd-resolve --status(若启用resolved) - 绕过所有缓存直调glibc:
getent hosts google.com。返回IP即表示系统级DNS链路通畅 - 检查nsswitch行为:
grep "^hosts:" /etc/nsswitch.conf,确保含dns且顺序合理(如files dns) - 测试搜索域功能:
ping -c1 web(假设search example.com),看是否尝试解析web.example.com

















