Skip to end of metadata
Go to start of metadata

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:

  • Uncomment RelayType and change it to relay
  • Comment out any ServerAddress

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. or The client will be multiple hops away.


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
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:

  • Add a static route on your router to 2001::/32 with your FreeBSD system IPv6 address as the gateway address and propagate the static route to your network.
  • Run a dynamic routing protocol on the FreeBSD system compatible with your existing network routers.
  • No labels