You are using IPv4 from
Consulintel: logos
Are you a...?
Keep informed, visit our
Tell us your thoughts
on IPv6 > POLL
Looking for an
IPv6 Task Force? >
Questions? > FAQS
000 members
135 guests
Not member yet?
Get "extras". Register
Search Bar Plug-in
Firefox      IE7

If you are using Windows XP you might be interested in reading the NOTE at the bottom of this page for Teredo to work in your system.

The Teredo transition mechanism is defined in RFC4380 and it aims to provide IPv6 connectivity to users located behind a NAT box. It is supported since Windows XP SP1 and later as well as in Windows 2003.

Teredo is also based on IPv6 tunnels but the IPv6 packets are not encapsulated directly into IPv4 ones but into UDP packets. In this way it is able to traverse the NAT boxes with the only restriction that it is not symmetric NAT box. Therefore only cone and restricted-cone NATs are supported by Teredo. In RFC3489 you can find details about the different types of NAT.

There are four Teredo agents: Teredo client, Teredo server, Teredo relay, Teredo host-specific relay. The Teredo client is the one configured by the user willing to get IPv6 connected.

The Teredo server assigns the Teredo client an IPv6 address, and is also in charge of finding out the type of NAT that the client is using. It is important because the type of IPv6 address and the way that the IPv6 connection is done depends on the NAT type. Therefore there is an initial handshaking stage (Teredo setup) with the Teredo server when the client tries to obtain an IPv6 address, as illustrated in the following figure:

The Teredo server is only used to assign the IPv6 address and to help during the IPv6 communication but it does not forward any IPv6 nor IPv4 packet. This task is done by the Teredo Relays.

More information about how Teredo works can be found here.

Public Teredo servers

See below a list of public Teredo servers located all around the world. You should configure your Teredo client with one of them to get IPv6 connectivity by using Teredo. (France)
      It provides the new 2001::/32 prefix. (Spain)
      It provides the new 2001::/32 prefix. (USA, Redmon)
      It provides the new 2001::/32 prefix. (NCA, Korea)
      It provides the new 2001::/32 prefix. (Australia)
      It provides the new 2001::/32 prefix.

Teredo client configuration guides

Below you can find different ways to get IPv6 connectivity by using Teredo for the commonest operating systems. Some of them, depending on your version, may have Teredo already configured by default, but may be not the optimal configuration, depending on your location.

Windows XP/Windows 2003

For configuring the Teredo client you should type the following command from the system symbol window:

netsh int ipv6 set teredo client teredo_server refresh_interval client_port

Note that:

teredo_server is one of the servers listed above.
refresh_interval is the client update interval in seconds
client_port is the local port used by the Teredo client. It is 2721 by default.

The typical configuration could be:

      netsh int ipv6 set teredo client

Windows Vista

There is nothing to do in Windows Vista. As IPv6 is configured by default in case there user's host is behind a NAT box and it is attached to a IPv4-only network, Teredo is automatically enabled.


There is an implementation of Teredo for Linux that can be found here. You can find there instructions for the configuration of the client.


There is an implementation of Teredo for FreeBSD that can be found here. You can find there instructions for the configuration of the client.

Teredo server/relay configuration guides

This info provides the steps required in order to configure your Linux or *BSD box as a Teredo Server/Relay. In order to proceed, you need to have a public IPv4 address (two for the Server) on that box, your own IPv6 prefix (provided by your RIR) and IPv6 transit. The box needs to have IPv6 support and IPv6 routing enabled.

A) Verifying the Linux or *BSD platform

We suggest using the Teredo implementation "Miredo" available here, which supports the following Operating Systems:

- Linux (kernel 2.4 or 2.6) It is necessary to use the kernel modules TUNTAP and IPv6. So you need to have a kernel compiled with support for both (options CONFIG_TUN and CONFIG_IPV6 at .config)

- FreeBSD Only FreeBSD 5.5 and newer versions. Version 4.11 is too old for this.

- OpenBSD Recommended OpenBSD 3.7 or newer versions.

- NetBSD: Required NetBSD 4.0 or newer.

B) Steps for the Miredo installation

B.0) Download and install the latest Judy library version from here. Judy is a general purpose dynamic array used by Miredo. Judy's speed and memory usage are typically better than other data storage models and improves with very large data sets. It is essential if you plan to deploy a Teredo Relay because the high amount of peers that are stored and maintained in memory. If you do not install it, then your Teredo Realy could not forward all the traffic, giving the bad impression to the Teredo users that IPv6 does not work.

B.1) Download the latest source version from here

B.2) From a shell, extract the source code:
tar xjf miredo-X.Y.Z.tar.bz2

(where X.Y.Z is the latest version available)

B.3) Compile the source code as usual:
B.3.1) cd miredo-X.Y.Z
B.3.2) ./configure
B.3.3) make
B.3.4) make install

C) Configuration of the Teredo Relay

In order to configure the Teredo Relay, the file /usr/local/etc/miredo.conf, has to be configured with the following parameters:

RelayType relay
InterfaceName teredo
BindAddress DIR_IPv4_PUBLIC
BindPort 3545
Prefix 2001:0::
InterfaceMTU 1280

Where DIR_IPv4_PUBLIC is the public IPv4 address of the host that will work as the Teredo Relay.

D) Starting the Teredo Relay

In order to start the Teredo Relay there are certain requirements:

- Have one public IPv4 address
- Have IPv6 connectivity in the host to be used as the Teredo Relay
- Enable IPv6 routing in the hosts that will be used as Teredo Relay
- Announce the Teredo prefix (2001::/32) to Internet by means of BGP from the network where the Teredo Relay is located

The steps to start the Teredo Relay will be then:

D.1) Load the TUNTAP module (only for linux) modprobe tun

D.2) Enable IPv6 routing in the host to be used as Teredo Relay sysctl -w net.ipv6.conf.all.forwarding=1

D.3) Start as root the Teredo Relay

After step D.3), a new interface is created in the host, and it should have the following or similar info (use ifconfig):

teredo Link encap:Point-to-Point Protocol
inet6 addr: fe80::ffff:ffff:ffff/64 Scope:Link
RX packets:2755 errors:0 dropped:0 overruns:0 frame:0
TX packets:3720 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:351404 (343.1 Kb) TX bytes:804965 (786.0 Kb)

E) Configuration of the Teredo Server

In order to forward traffic in between the IPv6 network and the Teredo clients (those using the Teredo prefix, 2001::/32), it is not required to install a Teredo Server, just the Teredo Relay, as described above.

The Teredo Server is used only in order to provide the Teredo IPv6 address (belonging to the prefix 2001::/32), to the Teredo clients, and also to help in the start of the IPv6 communications in between the Teredo clients and other IPv6 nodes.

The advantage of having a Teredo Server in our network is that avoids all the signaling traffic to go outside when a Teredo client try to establish a communication with other IPv6 nodes.

The disadvantage is that the Teredo clients need to be configured to use "this" Teredo Server, instead the default one, located at Microsoft. However this is a very simple step.

To configure the Teredo Server, the file /usr/local/etc/miredo-server.conf needs to have the following parameters:

Prefix 2001:0::
InterfaceMTU 1280
ServerBindAddress DIR_IPv4_PUBLIC_1
ServerBindAddress2 DIR_IPv4_PUBLIC_2

(where DIR_IPv4_PUBLIC_1 and DIR_IPv4_PUBLIC_2 are IPv4 public addresses that NEED to be consecutive, in order to get the Teredo Server working)

F) Starting the Teredo Server

In order to start the Teredo Server it is required to have two public and consecutive IPv4 addresses. This is due to the way the Teredo Client implementations contact with the Teredo Server in order to confirm if the client is located behind a NAT and to guess what kind of NAT.

It is not required to have two different network interfaces in order to get the Teredo Server working. It is possible to use "alias" in order to configure the second public IPv4 address in the same interface as the first one. For example, if our interface is eth0:

eth0 Link encap:Ethernet HWaddr 00:0e:18:05:26:38
inet addr:XX.YY.ZZ.12 Bcast:XX.YY.ZZ.255 Mask:

Then to configure the second public IPv4 address in the same interface, we need:

ifconfig eth0:0 XX.YY.ZZ.13 broadcast XX.YY.ZZ.255 netmask

After this, the new interface will show:

eth0:0 Link encap:Ethernet HWaddr 00:0e:18:05:26:38
inet addr:XX.YY.ZZ.13 Bcast:XX.YY.ZZ.255 Mask:
Interrupt:10 Base address:0xe400 Memory:f8200000-f8200038

If you prefer to use two network interfaces, then you don't need to use the above alias configuration.

The final step to start the Teredo Server is:

F.1) Start as root the Teredo Server

NOTE for Windows XP users

Once Teredo became RFC, the old IPv6 prefix from 6BONE (3ffe:8319::/32) has been replaced by the IANA allocated one, 2001::/32. This change, together with the 6Bone phase-out on 6/6/2006, requires a modification in the old Windows XP Teredo Clients to support it. Teredo client in Windows Vista does not require such a modification.

The modification of Windows XP Teredo clients can be done with any of the folowing two ways:

A) Installing the Windows Update KB922819. Note that if you have installed the Peer Name Resolution Protocol (PNRP), which is available in the Windows Update KB920342, then you do not need to install the KB922819 update.

B) Adding or altering the REG_DWORD value of the \HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip6\Parameters\GlobalParams\TeredoPrefix entry in the Windows Registry. The REG_DWORD value is interpreted as a 32 bit prefix, in network byte order. To do that just follow the following steps:

1. Run the regedit.exe program: Start -> Run -> Write regedit.exe and then click on OK button.
2. Browse through the registry tree to check if the


      entry exists. If don't so, add it.
3. Add/modify the REG_DWORD value to 0x00000120 (288).
4. Reboot your system.
5. Follow the configuration guides for Windows XP/ Windows 2003 below for configuring your Windows Teredo Client.

For that modification to work it is essential that the Teredo Server advertises the new IPv6 prefix (2001:0000::/32).

Teredo Client implementation in Windows Vista supports the new IPv6 prefix without modifications.