在 Debian 系统中,DHCP 客户端(通常是 dhclient 或 NetworkManager)会自动从 DHCP 服务器获取 DNS 配置。但如果你需要手动指定 DNS(例如覆盖 DHCP 分配的 DNS),可以通过以下几种方式实现:
/etc/dhcp/dhclient.conf(推荐方式)这是最标准、最干净的方式,适用于使用 dhclient 的系统。
sudo nano /etc/dhcp/dhclient.conf
prepend domain-name-serversprepend domain-name-servers 8.8.8.8, 8.8.4.4;
示例(国内常用):
prepend domain-name-servers 223.5.5.5, 114.114.114.114;
sudo dhclient -r
sudo dhclient
cat /etc/resolv.conf
/etc/resolv.conf有时 DHCP 会自动覆盖 /etc/resolv.conf,你可以锁定它。
chattr(简单粗暴)sudo chattr +i /etc/resolv.conf
取消锁定:
sudo chattr -i /etc/resolv.conf
⚠️ 不推荐长期使用,可能影响网络管理工具。
resolv.conf 的静态配置(systemd-resolved 未启用时)sudo nano /etc/resolv.conf
内容示例:
nameserver 8.8.8.8
nameserver 8.8.4.4
sudo nano /etc/dhcp/dhclient.conf
添加:
supersede domain-name-servers 8.8.8.8, 8.8.4.4;
nmcli connection show
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
编辑网络配置:
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 |
如果你愿意,可以告诉我:
我可以给你最合适的一套配置方案。