What is IPv6?

The protocol widely used on the Internet nowadays is called IPv4, or IP version 4. No-one really remembers why it's version 4 but it is. IPv4 uses addresses that consist of 32 bit, or tuples of 4 numbers between 0 and 255.

IPv6 is a new version of the protocol that is meant to replace IPv4 in the end. It uses 128 bit addresses (written as tuples of 8 hex numbers, each containing up to 4 hex digits, or 16 bit).

Many of our servers are "dual stacked", i.e. they support both. Your PC most likely is "dual stacked" as well. But do you use IPv6? Most likely not, because some network component in-between does not support it. There are ways around this problem though, and fascinatingly they work very well against censorship.

Native IPv6

If you have IPv6 connectivity directly from your provider (an example would be "Three" in France) you are probably using it without knowing about it. Many universities have IPv6 connectivity as well on all their PCs. Fact is, places that strictly filter on IPv4 often don't on IPv6 so you really want to look out for IPv6.

With Windows, just open a "cmd" window and type "ipconfig" -- if you have IPv6 you'll see it. You'll have some weird looking address like "2a02:345:abcd::2" or similar.

I don't have IPv6, can I get it?

Probably yes. There are transition services to help people like you getting connected to IPv6. One of them is called Teredo. There are more but we'll concentrate on Teredo here because it's easy to use and works for many.

Most current Windows versions have Teredo enabled by default (Vista does, and Windows 7 does as well). With XP SP2 you need to enable it.

First ensure the IPv6 protocol stack is installed on your PC. Just open the network connections, open any interface's properties window and check if the protocol is there; if not, install it.

Then open a cmd window (click on Start, then click "run" in XP and type "cmd"; with Vista/Windows 7 type "cmd" in the search field, wait until "cmd.exe" appears, right-click on it and choose "run as administrator"). In it, type this:

netsh interface ipv6 show teredo

If type is "default" and you haven't got IPv6 connectivity try this:

netsh interface ipv6 set teredo enterpriseclient

Unless you are behind a web proxy this should get you on the IPv6 network -- and the YF client will notice.

Does it really help against censorship?

It does. We know it gets you connected in Iran and China.

Will this get me free Internet access? (Nigeria and other African countries)

No, certainly not.

Does this work with Linux too?

Sure. This example script should get you started; it extracts the needed IPv4 IP address if your PC and builds the tunnel interface config from it. It does not install a default route for IPv6; instead, it adds a route to 2000::/3 (which covers all IPv6 address space currently assigned).

With some distros it's even simpler. For example, with Debian it's enough to create a suitable record in /etc/network/interfaces, here's how it works. If you use a different distribution, just google for "ipv6 tunnel" and your distribution's name.