在 Ubuntu 中设置 DNS 有多种方法,具体取决于你的 Ubuntu 版本以及你使用的是桌面版还是服务器版,下面分几种常见情况说明。

桌面版用户:通过图形界面(设置 -> 网络 -> 手动 DNS)。
使用systemd-resolved(Ubuntu 18.04+ 默认):使用resolvectl 命令。
使用netplan(服务器版,特别是云镜像):修改/etc/netplan/*.yaml 文件。
传统方法:修改/etc/resolv.conf(注意可能被覆盖)。
1、 打开设置。

2、 进入网络。
3、 点击你当前使用的连接旁边的齿轮图标(有线或Wi-Fi)。
4、 切换到IPv4 或IPv6 选项卡。
5、 将DNS 改为自动(DHCP获取)或手动。
6、 如果选择手动,在DNS服务器 中输入 IP(例如114.114.114.114,8.8.8.8,多个用逗号或空格分隔)。

7、 点击应用,通常立即生效。
方法二:使用netplan(常见于 Ubuntu 18.04+ 服务器版)
很多云服务器或服务器安装使用netplan 管理网络。
1、 找到配置文件(通常命名为01-netcfg.yaml、50-cloud-init.yaml 等):
ls /etc/netplan/2、 用sudo 编辑,
sudo nano /etc/netplan/01-netcfg.yaml3、 在dhcp4: yes 或dhcp4: no 下,添加nameservers 部分,结构如下:
network:
version: 2
renderer: networkd
ethernets:
enp0s3: # 请替换为你的网卡名
dhcp4: true
nameservers:
addresses: [8.8.8.8, 114.114.114.114]4、 应用配置:
sudo netplan apply方法三:使用systemd-resolved(命令行,适用于所有 systemd 版本)
如果系统正在使用systemd-resolved(默认情况),推荐使用resolvectl 命令。
1、查看当前 DNS:
resolvectl status2、设置全局 DNS(对所有接口生效):
sudo resolvectl dns eth0 8.8.8.8 114.114.114.114 *(将eth0 替换为你的网卡名,如ens33、wlp2s0)
3、设置域名后缀(可选):
sudo resolvectl domain eth0 example.com4、验证:
resolvectl status永久生效:上面的命令重启后可能会丢失,如果你希望永久生效,可以修改/etc/systemd/resolved.conf 文件:
sudo nano /etc/systemd/resolved.conf
取消注释并修改:
[Resolve] DNS=8.8.8.8 114.114.114.114 FallbackDNS=1.1.1.1
保存后重启服务:
sudo systemctl restart systemd-resolved
方法四:修改/etc/resolv.conf(传统,但可能被覆盖)
这是最直接的方法,但新版 Ubuntu 里/etc/resolv.conf 通常是一个符号链接,会被其他服务覆盖。
1、 直接编辑:
sudo nano /etc/resolv.conf2、 写入如下内容:
nameserver 8.8.8.8
nameserver 114.114.114.1143、 保存,立即生效。
⚠️ 警告:这个方法在大多数现代 Ubuntu 上重启后或网络重连后会失效,因为systemd-resolved 或NetworkManager 会覆盖该文件,通常不推荐直接修改,除非你确保没有其他工具接管。
方法五:使用nmcli(如果使用 NetworkManager)
1、 查看连接名称:
nmcli con show2、 修改连接的 IPv4 DNS:
sudo nmcli con modify "连接名称" ipv4.dns "8.8.8.8 114.114.114.114"
sudo nmcli con modify "连接名称" ipv4.ignore-auto-dns yes3、 重启连接:
sudo nmcli con down "连接名称" && sudo nmcli con up "连接名称"无论用哪种方法,设置后都可以通过以下命令检查:
查看 resolv.conf 内容 cat /etc/resolv.conf 测试 DNS 解析 nslookup baidu.com 或 dig baidu.com 检查是否使用指定的 DNS 服务器 dig @8.8.8.8 baidu.com
总结建议:
- 如果你是桌面版 -> 用图形界面最省心。
- 如果你是服务器版 -> 先用resolvectl 临时设置,再用resolved.conf 永久保存。
- 如果你在用云服务器或netplan -> 修改 yaml 文件并apply。
文章摘自:https://idc.huochengrm.cn/dns/26278.html
评论