In this HOWTO I'll try to explain you how to get IPv6 working in your LAN. What we will do is request a tunnel to an IPv6 PoP, configure you WL-500g router and setup the systems in you LAN.

Since most ISP's don't provide any IPv6 services to customers, you need another method of sending your IPv6 packets onto the internet. Basically what happens is the we're going to make our LAN talk IPv6, so the systems in your network can reach each other by IPv6 directly. When you send a packet off to the internet, the WL-500g will pick it up, place it inside an IPv4-packet and send that one to a so-called PoP (Point of Presence). A large router on the PoP will extract the IPv6-packet from the IPv4-packet and relay it to the IPv6-internet.

Before requesting an account for some IPv6 PoP-service, find out whether your ISP has some IPv6-functionallity. For customers of any Dutch ISP: only XS4ALL is offering IPv6-tunnels to customers. If you're using XS4ALL, you can enable your IPv6-tunnel in the Service Center (https://service.xs4all.nl/) and you skip the next section.


FIND A POP

So first of all, we need access to a PoP. SixXS is an organisation that offers several PoPs, located in a 11 European countries, and most of them can be access for free after signing up. You can only make use of SixXS if your WL-500g is online 24/7 and it's public IP address doesn't change, if you don't meet either of those requirements, you would be able to request a dynamic tunnel, but this is not supported by the WL-500g yet. To gain access, you should perform the first 6 steps from http://www.sixxs.net/faq/account/?faq=10steps, which I will repeat here. Please read the information on each page carefully.

First create a 6bone handle with this page: http://www.sixxs.net/signup/6bone/
Note that you should fill in your real and valid address, random checks are performed to verify them.

You will be assign a NIC handle, which you fill in on this page: http://www.sixxs.net/signup/
The SixXS staff likes to know why you want to signup. If you enter to little data, your request will be denied.

When your account have been approved, you can login an request a tunnel: http://www.sixxs.net/home/requesttunnel/
On this page you should select the static IPv4 endpoint option and enter the public IP address of your router. Follow the instructions these pages give you.

After requesting the tunnel, wait for the approval mail, which should follow shortly.

While waiting for this email to arrive, you should read their FAQ about credits: http://www.sixxs.net/faq/account/?faq=credits
Basically, after configuring the IPv6 tunnel for your WL-500g, you should leave it online (with IPv6) for a week to gain enough credits for requesting an entire IPv6-subnet.


MAKE YOUR WL-500G SPEAK IPV6

Before you can configure IPv6 on your WL-500g, you must first upload a firmware file that is IPv6-enabled. If you don't use any additional packages and only use the device as a router / AP, you can just download this firmware file: http://www.p-bierman.nl/~phedny/WL50....7-3b+ipv6.trx
You can also setup the custom firmware development environment and download the source patch from http://wl500g.info/attachment.php?attachmentid=316 which you can unpack in the /root/broadcom directory (adding and overwriting some files in the src subdir).


CONFIGURE IPV6 - WAN

When you have uploaded this file and rebooted your router, there should be a menu item in IP Config -> IPv6. On this page, you can configure the IPv6-settings of the WL-500g. Scroll down to the section Tunnel IPv6 Setting. Enable the IPv6-tunnel by clicking the Yes-option and filling the fields. When using SixXS, you can find all required information by logging into your account and clicking on the tunnel name. Now enter this information:

Remote endpoint: "POP IPv4" on the SixXS tunnel info page
Local IPv6 address: "Your IPv6" on the SixXS tunnel info page
Netsize: The number after the / in the "IPv6 Prefix" field on the SixXS tunnel info page
Remote IPv6 gateway: "POP IPv6" on the SixXS tunnel info page
Tunnel MTU: SixXS users enter 1280, otherwise ask your PoP (or just use 1280 )
Tunnel TTL: SixXS users enter 64, otherwise ask your PoP (or just use 64 )

Now click the Finish button and on the page that appears click Save&Restart to save your settings.

At this point your router can speak IPv6 with the rest of the internet.


CONFIGURE IPV6 - LAN

If you already have an IPv6-subnet, you can perform this step right now. Users who just signed up for SixXS must wait a week and keep the WL-500g online, to obtain the 5 additional credits you need to request a tunnel. After this week, you can log into your SixXS-account and select the "Request Subnet" menu item. Select the tunnel and enter a reason why you want a subnet. After the request has been approved, you can configure your WL-500g:

On the page IP Config -> IPv6, find the section LAN IPv6 Setting. Here you can enter details for the LAN-side of the WL-500g. Basically, you give the WL-500g a local address and set the netsize. When using SixXS, on the home page you find the subnets section. In this table, you notice the "Subnet Prefix". Easiest thing to do, is take the part before the / and copy it to the "Static IPv6 address" field of the WL-500g config page. Then you add a 1 to the end and set the netsize to 64 (which might differ from the value from the Subnet Prefix, but that's OK). For example, if the Subnet Prefix sais 2001:838:3ca::/48, you choose your static IPv6 address 2001:838:3ca::1 and the netsize 64.

Select Yes to enable the router advertisements. This will make your WL-500g announce itself in your LAN as an IPv6-router, so systems in your LAN that speak IPv6 will auto-configure themselves to communicate with the WL-500g.


CONFIGURE SYSTEMS - WINDOWS

Next thing to do is to enable IPv6 on the systems in your LAN. IPv6 is available for Windows 2000, XP and 2003. If you're using any other Windows system, you should upgrade or not use IPv6 at all. Users of Windows XP just start a command prompt (press Start -> Run and enter the command: cmd). The command you give is: ipv6 install. After a minute, you're system is ready to talk IPv6. You can verify this by using the ipconfig command: ipconfig /all. This will show you the IPv6 addresses that the system has configured. Windows 2000 users should visit http://msdn.microsoft.com/downloads/...ipv6/start.asp and follow the instructions. For Windows 2003 I don't know, since I don't have that OS.


CONFIGURE SYSTEMS - LINUX

Next thing to do is to enable IPv6 on the systems in your LAN. As far as I know, every Linux distribution has IPv6 support. As root, enter the ifconfig command and it may show lines like these:
inet6 addr: 2001:838:3ca:0:20a:e4ff:fe4b:b176/64 Scope:Global
inet6 addr: fe80::20a:e4ff:fe4b:b176/64 Scope:Link

This means you already have IPv6 running. If you don't see inet6 addresses, you can try "modprobe ipv6", to insert the ipv6 kernel module. If this doesn't work, that means your distribution hasn't IPv6 support out-of-the-box. You may want to check documentation for your distribution or ask for help.