为什么 dhcpd 不监听虚拟接口

为什么 dhcpd 不监听虚拟接口

我想我可能会错过一些简单的东西,但我现在需要更多的关注来解决这个问题。我需要 2 个独立的网络位于同一个 NIC 上(以太网1):192.168.0.0/24192.168.1.0/24。接口是:

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.250  netmask 255.255.255.0  broadcast 192.168.1.255
    ether 0c:c4:7a:7d:bb:f8  txqueuelen 1000  (Ethernet)
    RX packets 24515  bytes 5405247 (5.1 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 31116  bytes 3036051 (2.8 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device interrupt 16  memory 0xdf200000-df220000  

eth1:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.0.250  netmask 255.255.255.0  broadcast 192.168.0.255
    ether 0c:c4:7a:7d:bb:f8  txqueuelen 1000  (Ethernet)
    device interrupt 16  memory 0xdf200000-df220000  

/etc/sysconfig/dhcpd我有

DHCPD_INTERFACE="eth1 eth1:1"
DHCPDARGS="eth1 eth1:1"

/etc/dhcpd.conf我有

subnet 192.168.0.0 netmask 255.255.255.0 {
    pool {
       ....
    }
}
subnet 192.168.1.0 netmask 255.255.255.0 {
    pool {
        ....
    }
}

然而,当我启动 dhcpd 时,我看到了这个

$ sudo journalctl -xeu dhcpd.service
  ....
dhcpd[5113]: No subnet declaration for eth1:1 (no IPv4 addresses).
dhcpd[5113]: ** Ignoring requests on eth1:1.  If this is not what
dhcpd[5113]:    you want, please write a subnet declaration
dhcpd[5113]:    in your dhcpd.conf file for the network segment
dhcpd[5113]:    to which interface eth1:1 is attached. **
  ....

为什么?

答案1

网络接口名称eth1:1不指定单独的接口,甚至不指定虚拟接口。eth1:1只是eth1因为愚蠢而存在的接口的别名ifconfig(并且不应使用,如上面的注释中所述。)

您应该使用一个shared-network声明来eth1包含这两个subnet声明。两个子网的 IP 地址也应分配给eth1。顺便说一句,您可以在地址中添加标签以实现与 的兼容性ifconfig,例如

 ip addr add 192.168.1.250/24 label eth1:1 dev eth1

仍然存在一个问题:客户端的请求通过一根线路传入,每个请求都包含客户端的 MAC 地址和 0.0.0.0 作为源 IP 地址。如果要分发动态 IP 地址,DHCP 服务器不知道应该从哪个子网为客户端分配 IP 地址。该shared-network设置适用于两个或多个子网组合在一个地址池中的情况,并不适合具有不同角色的子网。

相关内容