I wrote the following workaround which I've confirmed as 100% reliably working on my RT-N16 running Toastman's firmware (specifically tomato-K26USB-1.28.7499MIPSR2Toastman-RT-VPN.trx). TomatoUSB users can put this in their
Administration - Scripts - WAN Up section:
#
# Workaround for modifying /etc/dhcp6c.conf to work with Comcast IPv6,
# requiring IA-NA DHCP option bit set.
#
# Note that this workaround intentionally messes up the spacing of
# the send ia-pd option; this is to ensure that if if the sed command
# is run multiple times it won't continue to append the send ia-na entry
# over and over.
#
# http://www.dslreports.com/forum/r27234575-TomatoUSB-and-Comcast-IPv6-bugs-found
#
sed -i -e's/ send ia-pd 0;/send ia-pd 0;\n send ia-na 0;/' /etc/dhcp6c.conf
kill `cat /var/run/dhcp6c.pid` && dhcp6c -T LL `nvram get wan_iface`
#
# Workaround for TomatoUSB bug where a spurious default IPv6 route is
# added for no justified reason, resulting in packets getting forwarded
# effectively to /dev/null.
#
# http://www.dslreports.com/forum/r27234575-TomatoUSB-and-Comcast-IPv6-bugs-found
#
route -A inet6 del default gw :: metric 1024 `nvram get wan_iface`
You can then test to make sure its working by rebooting your router or pasting the commands in to a shell (telnet/ssh) window directly. Afterwards, your WAN interface (in my case vlan2) should have an IPv6 address assigned to it labelled
Scope:Global. Do not get confused by the Scope:Link entry; that's not the important one.
After that,
ping6 ipv6.google.com
should work and you should see ICMP responses.
A couple important things:
1. The above may not work correctly for users with complex routing environments (such as individuals using VPN tunnels or doing complex VLANing). In this case, the
ping6
test may not work depending on your configuration.
To verify the above WAN Up script is working, all you need to look at is your WAN interface (in my case vlan2) and make sure there is an IPv6 address assigned labelled
Scope:Global. If there is, then the WAN Up script I provided is working correctly. If there isn't, then something is amiss with the dhcp6c configuration, or Comcast hasn't deployed IPv6 to your area. See below for further verification.
2. One should copy-paste the WAN Up script into the WAN Up script window; there are backticks used to run subcommands (not apostrophes!) and so on. I hope anyone even reading this thread would know that though. :-)
Validation:
root@gw:/tmp/home/root# uptime
15:19:26 up 0 min, load average: 0.15, 0.05, 0.01
root@gw:/tmp/home/root# ping6 ipv6.google.com
PING ipv6.google.com (2001:4860:4001:803::1010): 56 data bytes
64 bytes from 2001:4860:4001:803::1010: seq=0 ttl=56 time=56.647 ms
64 bytes from 2001:4860:4001:803::1010: seq=1 ttl=56 time=46.848 ms
64 bytes from 2001:4860:4001:803::1010: seq=2 ttl=56 time=14.746 ms
64 bytes from 2001:4860:4001:803::1010: seq=3 ttl=56 time=64.740 ms
64 bytes from 2001:4860:4001:803::1010: seq=4 ttl=56 time=15.879 ms
64 bytes from 2001:4860:4001:803::1010: seq=5 ttl=56 time=16.359 ms
--- ipv6.google.com ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 14.746/35.869/64.740 ms
Verifying the dhcp6c.conf changes are working -- note the line with
Scope:Global in it:
root@gw:/tmp/home/root# ifconfig vlan2
vlan2 Link encap:Ethernet HWaddr E0:CB:4E:C0:00:C5
inet addr:67.180.84.87 Bcast:67.180.87.255 Mask:255.255.252.0
HERE --> inet6 addr: 2001:558:6045:9b:114c:a6be:d64d:520c/128 Scope:Global
inet6 addr: fe80::e2cb:4eff:fec0:c5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:270068 errors:0 dropped:0 overruns:0 frame:0
TX packets:88814 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:33258559 (31.7 MiB) TX bytes:9207877 (8.7 MiB)