I haven't set up a general-purpose Linux server as an IPv6 router, but I have set up
the following networking gear with IPv6:
Vyatta (community edition)
pfSense
m0n0wall
Meraki Enterprise access points
In some cases, I set up IPv6 tunneling via HE.net's Tunnelbroker or SixXS. This works
reasonably well, although it gets tricky if you have an endpoint with a dynamic IP
address. I've found HE.net's Tunnelbroker to be MUCH easier to work with than
SixXS.
In another case - of which I'm particularly proud :) - I set up IPv6 over a GRE tunnel
via an IPsec VPN from an office with two IPv4-only ISPs to one of my datacenters where we
have native dual-stack IPv4&IPv6. The end result is fully functional, nearly-native,
low-latency IPv6 for the ~60 daily unique visitors to the café below my office, and
doesn't require me to rely on any service that I don't pay for.
I'd be happy to share config examples and other tips as requested.
cheers,
Graham