温馨提示×

linux dhclient能改dns吗

小樊
51
2026-10-18 23:58:22
栏目: 智能运维

简短结论:可以,dhclient 本身会“设置/更新”DNS,但它通常不是“手动改 DNS”的最佳工具;想固定 DNS 一般要改配置文件或用其他手段。

下面分情况说明:


1. dhclient 会改 DNS(自动)

当 dhclient 从 DHCP 服务器获取地址时,它通常也会:

  • 获取 DNS 服务器(option domain-name-servers)
  • 获取搜索域(option domain-search / domain-name)
  • 然后写入 /etc/resolv.conf

例如 DHCP 下发:

DNS: 8.8.8.8

dhclient 可能会把 /etc/resolv.conf 改成:

nameserver 8.8.8.8

所以:dhclient 是“根据 DHCP 改 DNS”,不是你随便指定 DNS 的命令


2. 能不能用 dhclient “手动改 DNS”?

不推荐 / 不方便

dhclient 没有类似:

dhclient --dns 8.8.8.8

这种参数。

你只能通过 DHCP 选项或配置文件 影响它。


3. 常见“改 DNS”的正确方式

方式一:直接改 /etc/resolv.conf(临时)

nameserver 8.8.8.8
nameserver 1.1.1.1

⚠ 问题:

  • 如果用了 dhclient / NetworkManager,重启网络可能被覆盖

方式二:在 dhclient 配置里“追加/覆盖 DNS”

文件:/etc/dhcp/dhclient.conf

示例(强制使用指定 DNS):

supersede domain-name-servers 8.8.8.8, 1.1.1.1;

然后重启:

systemctl restart networking
# 或
dhclient -r
dhclient

✅ 这样 dhclient 会忽略 DHCP 给的 DNS


方式三:用 NetworkManager(现代系统推荐)

nmcli con mod eth0 ipv4.dns "8.8.8.8 1.1.1.1"
nmcli con mod eth0 ipv4.ignore-auto-dns yes
nmcli con up eth0

方式四:systemd-resolved

/etc/systemd/resolved.conf
DNS=8.8.8.8

4. 总结

  • ✅ dhclient 能改 DNS(通过 DHCP 或配置)
  • ❌ 不适合“手动随便改”
  • ✅ 固定 DNS 推荐:
    • dhclient.conf 的 supersede
    • NetworkManager
    • systemd-resolved

如果你告诉我:

  • 发行版(CentOS / Ubuntu / Debian)
  • 是否用 NetworkManager
  • 想“临时”还是“永久”

我可以给你精确命令。

0 踩