Cumulus Linux 上主机名 DHCP 选项被忽略
问题
如果启用了 NVUE 的 Cumulus Linux 交换机运行 5.9.1 或更高版本,收到包含 host-name
选项的 DHCP 租约时,它会忽略收到的主机名并且不应用它。
环境
- Cumulus Linux 5.9.1 及更高版本。
- 包含
host-name
选项的活动 DHCP 租约缓存在/var/lib/dhcp/dhclient.eth0.leases
中,和/或 DHCP 服务器提供包含host-name
选项的租约。 - 您使用 NVUE 管理交换机,或者启用了
nvued
和nvue-startup
服务。
原因和解决方案
Cumulus Linux 5.9.1 及更高版本忽略 DHCP host-name
选项,因为 NVUE 管理 /etc/nvue.d/startup.yaml
文件中的主机名,并阻止 DHCP 覆盖它。 如果您不使用 NVUE 管理交换机,您可以按如下方式启用 DHCP 主机名
- 禁用并停止
nvued
和nvue-startup
服务
cumulus@switch:~$ sudo systemctl stop nvued.service
cumulus@switch:~$ sudo systemctl stop nvue-startup.service
cumulus@switch:~$ sudo systemctl disable nvued.service
cumulus@switch:~$ sudo systemctl disable nvue-startup.service
- 编辑
/etc/dhcp/dhclient-exit-hooks.d/dhcp-sethostname
文件并将SETHOSTNAME
变量更改为yes
cumulus@switch:~$ sudo nano /etc/dhcp/dhclient-exit-hooks.d/dhcp-sethostname
...
SETHOSTNAME="yes"
if [ $SETHOSTNAME = "yes" ] && [ ! -z $new_host_name ]
then
hostname $new_host_name
sed --in-place -e "/127\.0\.1\.1/s/^.*$/127.0.1.1 $new_host_name/" /etc/hosts
fi
- 使用
sudo reboot
命令重启交换机,或通过将接口关闭并重新启动来续订接口上的 DHCP 租约
cumulus@switch:~$ sudo ifdown eth0; sudo ifup eth0