DHCP in IOS and dual-boot

The DHCP server embedded in IOS is good, because it exists. Unfortunately, it has certain limitations, of which one of the more irritating is the possibility to manually bind a host to a specific IP address based on the MAC address (hardware-identifier) or the identifier (client-identifier) it sends – but not both simultaneously.

The problem is that in the case of a Windows system you should bind a host to an address with client-identifier, while in case of e.g. Linux – with hardware-address. Why? Windows utilizes DHCP option 61, which is client-identifier, by inserting the MAC address into it, but preceded by a byte describing layer 2 technology type (most often it’s Ethernet, so byte 01). Meanwhile, Linux doesn’t use this option by default.

Everything is fine unless we have a machine with both systems installed and we want that machine to always have the same IP address. The only sane solution is to modify the Linux DHCP client’s behavior. For example, if the MAC address of the Linux box is 00:01:02:03:04:05, we can insert the following into /etc/dhclient.conf:

send dhcp-client-identifier 01:00:01:02:03:04:05;

and in the router configuration:

ip dhcp pool dual-boot-host
    host 192.168.1.123 255.255.255.0
    client-identifier 0100.0102.0304.05

This way the machine will send a DHCP request with the client-identifier field from both systems and we will achieve some unification. On the other hand, the problem doesn’t seem to be hard to solve from the DHCP server’s perspective – looks like someone at Cisco has cut some corners.

Update: the configuration file modification only applies to dhclient from the ISC DHCP package. For example, Gentoo’s default dhcpcd uses client-identifier out-of-the-box. Don’t know about other distros, but the idea remains the same.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s