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 管理交换机,或者启用了 nvuednvue-startup 服务。

原因和解决方案

Cumulus Linux 5.9.1 及更高版本忽略 DHCP host-name 选项,因为 NVUE 管理 /etc/nvue.d/startup.yaml 文件中的主机名,并阻止 DHCP 覆盖它。 如果您不使用 NVUE 管理交换机,您可以按如下方式启用 DHCP 主机名

  1. 禁用并停止 nvuednvue-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
  1. 编辑 /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
  1. 使用 sudo reboot 命令重启交换机,或通过将接口关闭并重新启动来续订接口上的 DHCP 租约
cumulus@switch:~$ sudo ifdown eth0; sudo ifup eth0