Charter 6rd IPV6 Tunnel on DD-WRT

I have a Linksys EA6500v1 at this house with Charter internet. This particular router doesn't have a good version of Tomato or OpenWRT available for it, so I was stuck with DD-WRT. And Charter does not have native IPV6 support, only a 6rd tunnel.

I will describe here how to configure DD-WRT for a 6rd tunnel such as the one Charter has.

Setup -> IPV6

Set IPV6 to Enabled, choose "Native IPV6 from ISP" (even though this is a lie) and add Google's IPV6 DNS servers for Static DNS 1 and 2, which are:

2001:4860:4860::8888
2001:4860:4860::8844

Leave everything else disabled.

Services -> Services

Under DNSMasq options, in "Additional DNSMasq Options", paste this block:

server=2001:4860:4860::8888 
server=2001:4860:4860::8844 
server=8.8.8.8 
server=8.8.4.4 

enable-ra 
dhcp-range=::1, ::400, constructor:br0, ra-stateless, ra-names, 12h 
dhcp-option=option6:dns-server,[::] 
dhcp-option=vendor:MSFT,2,1i 

This uses Google's public DNS for both IPV6 and IPV4. Local DNS will work (make sure you have that enabled.)

Administration -> Commands

In the "Commands" box, paste this script:

HOST6RD=6rd.charter.com
PREFIX=2602:100
ROUTER_LAN_IP=192.168.1.1
  

insmod /lib/modules/`uname -r`/ipv6.ko 2>/dev/null
insmod /lib/modules/`uname -r`/kernel/net/ipv6/sit.ko 2>/dev/null
  

WANIP="$(ifconfig vlan2 | sed -n '/inet /{s/.*addr://;s/ .*//;p}')"
IP6RD=$(nslookup $HOST6RD 2>/dev/null | grep "Address" | awk '{ print $3 }'|\
        grep -v $ROUTER_LAN_IP)
  

if [ -n "$WANIP" ]; then
  V6PREFIX=$(printf $PREFIX':%02x%02x:%02x%02x' $(echo $WANIP | tr . ' '))
  ip tunnel add tun6rd mode sit local $WANIP ttl 255
  ip tunnel 6rd dev tun6rd 6rd-prefix $PREFIX::/32
  ip addr add $V6PREFIX::1/32 dev tun6rd
  ip addr add $V6PREFIX::1/64 dev br0
  ip link set tun6rd mtu 1476
  ip link set tun6rd up
  ip route add ::/0 via ::$IP6RD dev tun6rd
  

  kill -HUP $(cat /var/run/radvd.pid) 2>/dev/null
fi

Edit the three variables at the top for your 6rd tunnel configuration and router LAN IP.

Now click "Save Startup".

Now paste this script in the "Commands" box:

ip6tables -F FORWARD
ip6tables -F OUTPUT

And click "Save Firewall".

Administration -> Management -> Reboot Router

Reboot the router and IPV6 should now work on all clients.

Go to http://test-ipv6.com/ to check, your score should be 10/10.

References

https://www.dd-wrt.com/wiki/index.php/IPv6#6rd

I started with the script here, which no longer works, and uses radvd.

http://kdwink.blogspot.com/2013/05/ipv6-with-charter-communications.html

Got charter specific info like the tunnel host and prefix from here.

http://www.litech.org/6rd/

Modified the script using this guide and got it to work, still using radvd which doesn't support DNS for Windows hosts.

https://www.dd-wrt.com/phpBB2/viewtopic.php?t=290486&postdays=0&postorder=asc&start=0

Used the discussion here to replace radvd with dnsmasq, which supports windows hosts correctly.


Last modified: 2017-1-10 (火) at 8:07 am