Ubuntu – dhcpd fails to start on eth1


I'm having trouble configuring and starting ISC DHCP server on my machine. I'm running Ubuntu 11.10 desktop edition. I installed ISC DHCP by running

$ sudo apt-get install dhcp3-server

My machine has two NICs:

eth0, which is connected to a router for Internet access, that has an IP address of
eth1, where I want dhcpd to serve requests, for a subnet.

I have modified /etc/default/isc-dhcp-server to point to eth1:

$ cat /etc/default/isc-dhcp-server
# Defaults for dhcp initscript

I have configured dhcpd for a simple subnet:

$ cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;

subnet netmask {
  interface eth1;
  option subnet-mask;
  option broadcast-address;

With this configuration, dhcpd fails to start for me:

$ sudo /etc/init.d/isc-dhcp-server start
* Starting ISC DHCP server dhcpd
* check syslog for diagnostics.               [fail]

$ tail /var/log/syslog
Aug 15 15:29:45 eptc4 dhcpd: No subnet declaration for eth1 (no IPv4 addresses).
Aug 15 15:29:45 eptc4 dhcpd: ** Ignoring requests on eth1.  If this is not what
Aug 15 15:29:45 eptc4 dhcpd:    you want, please write a subnet declaration
Aug 15 15:29:45 eptc4 dhcpd:    in your dhcpd.conf file for the network segment
Aug 15 15:29:45 eptc4 dhcpd:    to which interface eth1 is attached. **
Aug 15 15:29:45 eptc4 dhcpd: 
Aug 15 15:29:45 eptc4 dhcpd: 
Aug 15 15:29:45 eptc4 dhcpd: Not configured to listen on any interfaces!

Am I missing a step? I don't understand why dhcpd is complaining that it's not configured to listen on any interfaces.

This is my first time setting up DHCP. I've spent three days reading manuals and forums and think I've done everything right, but keep getting the same error. Any tips to get me on the right track are greatly appreciated!

Best Answer

In short: you need to set up an address on interface eth1 before the DHCP can serve requests from it.

Longer story: the DHCP server will read the configuration file, then match the subnet declarations with IP addresses currently assigned to interfaces. Only interfaces whose IP address matches a subnet declaration will serve requests for that subnet. Hence, you need to set up eth1 with an address in the range, if you want the ISC DHCP server to serve requests for from it.