Centos

為什麼 dhcpd 不監聽虛擬介面

  • January 14, 2018

我想我可能遺漏了一些簡單的東西,但我現在需要對這個問題多加註意。我需要 2 個單獨的網路位於同一個 NIC(eth1)上: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. **
 ....

為什麼?

像這樣的網路介面名稱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設置適用於兩個或多個子網組合在一個地址池中的情況,實際上不適合具有不同角色的子網。

引用自:https://unix.stackexchange.com/questions/416407