在 Linux 中使用 dhclient
设置域名(DNS 和域名搜索路径)可以通过以下方法实现:
编辑 /etc/dhcp/dhclient.conf
文件(路径可能因发行版略有不同):
sudo nano /etc/dhcp/dhclient.conf
添加或修改以下配置:
# 设置主 DNS 服务器
supersede domain-name-servers 8.8.8.8, 8.8.4.4;
# 设置域名搜索路径(多个域名用空格分隔)
supersede domain-search "example.com", "internal.example.com";
# 强制设置主机名(可选)
supersede host-name "your-hostname";
supersede
表示覆盖 DHCP 服务器提供的值。prepend
或 append
。重启网络服务或 dhclient:
sudo systemctl restart networking # 适用于 Debian/Ubuntu
sudo systemctl restart NetworkManager # 适用于 RHEL/CentOS
或手动释放并重新获取 IP:
sudo dhclient -r eth0 # 释放
sudo dhclient eth0 # 重新获取(网卡名根据实际情况替换)
在运行 dhclient
时直接指定参数:
sudo dhclient -r eth0 && sudo dhclient eth0 -sf /usr/sbin/dhclient-script -d -v \
-H "your-hostname" \
-S "domain-name-servers=8.8.8.8, domain-search=example.com"
-H
:设置主机名。-S
:动态覆盖 DHCP 选项(需符合 DHCP 协议格式)。/etc/resolv.conf
(临时生效)如果 DHCP 未正确配置域名,可直接编辑 /etc/resolv.conf
:
sudo nano /etc/resolv.conf
添加以下内容(注意:重启后可能被 DHCP 覆盖):
search example.com internal.example.com
nameserver 8.8.8.8
nameserver 8.8.4.4
检查 DNS 和搜索域:
cat /etc/resolv.conf
测试域名解析:
nslookup example.com
ping -c 2 example.com
持久化问题:
netplan
或 systemd-resolved
)会覆盖 /etc/resolv.conf
,需通过对应工具配置(例如 netplan
的 YAML 文件)。网络管理器冲突:
NetworkManager
,建议通过 nmcli
或 GUI 工具配置域名:
bash
nmcli con mod eth0 ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con mod eth0 ipv4.dns-search "example.com"
nmcli con up eth0
DHCP 租约文件:
bash
cat /var/lib/dhcp/dhclient.leases
通过以上方法,您可以灵活控制 Linux 系统中通过 dhclient
设置的域名和 DNS 配置。