I am trying to set up a dhcp server (isc dhcpd on debian 8 (vm inside an esxi environment)) with 4 network interfaces, eth0-3. The dhcp server should serve a different subnet on the interfaces eth1, eth2, eth3. Each subnet has its own vSwitch (vSphere) and the dhcp server is connected to each vSwitch.
The network interface setup looks like this:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
auto eth1
iface eth1 inet static
address 10.0.0.1
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
auto eth2
iface eth2 inet static
address 172.16.0.1
netmask 255.255.255.0
network 172.16.0.0
broadcast 172.16.0.255
auto eth3
iface eth3 inet static
address 10.0.1.1
netmask 255.255.255.0
network 10.0.1.0
broadcast 10.0.1.255
The current dhcpd configuration looks like this:
# dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
subnet 172.16.0.0 netmask 255.255.255.0 {
range 172.16.0.2 172.16.0.100;
option subnet-mask 255.255.255.0;
option domain-name-servers 172.16.0.1;
option routers 172.16.0.1;
option broadcast-address 172.16.0.255;
}
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.2 10.0.0.100;
option subnet-mask 255.255.255.0;
option domain-name-servers 10.0.0.1;
option routers 10.0.0.1;
option broadcast-address 10.0.0.255;
}
subnet 10.0.1.0 netmask 255.255.255.0 {
range 10.0.1.2 10.0.1.100;
option subnet-mask 255.255.255.0;
option domain-name-servers 10.0.1.1;
option routers 10.0.1.1;
option broadcast-address 10.0.1.255;
}
And finally, the dhcpd init script looks like this:
# /etc/default/isc-dhcp-server
DHCPD_CONF=/etc/dhcp/dhcpd.conf
DHCPD_PID=/var/run/dhcpd.pid
INTERFACES="eth1 eth2 eth3"
So far so good. However, what happens at the moment is that clients only get dhcp traffic via the eth1 interface. The other two network interfaces are ignored. Even when i remove eth1 from the isc-dhcp-server init script, it is still used and serves ip addresses:
isc-dhcp-server[1467]: Starting ISC DHCP server: dhcpd.
dhcpd: DHCPDISCOVER from 00:0a:26:37:6f:12 via eth1
dhcpd: DHCPOFFER on 10.0.0.2 to 00:0a:26:37:6f:12 (client0) via eth1
dhcpd: DHCPREQUEST for 10.0.0.2 (10.0.0.1) from 00:0a:26:37:6f:12 (client0) via eth1
dhcpd: DHCPACK on 10.0.0.2 to 00:0a:26:37:6f:12 (client0) via eth1
How can I make sure, that a certain network/subnet is only served using a specific network interface? How does the dhcp server know, which client belongs to which subnet? I know that I can specify hosts for a subnet using the hosts notation (hardware address, hostname, etc.). However, for me that defeats the purpose of dhcp, because I want to be able to assign ip addresses dynamically without having to touch the dhcp configuration whenever I add a new client to a subnet.