It's possible to get an IPv6 public address from behind your IPv4 NAT network, and access the internet. To achieve this we need to build a "Teredo" tunnel, what happens is that you get an IPv6 address from a Teredo provider, and everytime you send a IPv6 packet it's being encapsulated in a IPv4 packet.
Let's install it, i'm using Ubuntu 10.04 to achieve this:
sudo apt-get install miredo
Now we need to edit the conf file to change the Teredo server:
sudo vi /etc/miredo.conf
ServerAddress teredo.ipv6.microsoft.com
Restart the service:
sudo /etc/init.d/miredo restart
As you can see by typing in 'ifconfig' you see there's a Teredo interface and it has a public IPv6 address from the Teredo server:
teredo Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet6 addr: fe80::ffff:ffff:ffff/64 Scope:Link
inet6 addr: 2001:0:5ef5:73bc:14e4:2389:abe7:8169/32 Scope:Global
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1280 Metric:1
RX packets:95 errors:0 dropped:0 overruns:0 frame:0
TX packets:97 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:91890 (91.8 KB) TX bytes:17118 (17.1 KB)
Let's try a ping and see what happens:
ping6 ipv6.google.com
PING ipv6.google.com(2a00:1450:8006::63) 56 data bytes
64 bytes from 2a00:1450:8006::63: icmp_seq=4 ttl=57 time=274 ms
64 bytes from 2a00:1450:8006::63: icmp_seq=3 ttl=57 time=1293 ms
64 bytes from 2a00:1450:8006::63: icmp_seq=2 ttl=57 time=2292 ms
As you can see we are able to ping the IPv6 address from Google, that's all...you now have full IPv6 connectivity!


