openbsd-ports/net/dhcpcd/pkg
..
DESCR
dhcpcd.rc
PLIST
README

+-----------------------------------------------------------------------
| Running ${PKGSTEM} on OpenBSD
+-----------------------------------------------------------------------

DHCPv6-PD (Prefix Delegation)
=============================
As OpenBSD doesn't yet support DHCPv6 in the base OS, one common use of
this package is to request Prefix Delegation from an ISP, which hands you
one or more routable IPv6 subnet that can be assigned to interfaces
facing your local network.

Here is a sample configuration achieving this, fetching addresses over the
pppoe0 interface and assigning it to multiple local networks.

Also ensure that pf.conf(5) allows DHCPv6 traffic to pass, for example:

  pass in quick on pppoe0 proto udp from fe80::/10 port dhcpv6-server to fe80::/10 port dhcpv6-client

As usual with IPv6, you will also need to allow address resolution
(with IPv6 this is done "in band" using icmp6 packets which must be allowed
to pass PF - with IPv4 this is done by ARP which is ignored by PF).

-- -- -- -- -- --
ipv6only
noipv6rs
duid
persistent
option rapid_commit
require dhcp_server_identifier

# disable running any hooks; not typically required for simple DHCPv6-PD setup
script ""

# List interfaces explicitly so that dhcpcd doesn't touch others
allowinterfaces pppoe0 em0 vlan3 vlan5

interface pppoe0
	# the following two lines tell dhcpcd to do router solicitation
	# itself. don't use them if using "inet6 autoconf" (slaacd)
	ipv6rs
	ia_na 1

	# request prefixes from the provider to use for downstream networks
	ia_pd 2 em0/1 vlan3/2 vlan5/3
-- -- -- -- -- --

(By default, dhcpcd will request a prefix length that is the largest
multiple of 8 that fits the networks. In some unusual cases, the
provider may require a specific prefix length hint instead; to
modify the above example for such a provider,
"ia_pd 2/::/48 em0/1 vlan3/2 vlan5/3").

In normal cases, you would use rad(8) to advertise these prefixes to
clients. Put the following in /etc/rad.conf:

-- -- -- -- -- --
interface em0
interface vlan3
interface vlan5
-- -- -- -- -- --

And enable rad(8):

    # rcctl enable rad