AT&T DSL with IPv6

I started my IPv6 journey via Hurricane Electric's tunnelbroker.net service.  It was an amazing journey they delegated me a /64 and /48 and provided instructions to get it setup on every operating system.  Then the Chicago router filled and I didn't want to hop off my ISP's network to get to the tunnel so I started prodding my ISPs. 

AT&T was the first to at least back up the settings found on the online forums.  It took me being hung up on twice(without the expected call backs) before I got to Don a Tier 2 Technical Lead.  He understood my plight for IPv6 and understood that helping me would benefit us both as they wouldn't be wasting transit to external carriers.   He couldn't help me right then, but promised to get back to me with something.  He did call back with the settings the next week.  He verified what I had understood from the online forums.

Skimming the online documents gave me the understanding that 6rd was 6in4 per carrier.  Instead of the global prefix and the generic router IP that you hoped your ISP answered your ISP registered a prefix and specified a router just for their network.  The configuration would be exactly the same. 

I'm asking for permission to publish what I found.  This is all pseudo information from here.  If I get permission I will update it with real information. 

The 6rd service provider prefix is 2602:300::/28
The 6rd border router (BR) IPv4 address is 12.83.49.81
Your IP Address 123.123.123.123

Before starting you should verify you can ping 12.83.49.81 and traceroute -I 12.83.49.81 to make sure you can reach your border router.

You take your IP address and run it through a printf to convert to hex:

printf "%02x%02x%02x%02x" 123 123 123 123 | awk '{print "2602:30" substr($1,1,1) ":" substr($1,2,4) ":" substr($1,6) "0::/60"}'

This command on mac or linux will give you your prefix you will use for the rest of the configuration.  The example gave 2602:307:b7b7:b7b0::/60.

Then you configure your RHEL/Centos 6 system.

In /etc/sysconfig/network-scripts/ifcfg-sit1:

DEVICE=sit1
BOOTPROTO=none
ONBOOT=yes
IPV6INIT=yes
IPV6TUNNELIPV4=12.83.49.81
IPV6TUNNELIPV4LOCAL=123.123.123.123
IPV6ADDR=2602:307:b7b7:b7b0:0::1/28

In /etc/sysconfig/network:

NETWORKING_IPV6=yes
IPV6_DEFAULTDEV="sit1"
IPV6FORWARDING="yes"

At this point your router system should have connectivity you should be able to ping6.  If not stop and troubleshoot.  If you can it is time to figure out your subnets.  I have multiple subnets behind my router and I want each to have their own network.  AT&T gives you a /60 per IP Address.  I was lazy and only configured one of my IP Addresses so I have one /60.  A /60 allows for 16 /64s.  This was plenty of networks for my needs. 

This means you can have:

2602:307:b7b7:b7b0::/64
2602:307:b7b7:b7b1::/64
2602:307:b7b7:b7b2::/64
2602:307:b7b7:b7b3::/64
2602:307:b7b7:b7b4::/64
2602:307:b7b7:b7b5::/64
2602:307:b7b7:b7b6::/64
2602:307:b7b7:b7b7::/64
2602:307:b7b7:b7b8::/64
2602:307:b7b7:b7b9::/64
2602:307:b7b7:b7ba::/64
2602:307:b7b7:b7bb::/64
2602:307:b7b7:b7bc::/64
2602:307:b7b7:b7bd::/64
2602:307:b7b7:b7be::/64
2602:307:b7b7:b7bf::/64

So then you need to configure your lan interface with the proper IP

In /etc/sysconfig/network-scripts/ifcfg-eth1:

IPV6INIT=yes
IPV6ADDR=2602:307:b7b7:b7b1::1/64

Then you configure radvd in /etc/radvd.conf:

interface br1
{
    AdvSendAdvert on;
    MinRtrAdvInterval 30;
    MaxRtrAdvInterval 100;
    prefix 2602:307:b7b7:b7b1::1/64
    {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr off;
    };
};

Enable and restart clients in that network and they will have IPv6 addresses.

Now have a client visit www.test-ipv6.com and test their functionality.