Here is my OpenBSD setup for Zen Internet’s FTTC.

Zen seem to support larger frame sizes as described in RFC 4638, at least for their fiber offering.

So I was able to get full 1500 byte MTUs with this configuration. This is for OpenBSD 6.8, using a Vigor 130 (UK spec) as the PPPoA-to-PPPoE bridge.


I used the em0 interface for the PPP connection to the bridge. This is a gige interface that supports jumbo packets, so I explicitly set the mtu to 1508 to account for PPP overheads.

The bridge is on, so we set our side to

inet NONE mtu 1508


Standard pppoe(4) configuration. Note we explicitly set the mtu to 1500.

inet NONE \
        pppoedev em0 \
        authproto chap authname 'zenXXXX@zen' authkey '<your-zen-password>' \
	mtu 1500 \
!/sbin/route add default -ifp \$if


The above configs will set up and maintain your IPv4 addresses and routing. Zen allocate static IPs, so nothing much changes.

I configured another nic on this host with my /28, and it all worked (remember to enable forwarding in sysctl).

But for IPv6 I found that placing inet6 autoconf in hostname.pppoe0 didn’t really work. SLAAC didn’t set up any kind of address, and manual IPv6 settings were lost whenever the PPPoE link flapped (cable disconnect or whatever).

The most reliable setup is dhcpcd instead of slaacd. dhcpcd isn’t part of the base install, so you have to install and enable dhcpcd:

# pkg_add dhcpcd
# rcctl enable dhcpcd

So here is an /etc/dhcpcd.conf that works for me.

option rapid_commit

script ""

allowinterfaces pppoe0
interface pppoe0

There is no prefix delegation configured because Zen seem to route my /48 automatically.

So with that dhcpcd configuration my IPv6 routing is set up and maintained. From here you can set up IPv6 to your network. I route a /52 to another router, which then distributes /64s to my home network, and so on. And of course there are more /52s for other networks, just in case I have billions of devices at home.