可以,Ubuntu 里使用 dhclient 时是能够“自定义 DNS”的,但要看你是想 完全覆盖 DHCP 下发的 DNS,还是 在 DHCP DNS 基础上追加/修改。下面分情况说明。
dhclient 在获取 IP 的同时,通常也会从 DHCP Server 拿到:
它会通过 dhclient-script 把这些写入 /etc/resolv.conf
sudo vim /etc/dhcp/dhclient.conf
supersede domain-name-servers 8.8.8.8, 1.1.1.1;
supersede domain-search "example.com";
含义:
supersede:覆盖 DHCP 下发的值sudo dhclient -r
sudo dhclient
prepend domain-name-servers 8.8.8.8;
效果:
⚠️ 注意:不是所有环境都支持
prepend生效(取决于 dhclient-script)
nameserver 8.8.8.8
问题:
dhclient 或 systemd-resolved 会覆盖它即使你改了 dhclient.conf:
/etc/resolv.conf → 指向 systemd-resolved
使用 netplan
sudo vim /etc/netplan/01-netcfg.yaml
示例:
network:
version: 2
ethernets:
eth0:
dhcp4: true
dhcp4-overrides:
use-dns: false
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
应用:
sudo netplan apply
✅ 这是 最稳定、官方推荐的方式
| 需求 | 推荐方式 |
|---|---|
| 覆盖 DHCP DNS | dhclient.conf + supersede |
| Ubuntu 18.04+ | netplan |
| 临时测试 | 改 resolv.conf(不持久) |
如果你愿意,可以告诉我:
我可以给你一份 精确可用的配置。