DNS的作用与配置原理
DNS(域名系统)将域名(如 www.example.com
)转换为IP地址,Linux通过以下文件管理DNS:
/etc/resolv.conf
:存储DNS服务器地址(临时修改可能被覆盖)。/etc/systemd/resolved.conf
:systemd系统的永久配置。- 网络配置文件:如Netplan、NetworkManager的配置文件(永久生效)。
永久配置方法(重启后生效)
使用Netplan(Ubuntu 18.04+)
sudo nano /etc/netplan/01-netcfg.yaml
修改配置(示例使用Cloudflare DNS):
network: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [1.1.1.1, 1.0.0.1] # 设置DNS地址
应用配置:
sudo netplan apply
修改NetworkManager配置(CentOS/RHEL/Fedora)
sudo nmcli con mod "连接名" ipv4.dns "1.1.1.1 1.0.0.1" sudo nmcli con up "连接名" # 激活配置
手动编辑配置文件(传统方法)
-
Debian/Ubuntu:
编辑/etc/network/interfaces
:iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 1.1.1.1 1.0.0.1
重启网络:
sudo systemctl restart networking
-
CentOS 7:
编辑/etc/sysconfig/network-scripts/ifcfg-eth0
:DNS1=1.1.1.1 DNS2=1.0.0.1
重启服务:
sudo systemctl restart network
临时配置方法(重启失效)
直接修改 /etc/resolv.conf
sudo nano /etc/resolv.conf
添加:
nameserver 1.1.1.1 nameserver 8.8.8.8
⚠️ 注意:某些系统(如Ubuntu)重启后会被覆盖。
使用 resolvconf
工具(Debian系)
echo "nameserver 9.9.9.9" | sudo resolvconf -a eth0
使用systemd-resolved(现代Linux通用)
编辑配置文件:
sudo nano /etc/systemd/resolved.conf
取消注释并修改:
[Resolve] DNS=1.1.1.1 8.8.8.8 Domains=example.com
重启服务:
sudo systemctl restart systemd-resolved
验证DNS配置
- 检查当前DNS:
cat /etc/resolv.conf # 查看生效的DNS systemd-resolve --status # systemd系统专用
- 测试解析:
nslookup google.com dig +short example.com
常见问题解决
-
DNS被覆盖:
禁用覆盖机制(Ubuntu):sudo rm /etc/resolv.conf sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
-
网络重启失效:
确保使用永久配置方法(如Netplan或NetworkManager),而非直接修改resolv.conf
。 -
DNS响应慢:
更换公共DNS(推荐:Cloudflare1.1.1
、Google8.8.8
、Quad99.9.9
)。
安全建议
- 优先使用加密DNS:
在支持的工具(如systemd-resolved
)中配置DNS-over-TLS:[Resolve] DNS=1.1.1.1 DNSOverTLS=yes
- 防火墙放行DNS:
允许UDP/TCP端口53:sudo ufw allow 53/tcp sudo ufw allow 53/udp
- 临时测试:修改
/etc/resolv.conf
。 - 永久配置:
- Ubuntu 18.04+ → Netplan
- CentOS/RHEL → NetworkManager或
ifcfg
文件 - 通用方案 →
systemd-resolved
- 企业环境:建议部署本地DNS缓存(如
dnsmasq
)提升效率。
引用说明:本文内容参考Linux官方文档(kernel.org)、Ubuntu Manpage(manpages.ubuntu.com)及Cloudflare公共DNS文档(1.1.1),配置命令已在Ubuntu 22.04、CentOS 9及Debian 12实测验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8374.html