为多个网络接口指定唯一的 DHCP 主机名

为多个网络接口指定唯一的 DHCP 主机名

我在我的家庭服务器上的 ESXi 下的虚拟机中运行 Ubuntu Server 20.04。我希望虚拟机有两个唯一的 IP 地址,目的是能够在 Docker 容器中运行两个单独的 PiHole 实例。

我在虚拟机上配置了两个网络适配器,然后将 /etc/netplan/00-installer-config.yaml 配置为:

network:
  ethernets:
    ens160:
      dhcp4: true
    ens192:
      dhcp4: true
  version: 2

运行后netplan apply,我有两个接口,每个接口都通过 DHCP 拥有自己的 IP。

# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.212  netmask 255.255.255.0  broadcast 10.0.0.255
...
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.213  netmask 255.255.255.0  broadcast 10.0.0.255
...

/etc/dhcp/dhclient.conf然后,我通过注释掉默认的“发送主机名”选项并将其替换为两个特定于接口的选项来进行编辑:

#send host-name = gethostname();
interface "ens160" {
    send host-name = "something-else-1";
}

interface "ens192" {
    send host-name = "something-else-2";
}

就是这一步好像不行。 DHCP 服务器 (Unifi) 仍将主机名报告为“实验性”。事实上,我尝试将现有gethostname()行更改为仅具有其他主机名,但即使这样似乎也不起作用。

我尝试改变/etc/hostname使用不同的东西,这确实有效。因此,似乎由于某种原因,中的选项/etc/dhcp/dhclient.conf被忽略了。

谁能告诉我我做错了什么?谢谢!

答案1

我认为问题在于每个接口都需要不同的 DHCP“状态机”。为此,您需要为每个客户端分配一个不同的客户端 ID,如下所示。

# send host-name = gethostname();
interface "enp2s0" {
    send dhcp-client-identifier "officemac";
    send host-name "officemac";
}
interface "enp2s0:0" {
    send dhcp-client-identifier "media";
    send host-name "media";
}

相关内容