WeOS
5.29.0

# 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:

- DHCP Server
- DHCP Relay Agent

## 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

« Previous Next »