7

Is there a way to exclude a single IP address from a DHCP pool? For various reasons I have a machine that I can't reconfigure or move off the network (let's call it a printer). It has been hard coded with address x.x.x.50 and my DHCP pool is x.x.x.10 -> x.x.x.246. I don't want to have two pool definitions for this one subnet just to cover the ranges on either side of this machine. Is there some form of 'exclude IP' argument/option?

I'm using Ubuntu 11 and the isc-dhcp-server package.

DISCLAIMER: I have googled and it only came up with IOS and Juniper configuration info.

cpit
  • 107
  • 5
James Butler
  • 388
  • 1
  • 4
  • 14

3 Answers3

17

Why don't you set the IP for that appliance explicitly:

# The standard subnet
subnet 10.0.0.0 netmask 255.255.255.0 {
    option domain-name "ourdomain.internal";
    option routers 10.0.0.1;
    option domain-name-servers 10.0.0.2;
    range 10.0.0.10 10.0.0.49;
    range 10.0.0.51 10.0.0.246;
}


#has hardcoded ip, and dhcp should not use that in pool
host fixedipappliance {
    hardware ethernet 10:4e:ed:co:ff:ee;
    fixed-address 10.0.0.50;
}

I just successfully tested a configuration with two ranges like that. Multiple range statements are legal, as per the manpage there must be at least one range statement:

The range statement

  range [ dynamic-bootp ] low-address [ high-address];

For any subnet on which addresses will be assigned dynamically, there must be at least one range statement. The range statement gives the lowest and highest IP addresses in a range. All IP addresses in the range should be in the subnet in which the range statement is declared. The dynamic-bootp flag may be specified if addresses in the specified range may be dynamically assigned to BOOTP clients as well as DHCP clients. When specifying a single address, high-address can be omit‐ ted.

cpit
  • 107
  • 5
mbx
  • 455
  • 9
  • 21
1

I think you want to do static DHCP assignment. See if this help. http://www.miquels.cistron.nl/isc-dhcpd/ http://forums.whirlpool.net.au/archive/309440

simeonboxco
  • 130
  • 3
0

You shouldn't need to worry about it - the DHCP server will check whether the address exists on the network before allocating it. Do man dhcpd.conf and look at the IP Address Conflict Prevention section. Provided the device will respond to an ICMP Echo Request, you don't need to do anything.

Note: A conflict may arise if a device gets the IP address via DHCP initially, followed by the static address being allocated.

womble
  • 95,029
  • 29
  • 173
  • 228
Mike Insch
  • 1,244
  • 8
  • 10
  • If the device has a fixed IP configured internally and is present on the network, even without a fixed address or split range configured the DHCP server will mark the address as "abandoned" when the initial ICMP Echo Request message shows the device is online. The server will only try to reuse the address after the pool becomes exhausted, and will still check whether the device is online first. The only way a conflict can occur is if the server allocates the address while the device is offline. No changes are needed to dhcpd.conf to support this, it is standard functionality. – Mike Insch Jul 13 '11 at 11:31
  • 2
    The ISC server (what most linux distributions use) checks IP address use by pinging them. Beware things like Windows workstations which do not respond to pings by default, something which leads to address use collisions. – David Mackintosh Jul 14 '11 at 15:01
  • Except when you reboot your printer, there's a chance you could get the address taken by something else. No, it best to exclude it from the range DHCP will dish out. – hookenz Jan 25 '13 at 01:33
  • It's too bad that DHCP servers don't use arping, which is guaranteed to get a response unless the device is turned off/offline. That would prevent Amazon echo devices from encountering address collisions (because they cannot be made to answer a regular ping). – ivanlan Dec 20 '21 at 00:10