温馨提示×

Debian DHCP如何设置DNS

小樊
57
2026-07-02 07:08:11
栏目: 智能运维

在 Debian 系统中,DHCP 客户端(通常是 dhclientNetworkManager)会自动从 DHCP 服务器获取 DNS 配置。但如果你需要手动指定 DNS(例如覆盖 DHCP 分配的 DNS),可以通过以下几种方式实现:


一、使用 /etc/dhcp/dhclient.conf(推荐方式)

这是最标准、最干净的方式,适用于使用 dhclient 的系统。

1. 编辑 dhclient 配置

sudo nano /etc/dhcp/dhclient.conf

2. 添加或修改 prepend domain-name-servers

prepend domain-name-servers 8.8.8.8, 8.8.4.4;

示例(国内常用):

prepend domain-name-servers 223.5.5.5, 114.114.114.114;

3. 重新获取 IP

sudo dhclient -r
sudo dhclient

4. 验证 DNS

cat /etc/resolv.conf

二、防止 DHCP 修改 /etc/resolv.conf

有时 DHCP 会自动覆盖 /etc/resolv.conf,你可以锁定它。

方法 1:使用 chattr(简单粗暴)

sudo chattr +i /etc/resolv.conf

取消锁定:

sudo chattr -i /etc/resolv.conf

⚠️ 不推荐长期使用,可能影响网络管理工具。


三、使用 resolv.conf 的静态配置(systemd-resolved 未启用时)

1. 手动编辑

sudo nano /etc/resolv.conf

内容示例:

nameserver 8.8.8.8
nameserver 8.8.4.4

2. 防止 DHCP 覆盖(Debian 11+)

sudo nano /etc/dhcp/dhclient.conf

添加:

supersede domain-name-servers 8.8.8.8, 8.8.4.4;

四、使用 NetworkManager(桌面或服务器常见)

查看连接名

nmcli connection show

设置 DNS

nmcli connection modify eth0 ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection modify eth0 ipv4.ignore-auto-dns yes

重新激活

nmcli connection down eth0
nmcli connection up eth0

五、使用 systemd-networkd(服务器常用)

编辑网络配置:

sudo nano /etc/systemd/network/20-wired.network

示例:

[Match]
Name=eth0

[Network]
DHCP=yes
DNS=8.8.8.8
DNS=8.8.4.4

重启服务:

sudo systemctl restart systemd-networkd

六、推荐方案总结

场景 推荐方式
纯 DHCP + 自定义 DNS /etc/dhcp/dhclient.conf
桌面环境 NetworkManager
无 GUI 服务器 systemd-networkd
临时测试 直接改 /etc/resolv.conf

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

  • Debian 版本(10 / 11 / 12)
  • 使用 DHCP 还是静态 IP
  • 是服务器还是桌面环境

我可以给你最合适的一套配置方案

0