After much discussion and debate we have decided that giving the MetaNet IPv6 addresses isn't such a trivial task. Basically the only types of addresses that work with the structure of MetaNet are Global Unicast Addresses (defined in RFC:2373 and RFC:2374) ie. (Real-World) IP addresses. The RFC:1918 equivalent IPv6 addreses are designed for "site" use only and previous experience (OSPF) has taught us that treating the MetaNet as a single site does not work very well. The problem now becomes how to obtain Global Unicast Addresses that we can use on MetaNet. For now the solution that we have come up with is that each MetaNet user who wants to participate in MetaNetIPv6 testing needs to obtain for themselves a /48 allocation from www.freenet6.net. This will then be routed using bgp+ over the MetaNet.
Visit http://www.freenet6.net/4105/register.asp and create an account for yourself. It is recommended that you use your metanet site name as your userid for freenet6 as they use it to setup your AAAA record.
Download and install a suitable RPM from http://www.freenet6.net/4105/download.shtml.
Check your inbox. Hopefuly you have received an email containing your Freenet6 username and password. Remeber them, you'll need them in a second.
Edit the file /etc/freenet6/tspc.conf (Debian), /usr/local/tsp/bin/tspc.conf (Red Hat) so that it looks the this example tspc.conf Substitute your username and password from above in the appropriate places and fill in the correct value for the if_prefix line (i'll use eth0 for the rest of the documentation, but you probably want to choose something more sensible).
Save the file and exit.
First are your standard IPv4 address(es) followed by your IPv6 addresses. Ignore the first address (it is a special link-local address used for configuration) the second address is what we are concerned with. It has global scope and is routable from anywhere on the 6bone! This address has been allocated from your /48 and you can see that the freenet scripts have been clever and have placed your internal network on a further subnet inside this to give an IP address with a /64 netmask. So for example the /48 shown in the example is 3ffe:b80:1f16 and the subnet is 1.
Note - Debian packages ping6/traceroute6 as iputils-ping and iputils-tracepath.
This will cause zebra to do router announcements on eth0 for your internal ranges. Any machine on that network will hear the router announcements and will automatically assign itself an IP address out of that range.
Make sure your client machines have ipv6 enabled see IPv6Setup for more information on this.
NOTE that you probably don't want to use Zebra. Use radvd instead, zebra is rather broken. See the notes in 6to4 for setting up radvd.
IPv6 equivalents of 'IP Allocations' and 'Router Maintenance'
Congratulate yourself and randomly ping people on the metanet.
1?: Etud was echoing packets that the kernel sent back to itself. This had the problem that the kernel would say "Is anyone using this address" and then would hear that yes, someone is using it (itself!) so it would stop using it. Doh.