Enable 6rd Support

6rd is a mechanism to enable IPv6 tunneling for providers who are unable to provide native IPv6 to their customers. It uses a 6in4 SIT tunnel to work it's magic.

This is an example of 6rd for CenturyLink customers - you'll need to find out if your provider supports 6rd, and what are the various settings - including 6rd prefix, the ipv4 6rd tunnel server address.

CL customers can figure out their assigned IPv6 prefix with the following command:

  echo $(printf "2602:%02x:%02x%02x:%02x00::1\n" $(echo $YOUR-PUBLIC-IP-ADDRESS | tr . ' '))

Replace $YOUR-PUBLIC-IP-ADDRESS with the public facing address on your ER. You'll get an IP in the form of:

  2602:xx:xxxx:xxxx::1

Configure your tunnel like so:

  set interfaces tunnel tun0 6rd-prefix '2602::/24'
  set interfaces tunnel tun0 address '2602:xx:xxxx:xxxx::1/24'
  set interfaces tunnel tun0 description 'CenturyLink IPv6 6rd tunnel'
  set interfaces tunnel tun0 encapsulation sit
  set interfaces tunnel tun0 local-ip $YOUR-PUBLIC-IP-ADDRESS
  set interfaces tunnel tun0 mtu 1472
  set interfaces tunnel tun0 multicast disable
  set interfaces tunnel tun0 ttl 255

If you are running pre-1.8 firmware, you will need to use the following:

  set protocols static route6 '::/0' next-hop '::205.171.2.64' interface tun0

If you are running 1.8 or later, use the following instead:

  set interfaces tunnel tun0 6rd-default-gw ::205.171.2.64

And configure a range on your LAN side. In this case, we'll be using eth1. For CL business level customers, each public static IP gets assigned a /56. For residential, its a /64. We'll use the first /64 block in the /56 for the LAN.

  set interfaces ethernet eth1 address '2602:xx:xxxx:xxxx::1/64'
  set interfaces ethernet eth1 ipv6 dup-addr-detect-transmits 1
  set interfaces ethernet eth1 ipv6 router-advert cur-hop-limit 64
  set interfaces ethernet eth1 ipv6 router-advert link-mtu 1472
  set interfaces ethernet eth1 ipv6 router-advert managed-flag false
  set interfaces ethernet eth1 ipv6 router-advert max-interval 300
  set interfaces ethernet eth1 ipv6 router-advert other-config-flag false
  set interfaces ethernet eth1 ipv6 router-advert prefix '2602:xx:xxxx:xxxx::/64' autonomous-flag true
  set interfaces ethernet eth1 ipv6 router-advert prefix '2602:xx:xxxx:xxxx::/64' on-link-flag true
  set interfaces ethernet eth1 ipv6 router-advert prefix '2602:xx:xxxx:xxxx::/64' valid-lifetime 2592000
  set interfaces ethernet eth1 ipv6 router-advert reachable-time 0
  set interfaces ethernet eth1 ipv6 router-advert retrans-timer 0
  set interfaces ethernet eth1 ipv6 router-advert send-advert true

Congrats, you should now have functioning IPv6 over 6rd from CL! Feel free to adapt these to your own provider's setup.