.. _dhcp-relay: ########## DHCP Relay ########## If you want your router to forward DHCP requests to an external DHCP server you can configure the system to act as a DHCP relay agent. The DHCP relay agent works with IPv4 and IPv6 addresses. All interfaces used for the DHCP relay must be configured. ********** IPv4 relay ********** Configuration ============= .. cfgcmd:: set service dhcp-relay interface <interface> Enable the DHCP relay service on the given interface. .. cfgcmd:: set service dhcp-relay server <server> Configure IP address of the DHCP `<server>` which will handle the relayed packets. .. cfgcmd:: set service dhcp-relay relay-options relay-agents-packets discard The router should discard DHCP packages already containing relay agent information to ensure that only requests from DHCP clients are forwarded. Options ------- .. cfgcmd:: set service dhcp-relay relay-options hop-count <count> Set the maximum hop `<count>` before packets are discarded. Range 0...255, default 10. .. cfgcmd:: set service dhcp-relay relay-options max-size <size> Set maximum `<size>` of DHCP packets including relay agent information. If a DHCP packet size surpasses this value it will be forwarded without appending relay agent information. Range 64...1400, default 576. .. cfgcmd:: set service dhcp-relay relay-options relay-agents-packet <append | discard | forward | replace> Four policies for reforwarding DHCP packets exist: * **append:** The relay agent is allowed to append its own relay information to a received DHCP packet, disregarding relay information already present in the packet. * **discard:** Received packets which already contain relay information will be discarded. * **forward:** All packets are forwarded, relay information already present will be ignored. * **replace:** Relay information already present in a packet is stripped and replaced with the router's own relay information set. Example ======= * Listen for DHCP requests on interface ``eth1``. * DHCP server is located at IPv4 address 10.0.1.4. * Router receives DHCP client requests on ``eth1`` and relays them to the server at 10.0.1.4. .. figure:: /_static/images/service_dhcp-relay01.png :scale: 80 % :alt: DHCP relay example DHCP relay example The generated configuration will look like: .. code-block:: none show service dhcp-relay interface eth1 server 10.0.1.4 relay-options { relay-agents-packets discard } Operation ========= .. opcmd:: restart dhcp relay-agent Restart DHCP relay service ********** IPv6 relay ********** .. _dhcp-relay:ipv6_configuration: Configuration ============= .. cfgcmd:: set service dhcpv6-relay listen-interface <interface> Set eth1 to be the listening interface for the DHCPv6 relay. Multiple interfaces may be specified. .. cfgcmd:: set service dhcpv6-relay upstream-interface <interface> address <server> Specifies an upstream network `<interface>` from which replies from `<server>` and other relay agents will be accepted. .. _dhcp-relay:ipv6_options: Options ------- .. cfgcmd:: set service dhcpv6-relay max-hop-count 'count' Set maximum hop count before packets are discarded, default: 10 .. cfgcmd:: set service dhcpv6-relay use-interface-id-option If this is set the relay agent will insert the interface ID. This option is set automatically if more than one listening interfaces are in use. .. _dhcp-relay:ipv6_example: Example ======= * DHCPv6 requests are received by the router on `listening interface` ``eth1`` * Requests are forwarded through ``eth2`` as the `upstream interface` * External DHCPv6 server is at 2001:db8::4 .. figure:: /_static/images/service_dhcpv6-relay01.png :scale: 80 % :alt: DHCPv6 relay example DHCPv6 relay example The generated configuration will look like: .. code-block:: none commit show service dhcpv6-relay listen-interface eth1 { } upstream-interface eth2 { address 2001:db8::4 } .. _dhcp-relay:ipv6_op_cmd: Operation ========= .. opcmd:: restart dhcpv6 relay-agent Restart DHCPv6 relay agent immediately.