在 Linux 中设置 DHCP 的 DNS,取决于你是作为 DHCP 客户端还是作为 DHCP 服务器。下面分别说明常见场景。
NetworkManager 默认会从 DHCP 获取 DNS,并写入 /etc/resolv.conf。
查看 DNS:
cat /etc/resolv.conf
手动刷新 DHCP 并获取 DNS:
nmcli device reapply eth0
# 或
nmcli connection down eth0 && nmcli connection up eth0
配置文件示例(DHCP 自动 DNS):
# /etc/systemd/network/20-wired.network
[Match]
Name=eth0
[Network]
DHCP=yes
重启服务:
systemctl restart systemd-networkd
dhclient -r eth0
dhclient eth0
isc-dhcp-server(最常见)apt install isc-dhcp-server # Debian/Ubuntu
yum install dhcp # CentOS 7
vim /etc/dhcp/dhcpd.conf
示例:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "example.local";
}
systemctl restart isc-dhcp-server
✅ 客户端通过 DHCP 会自动获得 8.8.8.8 和 8.8.4.4 作为 DNS。
apt install dnsmasq
# /etc/dnsmasq.conf
interface=eth0
dhcp-range=192.168.1.100,192.168.1.200,12h
dhcp-option=6,8.8.8.8,8.8.4.4
systemctl restart dnsmasq
/etc/resolv.conf 被覆盖?通常是 NetworkManager 或 systemd-resolved 自动管理。
查看:
ls -l /etc/resolv.conf
如需固定 DNS(不推荐与 DHCP 混用):
chattr +i /etc/resolv.conf
/etc/netplan/*.yaml 覆盖(Ubuntu)| 场景 | 设置位置 |
|---|---|
| Linux 作为 DHCP 客户端 | 自动获取 |
| Linux 作为 DHCP 服务器 | dhcpd.conf / dnsmasq.conf |
| 指定 DNS | option domain-name-servers |
如果你能说明:
我可以给你精确到命令级别的配置示例。