ISC DHCP服务器在虚拟接口上侦听

我有一个ISC DHCP服务器4.2.2(Debian Wheezy)的工作。 我需要为未知的客户端添加第二个作用域,这给他们一个伪造的地址(主要用于疑难解答的目的)。 但是,我没有尝试似乎工作。 下面的截断dhcpd4.conf文件与下面的新子网声明。

subnet 10.111.111.0 netmask 255.255.255.0 { range 10.111.111.5 10.111.111.250; allow unknown-clients; } subnet 192.168.XXX.0 netmask 255.255.255.0 { range 192.168.XXX.194 192.168.XXX.200; range 192.168.XXX.100 192.168.XXX.109; range 192.168.XXX.215 192.168.XXX.250; ignore unknown-clients; option routers 192.168.XXX.XXX; <lots more options> } 

我知道DHCP服务器将忽略10.111.111.0子网,如果它没有与该子网上的IP接口,所以我第一次尝试了一个虚拟的。 在/ etc / network / interfaces中,我添加了:

 up ip addr add 10.111.111.1/24 dev eth0 label eth0:1 

然后把界面拉上来。 ifconfig确认它已经启动了。 然后我把eth0:1添加到/ etc / default / isc-dhcp-server:

 INTERFACES="eth0 eth0:1" 

然后,我重新启动了DHCP服务器,但只得到以下内容:

 ...WARNING: Host declarations are global. They are not limited to the scope you declared them in. Wrote 0 deleted host decls to leases file. Wrote 0 new dynamic host decls to leases file. Wrote 53 leases to leases file. Listening on LPF/eth0/00:50:XX:XX:XX:71/192.168.220.0/24 Sending on LPF/eth0/00:50:XX:XX:XX:71/192.168.220.0/24 Sending on Socket/fallback/fallback-net 

监听192.168.220.0,但不监听10.111.111.0。 然后我尝试了一个更明确的命令行:

 /usr/sbin/dhcpd -cf /etc/dhcp/dhcpd4.conf eth0:1 

但那只是让我一个

 No subnet declaration for eth0:1 (no IPv4 addresses). ** Ignoring requests on eth0:1. If this is not what you want, please write a subnet declaration in your dhcpd.conf file for the network segment to which interface eth0:1 is attached. ** 

在互联网上search,我发现一个线程( 别名networking接口和isc dhcp服务器 ),Zoredache的答案让我尝试没有虚拟接口。 我已经设置和IP地址显示界面是存在的(但ifconfig不 – 我应该担心?)。

 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:XX:XX:XX:71 brd ff:ff:ff:ff:ff:ff inet 192.168.XXX.XXX/24 brd 192.168.220.255 scope global eth0 inet 10.111.111.1/24 scope global eth0 inet 192.168.XXX.XXX/24 scope global secondary eth0:0 

但是,在重新启动DHCP服务器时,我不会收听10.111.111.1消息,只是侦听192.168.XXX.XXX。

任何想法我做错了什么?

好的,我明白了。 如果您有多个IP地址分配给同一个接口,则所有子网声明必须组合到另一个声明中。 例如,Linux机器在eth0上有192.168.1.1和10.10.10.1(都是/ 24)IP。 那么一个简单的范围将是:

 shared-network mynet { subnet 10.10.10.0 netmask 255.255.255.0 { range 10.10.10.5 10.10.10.250; allow unknown-clients; } subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.194 192.168.1.200; ignore unknown-clients; } } 

共享networking{}必须位于子网声明的两边。 然后当你启动DHCP服务器,它会说在mynet上而不是一个IP地址。