WeOS
5.29.0

# DHCP Client Relay Server HowTo

## Introduction

This document shows how to set up a DHCP server to provide leases to an IP subnet behind a DHCP relay agent.

The DHCP server is be configured with a default pool of addresses and a number of Static Leases. The DHCP relay is configured to append DHCP option 82 to each DHCP message on `vlan1` and forward it to the DHCP sever.

                        |
                    .--.-.
                   ( (    )__
                  (_,  \ ) ,_)  Internet/Intranet
                    '-'--`--'
                     |
                .----+----.
                |         |
                | Server  |
                |         |
                '----+----'
                     | .1
      192.168.2.0/24 |
                     | .2
                .----+----.
                |         | iface: vlan2
                |  Relay  |
                |         | iface: vlan1
                '----+----'
                     | .1
      192.168.1.0/24 |
                     |
    -----+-------+---+---+-------+-----
         |       |       |       |
      .--+--. .--+--. .--+--. .--+--.
      |  H1 | |  H2 | |  H3 | |  H4 |
      '-----' '-----' '-----' '-----'

Figure 1: DHCP server and relay setup with multiple clients.

## Relay Configuration

Configure the Relay to forward any DHCP traffic towards the server.

- Forward all DHCP messages to the `server` at 192.168.1.1 port 6767
- Append `option82`, to all DHCP messages that pass through the relay

    Relay:/#> configure
    Relay:/config/#> dhcp-relay
    Relay:/config/dhcp-relay/#> server 192.168.1.1:6767
    Relay:/config/dhcp-relay/#> iface vlan1
    Relay:/config/dhcp-relay/iface-vlan1/#> end
    Relay:/config/dhcp-relay/#>
    Relay:/config/dhcp-relay/#> option82
    Activating Option 82.
    Relay:/config/dhcp-relay/option82/#> end
    Relay:/config/dhcp-relay/#> leave
    Relay:/#>

## Server Configuration

The DHCP server is set up to provide a dynamic pool of addresses and a number of static leases for the 192.168.1.0 subnet. With each lease the server will also provide some additional information like: gateway and DNS server. Worth noting is the use of the non-standard port 6767, this means clients cannot accidentally connect to the server for a pool address, but must always go through a relay agent.

    Server:/config/#> dhcp-server
    Server:/config/dhcp-server/#> server-port 6767
    Server:/config/dhcp-server/#> name-server auto
    Server:/config/dhcp-server/#> gateway auto

Next up is the subnet to serve:

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

We conclude the configuration by setting up a couple of static leases:

- The first lease use `match mac`, meaning only the client with that particular MAC address will be offered the `host 1` configuration, `address` 192.168.1.10

- The second lease use `match option82`, meaning any host connected to port eth1 on the Relay (identified by its MAC address) will be offered the `host 2` configuration, `address` 192.168.1.20

    Server:/config/dhcp-server/#> host 1
    Server:/config/dhcp-server/host-1/#> match mac 0c:50:e5:07:24:00
    Server:/config/dhcp-server/host-1/#> address 192.168.1.10
    Server:/config/dhcp-server/host-1/#> end
    Server:/config/dhcp-server/#> host 2
    Server:/config/dhcp-server/host-2/#> match option82 circuit-id eth1
    Server:/config/dhcp-server/host-2/#> match option82 remoteid-id 0c:50:e5:65:97:00
    Server:/config/dhcp-server/host-2/#> address 192.168.1.20
    Server:/config/dhcp-server/host-2/#> end
    Server:/config/dhcp-server/#> leave
    Server:/#>

## Status

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

    Server:/#> show dhcp
    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.10     H1
    864000      0c:50:e5:a0:b3:00 01:0c:50:e5:a0:b3:00 192.168.1.20     H2
    864000      0c:50:e5:b2:55:00 01:0c:50:e5:b2:55:00 192.168.1.114    H3
    864000      0c:50:e5:c6:27:00 01:0c:50:e5:c6:27:00 192.168.1.120    H4

« Previous Next »