Miredo is a Teredo implementation that runs on FreeBSD. The FreeBSD system should already have functional dual-stack connectivity before installing Miredo. You'll need root privileges to run most of the commands below.

Install Miredo

Do one of the following

pkg_add -r miredo


cd /usr/ports/net/miredo
make install

Configure Miredo

Enable Miredo during system startup.

echo miredo_enable=YES >> /etc/rc.conf

Enable IPv6 forwarding.

echo net.inet6.ip6.forwarding=1 >> /etc/sysctl.conf
sysctl net.inet6.ip6.forwarding=1

Edit the Miredo config:

Start and test Miredo

Before starting Miredo, check the IPv6 route table for the lack of a 2001::/32 route

netstat -rn | grep 2001::/32

You should get no output from the above.

Ping6 and traceroute6 to a known Teredo client (eg. teredomon.mucip.net or mire.remlab.net). The client will be multiple hops away.

ping6 teredomon.mucip.net
traceroute6 teredomon.mucip.net

Now startup Teredo relaying.

/usr/local/etc/rc.d/miredo start

Recheck the IPv6 route table and traceroute6 paths. You should now see a 2001::/32 route and the Teredo client will be 0 hops away.

> netstat -rn | grep 2001::/32
2001::/32 teredo ULS teredo
> traceroute6 teredomon.mucip.net
1 2001:0:53aa:64c:3c10:f226:af0b:cba 710.172 ms 240.230 ms 240.489 ms

Redistribute the Teredo 2001::/32 route

To allow your FreeBSD Teredo relay to be useable by the rest of your IPv6 network, you'll need to add a 2001::/32 route to your routers. Two ways to do that are: