在Ubuntu系统中,DNS(域名系统)配置是网络连接的重要组成部分,它负责将人类可读的域名(如www.example.com)转换为机器可识别的IP地址,正确的DNS配置不仅能确保网络访问的稳定性,还能提升解析速度,甚至通过安全DNS服务增强安全性,以下是关于Ubuntu系统DNS配置的详细说明。
DNS配置文件位置
Ubuntu系统的DNS配置主要涉及以下几个文件:
- /etc/resolv.conf:核心DNS解析配置文件,记录了系统使用的DNS服务器地址,该文件通常由网络管理器自动生成,不建议手动编辑,除非有特殊需求且了解其影响。
- /etc/netplan/:Ubuntu 18.04及以后版本使用的网络配置工具,通过YAML文件定义网络接口和DNS设置,配置文件通常命名为
01-netcfg.yaml
或类似名称。 - /etc/systemd/resolved.conf:systemd-resolved服务的配置文件,用于管理本地DNS缓存和解析。
- NetworkManager配置:如果使用NetworkManager管理网络(如桌面版Ubuntu),可通过
/etc/NetworkManager/NetworkManager.conf
或连接特定的配置文件(如/etc/NetworkSystemd resolved服务会自动管理
/etc/resolv.conf,创建一个指向
/run/systemd/resolve/stub-resolv.conf`的符号链接,后者包含实际的DNS配置。
DNS配置方法
通过Netplan配置(适用于Ubuntu 18.04+)
Netplan通过YAML文件配置网络,以下是示例配置:
network: version: 2 ethernets: enp0s3: # 网络接口名称 dhcp4: no addresses: [192.168.1.100/24] # 静态IP地址 gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] # Google DNS search: [example.com] # 可选的域名后缀
配置完成后,运行以下命令生效:
sudo netplan apply
通过NetworkManager配置(适用于桌面版)
- 图形界面:进入“设置”>“网络”,选择当前连接的网卡,点击“齿轮”图标,在“IPv4”或“IPv6”选项卡中,将“DNS服务器”设置为手动,输入DNS地址(如1.1.1.1、223.5.5.5)。
- 命令行:使用
nm-connection-editor
编辑连接,或通过以下命令直接修改:sudo nmcli con mod "连接名称" ipv4.dns "8.8.8.8,223.5.5.5" sudo nmcli con mod "连接名称" ipv4.ignore-auto-dns yes sudo nmcli con up "连接名称"
临时修改DNS(不推荐)
直接编辑/etc/resolv.conf
:
sudo nano /etc/resolv.conf ```重启后可能失效):
nameserver 8.8.8.8 nameserver 223.5.5.5
#### 4. 使用systemd-resolved管理DNS
启用systemd-resolved服务并配置:
```bash
sudo systemctl enable --now systemd-resolved
编辑/etc/systemd/resolved.conf
,修改以下行:
DNS=8.8.8.8 223.5.5.5
Domains=example.com
重启服务后,可通过systemd-resolve --status
查看DNS状态。
DNS配置验证
- 检查当前DNS配置:
cat /etc/resolv.conf
- 测试域名解析:
nslookup www.baidu.com dig example.com
- 检查DNS缓存(若使用systemd-resolved):
systemd-resolve --statistics
常见DNS问题排查
- 域名解析失败:检查
/etc/resolv.conf
中的DNS地址是否正确,或尝试更换公共DNS(如Cloudflare 1.1.1.1)。 - DNS缓存问题:清除缓存(
sudo systemd-resolve --flush-caches
)或重启systemd-resolved
服务。 - 网络管理器冲突:确保Netplan和NetworkManager不会同时管理同一网络接口。
相关问答FAQs
Q1: Ubuntu系统中如何设置自定义DNS并确保重启后生效?
A1: 对于Ubuntu 18.04及以上版本,推荐使用Netplan或NetworkManager配置,以Netplan为例,在/etc/netplan/
目录下的YAML文件中添加nameservers
字段(如addresses: [1.1.1.1, 8.8.8.8]
),然后运行sudo netplan apply
,对于桌面版,可通过NetworkManager图形界面或nmcli
命令设置,并确保取消“自动DNS”选项,直接编辑/etc/resolv.conf
的方式在重启后可能被覆盖,不推荐使用。
Q2: 如何在Ubuntu中启用DNS-over-HTTPS(DoH)以提高安全性?
A2: Ubuntu 20.04及以上版本可通过systemd-resolved
支持DoH,首先安装必要的工具:sudo apt install network-manager-dnscrypt-proxy
,然后编辑/etc/systemd/resolved.conf
,添加以下行:DNSOverTLS=opportunistic
,接着在NetworkManager中配置DNS,选择“自动DNS”或手动指定支持DoH的DNS服务器(如Cloudflare 1.1.1.3),最后重启服务:sudo systemctl restart systemd-resolved NetworkManager
,验证可通过curl https://1.1.1.1
测试连接是否正常。