Miredo : Teredo IPv6 tunneling for Linux and BSD
Introduction
Miredo is an open-source implementation of the Teredo: Tunneling IPv6 over UDP
through NATs Internet proposed standard (RFC 4380), targetting the Linux
kernel and BSD operating systems.
The purpose of Teredo IPv6 tunneling is to provide IPv6 connectivity to
users behind NAT devices, such as most broadband routers, most of which
do not support IPv6.
Miredo was originally developed, and is actively
maintained by Rémi Denis-Courmont as a volunteer project. It includes all the
components of the Teredo architecture :
- a Teredo client (as Microsoft Windows XP SP2),
- a stand-alone Teredo relay
(as ng_teredo),
- a Teredo server.
It is currently distributed under the terms of the
GNU General Public License,
the most widely used open-source software license.
Miredo runs on the
GNU/Linux kernel,
FreeBSD, NetBSD and MacOS X. It runs entirely in userland, so
that:
- No kernel patching is required.
- It is very portable across POSIX-like kernels.
Support for further kernels can easily be added.
- It does not waste kernel memory. Stress tests showed that Miredo should
be able to handle as many as 1 million simultaneously peers on a standard PC.
- It cannot crash the whole system if a would-be bug triggers.
- It can run with very limited privileges, so that the whole system is not
compromised in case of would-be vulnerability.
- The host kernel needs not be distributued under the terms of the GPL.
Miredo is also meant to interoperate with the Teredo tunnel driver which is
included in Microsoft Windows XP (as of Service Pack 2, or within the
Advanced Networking Pack), 2003, and supposedly Vista.
For more informations on the Teredo technology, you should refer to the
Wikipedia article
and the Microsoft IPv6 : Teredo overview.
Miredo is known to run on the following platforms :
- GNU/Linux and other Linux kernel based systems
- Working fine (recommended 2.6.9, or better yet, 2.6.12).
Requires TUNTAP driver (CONFIG_TUN)
and IPv6 stack (CONFIG_IPV6).
- FreeBSD
- Working fine (tested with versions 6.0 and 5.4).
- NetBSD
- Working fine (reported with version 3.99.17).
- Darwin (Mac OS X)
- Working fine (Tiger, Panther) with third party tuntap driver.
Help is needed on the following platforms :
- Solaris
- Tunnel driver not ported.
- OpenBSD
- Broken. Need help (tested with version 3.7).
- DragonFly BSD
- Might work. Not tested.
- Hurd
- Tunnel driver not ported. No IPv6 support in kernel.