DNA/Welho recently announced their full IPv6 support. Each customer gets an /56 prefix via dhcpv6. Here’s my simple configuration on how to get things running with EdgeMax. This assumes that the cable modem is in bridged mode and connected to eth0. eth1 is the LAN port.
set firewall ipv6-name WANv6_IN default-action drop set firewall ipv6-name WANv6_IN description 'WAN inbound traffic forwarded to LAN' set firewall ipv6-name WANv6_IN enable-default-log set firewall ipv6-name WANv6_IN rule 10 action accept set firewall ipv6-name WANv6_IN rule 10 description 'Allow established/related sessions' set firewall ipv6-name WANv6_IN rule 10 state established enable set firewall ipv6-name WANv6_IN rule 10 state related enable set firewall ipv6-name WANv6_IN rule 15 action accept set firewall ipv6-name WANv6_IN rule 15 description 'Allow ICMPv6' set firewall ipv6-name WANv6_IN rule 15 protocol ipv6-icmp set firewall ipv6-name WANv6_IN rule 20 action drop set firewall ipv6-name WANv6_IN rule 20 description 'Drop invalid state' set firewall ipv6-name WANv6_IN rule 20 state invalid enable set firewall ipv6-name WANv6_LOCAL default-action drop set firewall ipv6-name WANv6_LOCAL description 'Internet to router' set firewall ipv6-name WANv6_LOCAL enable-default-log set firewall ipv6-name WANv6_LOCAL rule 1 action accept set firewall ipv6-name WANv6_LOCAL rule 1 description 'allow established/related' set firewall ipv6-name WANv6_LOCAL rule 1 log disable set firewall ipv6-name WANv6_LOCAL rule 1 state established enable set firewall ipv6-name WANv6_LOCAL rule 1 state related enable set firewall ipv6-name WANv6_LOCAL rule 3 action accept set firewall ipv6-name WANv6_LOCAL rule 3 description 'allow icmpv6' set firewall ipv6-name WANv6_LOCAL rule 3 log disable set firewall ipv6-name WANv6_LOCAL rule 3 protocol icmpv6 set firewall ipv6-name WANv6_LOCAL rule 5 action drop set firewall ipv6-name WANv6_LOCAL rule 5 description 'drop invalid' set firewall ipv6-name WANv6_LOCAL rule 5 log enable set firewall ipv6-name WANv6_LOCAL rule 5 state invalid enable set firewall ipv6-name WANv6_LOCAL rule 8 action accept set firewall ipv6-name WANv6_LOCAL rule 8 description 'DHCPv6 client' set firewall ipv6-name WANv6_LOCAL rule 8 destination port 546 set firewall ipv6-name WANv6_LOCAL rule 8 log disable set firewall ipv6-name WANv6_LOCAL rule 8 protocol udp set firewall ipv6-receive-redirects disable set firewall ipv6-src-route disable set interfaces ethernet eth0 address dhcp set interfaces ethernet eth0 description wan set interfaces ethernet eth0 dhcpv6-pd pd 0 interface eth1 host-address '::1' set interfaces ethernet eth0 dhcpv6-pd pd 0 interface eth1 service slaac set interfaces ethernet eth0 dhcpv6-pd pd 0 prefix-length 56 set interfaces ethernet eth0 dhcpv6-pd rapid-commit enable set interfaces ethernet eth0 firewall in ipv6-name WANv6_IN set interfaces ethernet eth0 firewall local ipv6-name WANv6_LOCAL set interfaces ethernet eth0 ipv6 dup-addr-detect-transmits 1
Here’s a quick explanation on the key details: dhcpv6-pd is a way to ask for a prefix block from the ISP. The ISP will assign a /128 point-to-point ip to the WAN interface which the ISP uses as the gateway to the prefix which it gives to you. You could simply just say “set interfaces ethernet eth0 dhcpv6-pd” and you would only get the /128 point-to-point link, which is enough for the router to connect to public ipv6 but not else.
The “set interfaces ethernet eth0 dhcpv6-pd pd 0” block is the request for the /56 prefix. This prefix will be then assigned to one interface (eth1) so that the interface will get an ip ending with ::1 and then the subnet is served via a slaac protocol to the clients.
Notice that there seems to be a small bug: If you did just “set interfaces ethernet eth0 dhcpv6-pd” and committed that, additional “dhcpv6-pd pd” settings wont work unless you first “delete interfaces ethernet eth0 dhcpv6-pd” and commit that.
IPv6 changes several key features when compared to IPv4 so be ready to learn again how ARP requests works (hint, there’s no ARP requests any more), how multicast is used in many places and how interfaces have several IPv6 addresses in several networks (link-local, public etc). Here’s one helpful page which explains more on the prefix delegation.