在Linux系统中配置DNS是确保网络连接正常的关键步骤,以下将详细介绍多种配置方法,涵盖主流发行版(如Ubuntu、CentOS、Debian等),并强调安全性和最佳实践,所有操作均需root权限(使用sudo
或切换root用户)。
- DNS作用:将域名(如
www.example.com
)解析为IP地址(如0.2.1
)。 - 配置文件:
/etc/resolv.conf
:传统DNS配置文件(可能被覆盖)。/etc/systemd/resolved.conf
:systemd系统的DNS配置。/etc/NetworkManager/NetworkManager.conf
:NetworkManager服务配置。/etc/netplan/*.yaml
:Ubuntu 18.04+的Netplan配置。
配置方法详解
方法1:临时修改(重启失效)
编辑/etc/resolv.conf
(适用于临时测试):
sudo nano /etc/resolv.conf
添加DNS服务器(例如Cloudflare和Google DNS):
nameserver 1.1.1.1 nameserver 8.8.8.8
注意:某些服务(如NetworkManager)会覆盖此文件,需结合以下永久配置。
方法2:永久配置(推荐)
1 使用NetworkManager(图形界面/命令行)
- 图形界面(Ubuntu/CentOS GNOME):
- 打开
设置
→网络
→ 选择连接 →IPv4/IPv6
。 - 关闭
自动获取DNS
,手动输入DNS地址(如1.1.1,8.8.8.8
)。
- 打开
- 命令行:
nmcli con mod "连接名" ipv4.dns "1.1.1.1 8.8.8.8" nmcli con up "连接名" # 应用配置
2 使用systemd-resolved(Ubuntu/Debian)
- 编辑配置文件:
sudo nano /etc/systemd/resolved.conf
- 取消注释并修改:
[Resolve] DNS=1.1.1.1 8.8.8.8 Domains=example.com
- 重启服务:
sudo systemctl restart systemd-resolved
- 验证状态:
systemd-resolve --status
3 使用Netplan(Ubuntu 18.04+)
- 编辑YAML文件(如
/etc/netplan/01-netcfg.yaml
):network: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.1.10/24] gateway4: 192.168.1.1 nameservers: addresses: [1.1.1.1, 8.8.8.8] search: [example.com]
- 应用配置:
sudo netplan apply
4 传统配置(Debian/CentOS)
- 文件路径:
/etc/network/interfaces
(Debian)或/etc/sysconfig/network-scripts/ifcfg-eth0
(CentOS 7)。 - 示例(Debian):
iface eth0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 1.1.1.1 8.8.8.8 dns-search example.com
- 重启网络服务:
sudo systemctl restart networking # Debian sudo systemctl restart network # CentOS 7
验证DNS配置
- 检查生效的DNS:
cat /etc/resolv.conf # 注意:可能被覆盖 systemd-resolve --status # systemd系统
- 测试解析:
nslookup google.com dig google.com +short ping -c 3 google.com
常见问题解决
- DNS被覆盖:若
/etc/resolv.conf
被重置,检查:- NetworkManager的
dns=none
选项(在/etc/NetworkManager/NetworkManager.conf
中)。 - 禁用
resolvconf
服务:sudo systemctl stop resolvconf.service
。
- NetworkManager的
- 解析缓慢:优化DNS顺序或更换公共DNS(如
1.1.1
比8.8.8
更快)。 - 安全建议:
- 使用加密DNS(DoH/DoT),如
cloudflare-dns.com
。 - 避免公共Wi-Fi中使用默认DNS(防劫持)。
- 使用加密DNS(DoH/DoT),如
最佳实践
- 主备DNS分离:配置至少两个DNS(如主用Cloudflare,备用Google)。
- 本地缓存加速:安装
dnsmasq
或systemd-resolved
提升解析速度。 - 企业环境:优先使用内部DNS服务器,保障域名解析安全。
引用说明基于Linux官方文档(kernel.org)、Ubuntu Manpage(manpages.ubuntu.com)及Cloudflare公共DNS指南(1.1.1),配置前请备份原始文件,操作需符合企业安全策略。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8449.html