Gargoyle Router with IPv6 Support

I run Gargoyle Router (based on OpenWRT 12.09) on my TP-Link WDR4300. It works great, and I like the interface and features better than plain OpenWRT w/ LuCI.

Unfortunately, the latest experimental release of Gargoyle (1.5.9) does not seem to support IPv6:

root@Gargoyle:~# insmod /lib/modules/3.3.8/ipv6.ko
insmod: can't insert '/lib/modules/3.3.8/ipv6.ko': unknown symbol in module, or unknown parameter


So I decided to compile a custom version of Gargoyle that supports everything I wanted. Using the directions here, I downloaded the latest source and compiled a custom image with the following configuration (+ means added feature, – means removed).

Base Config: usb_large (OpenVPN, Tor, BW Monitor, USB Printer and Storage support)
-Tor, obfsproxy, gargoyle-plugin-tor
+hfs, hfsplus partition support
+IPv6 support
+wide-dhcpv6-client (ipk)
+wide-dhcpv6-server (ipk)
+bridge support
+bonding support
+rdisc6 (ipk)
+traceroute6 (ipk)
+radvd (ipk)
+screen (ipk)
+sed (ipk)
+vim (ipk)

And probably a few other additions that I can’t remember. The config file can be downloaded here: config.gargoyle.usb_large.notor.ipv6

I built this configuration for the following routers:
WDR3600 / WDR4300 / WDR4310

It should be possible to change the target profile to match whatever router you want.

Attached are the factory and sysupgrade images. *WARNING* I have only tested the 4300 sysupgrade image on my personal router. Do not try these files if you’re unwilling to accept that they may not work. Have a backup method of flashing a clean image ready.

gargoyle_1.5.x-ar71xx-generic-tl-wdr3600-v1-squashfs-factory.bin.tar … 6459eedd89638965e688a81b8db9c350
gargoyle_1.5.x-ar71xx-generic-tl-wdr3600-v1-squashfs-sysupgrade.bin.tar … dc2ed60282c5f155bfcb2afb7d5fdd5b
gargoyle_1.5.x-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin.tar … 1acabb6db6c37c6fcc103d04e38f8780
gargoyle_1.5.x-ar71xx-generic-tl-wdr4300-v1-squashfs-sysupgrade.bin.tar … 17c5725b5522d5427462a2cb17856925
gargoyle_1.5.x-ar71xx-generic-tl-wdr4310-v1-squashfs-factory.bin.tar … 1a3cd942f3680a7e6121c9d7bc894769
gargoyle_1.5.x-ar71xx-generic-tl-wdr4310-v1-squashfs-sysupgrade.bin.tar … 8254f9289cf52fcb5455fe1e045fe801

The MD5s are for the bin file only, not the tar/gz’d file. Extract the file before running md5sum and comparing the values.

Packages

The packages for this release are hosted on my server. You can either download and transfer the ipk to your router or you can add my server to your repository list.

Downloading The IPKs

They are hosted here: http://www.uscee.com/gargoyle_052013/

Adding to opkg repository

Open the opkg configuration file at /var/opkg.conf. Add the following line:

src/gz uscee http://www.uscee.com/gargoyle_052013

Comment out the two existing src/gz lines to force opkg to read packages from my server, unless you have a specific need to also access packages in the main repositories. Then run opkg update.

Activating Native IPv6

These directions are specifically for Comcast’s native IPv6 implementation, and they are heavily based on this blog post: http://www.frameloss.org/2013/01/12/ipv6-on-comcast-using-openwrt/

Follow those directions to install wide-dhcpv6-client and radvd. I had to make the following changes to the configuration files:

For /etc/config/network:

...
config interface 'wan'
 option ifname 'eth0.2'
 option proto 'dhcp'
 option accept_ra 1 # SET THIS TO ONE
 option send_rs 0
 option defaultroute 1
...

In some directions, it is also advised to set ‘na’ to 1 for dhcp6c to obtain the /128 address on the WAN interface. In my experience, this was not required and actually prevented the default IPv6 route from being created properly.

After installing and setting up the configuration files, run these commands to start IPv6:

/etc/init.d/network restart
/etc/init.d/radvd start
/etc/init.d/dhcp6c start

After this, you should be able to run ifconfig and see a local link IPv6 address assigned to eth0.2. You should also see both a local link and global link IPv6 address on br-lan. If your computer is IPv6 ready, you should also get assigned an IPv6 address. On the router, make sure you can ping out:

ping6 ipv6.google.com

If you cannot, check to make sure there’s a default route set by running:

root@Gargoyle:/etc# ip -6 route
2601:9:xxxx:xx::/64 dev br-lan proto kernel metric 256 
fe80::/64 dev eth0 proto kernel metric 256 
fe80::/64 dev eth0.2 proto kernel metric 256 
fe80::/64 dev br-lan proto kernel metric 256 
default via fe80::201:xxxx:xxxx:xxx dev eth0.2 proto kernel metric 1024 expires 1799sec

If you do not see a default route, try changing the ‘na’ setting in DHCP6C’s configuration file and the ‘accept_ra’ parameter for WAN in the network config file.

If you can ping google from the router, but still cannot access IPv6 pages on your network, try adding the following line to /etc/sysctl.conf:

net.ipv6.conf.all.forwarding=1

Then restart sysctl with the command /etc/init.d/sysctl restart

If everything went well, you should now be able to access IPv6 sites from your local network.

Further Reference: http://wiki.openwrt.org/doc/howto/ipv6

One thought on “Gargoyle Router with IPv6 Support

Leave a Reply

Your email address will not be published. Required fields are marked *