DHCP IP Per-Port HowTo

Introduction

This document shows how to set up the DHCP server to hand out a static IP address (lease) to clients connected to a specific physical port.

.---------------------.
|        Switch       | DHCP Server/Relay
|                     | iface: vlan1
| eth1           eth2 | 192.168.1.0/24
'--+---------------+--'
   |.132           |.55
   |               |
.--+--.         .--+--.
|  H1 |         |  H2 |
'-----'         '-----'

Figure 1: DHCP server setup with IP-per-port for port eth2.

In the case depicted above, clients connected to port eth1 receive an address from the server’s pool of addresses. Clients on port eth2 on the other hand always receive a specific address, 192.168.1.55. Hence, the most obvious use-case for the latter is to have a single end-device connected to eth2.

For more information about any of the sub-systems used and their configurations options, see:

Configuration

Configuration of both DHCP server and DHCP relay services. First, we set up the relay to forward all DHCP traffic to the local DHCP server. The key setting is option82, which makes sure the relay agent appends DHCP Option 82 port information for the server:

example:/#> configure
example:/config/#> dhcp-relay
example:/config/dhcp-relay/#> server 127.0.0.1
example:/config/dhcp-relay/#> iface vlan1
example:/config/dhcp-relay/iface-vlan1/#> port eth2
example:/config/dhcp-relay/iface-vlan1/port-eth2/#> circuitid-type portname
example:/config/dhcp-relay/iface-vlan1/port-eth2/#> end
example:/config/dhcp-relay/iface-vlan1/#> end
example:/config/dhcp-relay/#> option82
Activating Option 82.
example:/config/dhcp-relay/option82/#> remoteid-type mac
example:/config/dhcp-relay/option82/#> end
example:/config/dhcp-relay/#> end
example:/config/#>

We can now move to set up the DHCP server, starting with the default subnet and address pool.

example:/config/#> dhcp-server
example:/config/dhcp-server/#> subnet 192.168.1.0/24
Created new DHCP server for subnet 192.168.1.0.
example:/config/dhcp-server/subnet-192.168.1.0/#> pool 192.168.1.100 100
example:/config/dhcp-server/subnet-192.168.1.0/#> end
example:/config/dhcp-server/#>

Next, we set up the static lease for host(s) connected to port eth2. The match option82 configuration is what the server use to identify the correct port (circuit-id) and its own MAC address for iface vlan1 (remote-id).

example:/config/dhcp-server/#> host
example:/config/dhcp-server/host-1/#> match option82 circuit-id string eth2
example:/config/dhcp-server/host-1/#> match option82 remoteid-id string 0c:50:e5:65:97:00
example:/config/dhcp-server/host-1/#> address 192.168.1.55
example:/config/dhcp-server/host-1/#> end
example:/config/dhcp-server/#> leave
example:/#>

Status

To verify that addresses are distributed as intended any provided lease can be viewed on the server:

example:/#> show dhcp-clients
LEASE TIME  MAC ADDRESS       CLIENT ID            IP ADDRESS       HOSTNAME
864000      0c:50:e5:07:24:00 01:0c:50:e5:07:24:00 192.168.1.132    H1
864000      0c:50:e5:65:97:00 01:0c:50:e5:65:97:00 192.168.1.55     H2