Had a pretty hard time getting IPv6 going with Freedom Internet (a Dutch ISP), so this is mostly a “note to myself”. Turns out I wasn’t going crazy and for (some?) reason the wizard doesn’t set the default route for IPv6.

Basically what I did is: follow the Basic Setup wizard and enable IPv6 where you see it. This doesn’t not make IPv6 work in this case. So I needed to do the following from the command line when ssh-ed into the router (after configure):

set interfaces ethernet eth4 vif 6 pppoe 0 ipv6 enable
set interfaces ethernet eth4 vif 6 pppoe 0 ipv6 address autoconf
set interfaces ethernet eth4 vif 6 pppoe 0 ipv6 dup-addr-detect-transmits 1

This blurted out something about inversion of something, but after reconnecting the ethernet cable in port eth4 actually gave me an (link local) IPv6 address on the pppoe0 interface. The actual, global IPv6 address is set on the switch0 interface. So progress!

But the routing is still messed up for some reason. Turns out you need to set the default route for ipv6 separately:

set protocols static interface-route6 ::/0 next-hop-interface pppoe0

Which made IPv6 work from the router, from my desktop and on my WiFi connected computers.

And then finally the glorious:

% ping6 google.com
PING google.com(ams15s48-in-x0e.1e100.net (2a00:1450:400e:811::200e)) 56 data bytes
64 bytes from ams15s48-in-x0e.1e100.net (2a00:1450:400e:811::200e): icmp_seq=1 ttl=118 time=8.74 ms
64 bytes from ams15s48-in-x0e.1e100.net (2a00:1450:400e:811::200e): icmp_seq=2 ttl=118 time=12.5 ms

Some further tweaks to allow icmp for IPv6 to work:

set firewall ipv6-name WANv6_IN rule 30 action accept
set firewall ipv6-name WANv6_IN rule 30 description "Allow IPv6 icmp"
set firewall ipv6-name WANv6_IN rule 30 protocol ipv6-icmp

Hardware offload (disabled by default!!)

set system hwnat enable
set system ipsec enable

Went from 300 Mbps to 900+ Mbps after enabling this. Speedtest on my new WiFi setup shows 800+ Mbps. I’m not complaining anymore :)