温馨提示×

ubuntu dhclient能否自定义DNS

小樊
45
2026-10-25 06:21:28
栏目: 智能运维

可以,Ubuntu 里使用 dhclient 时是能够“自定义 DNS”的,但要看你是想 完全覆盖 DHCP 下发的 DNS,还是 在 DHCP DNS 基础上追加/修改。下面分情况说明。


一、dhclient 为什么会影响 DNS

dhclient 在获取 IP 的同时,通常也会从 DHCP Server 拿到:

  • DNS 服务器(domain-name-servers)
  • 搜索域(domain-search)

它会通过 dhclient-script 把这些写入 /etc/resolv.conf


二、方式一:完全忽略 DHCP 下发的 DNS(最常用 ✅)

1️⃣ 编辑 dhclient 配置

sudo vim /etc/dhcp/dhclient.conf

2️⃣ 添加或修改

supersede domain-name-servers 8.8.8.8, 1.1.1.1;
supersede domain-search "example.com";

含义:

  • supersede:覆盖 DHCP 下发的值
  • 多个 DNS 用逗号分隔

3️⃣ 重新获取地址

sudo dhclient -r
sudo dhclient

三、方式二:追加 DNS(而不是覆盖)

prepend domain-name-servers 8.8.8.8;

效果:

  • DHCP DNS 仍在
  • 你指定的 DNS 排在最前面

⚠️ 注意:不是所有环境都支持 prepend 生效(取决于 dhclient-script)


四、方式三:直接写死 /etc/resolv.conf(不推荐 ❌)

nameserver 8.8.8.8

问题:

  • dhclient 或 systemd-resolved 会覆盖它
  • 重启网络后失效

五、Ubuntu 特别注意(很重要 ⚠️)

Ubuntu 18.04+ 默认使用 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(不持久)

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • 是否用 netplan / NetworkManager
  • 是想 完全自定义 还是 只加一个 DNS

我可以给你一份 精确可用的配置。

0 踩