Previous Next Table of Contents

5. How do I get IPv6 on my Linux machine?

This section covers the installation of IPv6 software onto a Linux machine. It is aimed at the experienced Linux user - you may have to hack a Makefile, a header file or some source in order to get things to work. However, it assumes no IPv6-specific knowledge.

Under each package's name is a link to its home site (the place the authors put the newest version). Please see the next section, "Software Mirrors" for other places to download; going to a mirror first is always a good idea.

5.1 Absolutely critical software

This is the stuff that you have to have in order to get your Linux box running IPv6 over the 6bone.

Development libraries

In the words of Craig Metz:

I develop IPv6 applications using Linux libc 5.4.26 and the drop-in
replacement headers and libinet6 from inet6-apps.

Philip develops IPv6 applications using the current GNU libc 2.1, which
includes the appropriate headers and some of the needed functions because he
has merged them in.

Presumably, either of these configurations would be a reasonable base
for someone wanting to use IPv6 applications. Other configurations may or may
not work.

You need either libc5 with libinet6, a patched glibc 2.0, or glibc 2.1.


libinet6 can be found in the inet6-apps package mentioned below.

Glibc 2.0 patch

Glibc 2.1

Other critical software


The base of the NET-3 Linux distribution, this package contains ifconfig, hostname, route, arp, rarp, netstat, and ipfw. As of this writing, the latest version is 1.41.

inet6-apps (

As of this writing, the newest version of inet6-apps is 0.24.

Note that you need to use an actual FTP client to get this package; a web browser won't work. That's why there's no hyperlink directly to them.

Also, Craig Metz has an aging scheme built into his FTP sites. As he says:

Things are first released on, which is an IPv6-only
FTP server. After a version is aged one week, it's copied onto,
which is accessable by IPv4. If a version gets replaced within a week, that
version never makes it to the IPv4 FTP server. This means that the IPv6 server
can be thought of as carrying public beta versions while the IPv4 server can
be thought of as carrying more baked versions.

If you have any trouble with either FTP server, you can whine about it or you
can explain your problem to me and ask me to fix it. One way is a lot more
likely to result in getting your problem solved.

5.2 Potentially useful software.

This is stuff that you don't need, but that's real handy to have.


Several common BSD utilities, ported to IPv6 (finger, ftp, telnet, etc...). Netkit is perhaps the most useful non-mandatory IPv6 software out there - picking up at least some of these packages is HIGHLY recommended.


There are two reasons to install BIND. If you don't have an up-to-date glibc (2.1.x), you need to install BIND's resolver libraries so that you can build IPv6 apps. This is not necessary if you have an up-to-date glibc. The second reason is that the newer BINDs support AAAA records, which are part of the IPv6 DNS spec. You need to do this if you want to run an IPv6-aware nameserver.


RADVD is the Router ADVertisement Daemon. It is used for autoconfiguration by IPv6 hosts. More info is available here.

rc.inet6 (

A sample script that shows how to bring up IPv6 support on your machine.

inner-apps (

fdsniff, fingerd, and netd (inetd/tcp_wrappers replacement) written from scratch to support IPv6.

inn-1.5.1+ipv6-1.tar.gz (

Patches to INN to make it IPv6-aware.


A network benchmarking program, lmbench is useful for, well, benchmarking networks. It's the program that lets you show your friends that your IPv6 Linux machine is faster than their IPv4 box!


The start of an RSVP port for Linux.

5.3 Software mirrors

This is a list of all the IPv6 soft ware mirror sites that I know of. Currently, there's no central organization that tracks all these mirrors - this means that some sites may have the latest versions of things, while some may not. The FAQ should always have pointers to the home sites of the most up-to-date software; it's probably a good idea to check the mirrors close to you first, and go to the home sites last.

United States Mirrors

European Mirrors

Australian Mirrors

South American Mirrors

South African Mirrors

5.4 Other Linux-specific info

A quick 6bone howto

The following is from Craig Metz.

In response to some questions I've been getting:

1. Install the latest working IPv6-capable kernel.
2. Install the latest net-tools kit from
3. Install the latest inet6-apps kit from
4. Install the latest radvd from
5. Compute your prefix using the algorithm in RFC 1897.
        Read the document carefully. If you don't know
        why to do otherwise, compute a 64-bit prefix.
6. Find your connection point. You want somewhere that
        is the topologically closest transit site that
        is clueful enough to be depended on.
7. Ask them to set you up a tunnel. You will need to
        provide them with your prefix (from step 5) and
        the IPv4 address of your IPv6 router.
8. Install the skeleton rc.inet6 from and
        fill in the appropriate blanks.
9. Make sure the tunnel moves bits (ping).
10. Ask your connection point to get routing set up for
11. Put an entry in the IPv6 routing registry on
12. Install BIND >4.9.5.
13. Set up an IPv6 forward DNS domain (I recommend you
        call it, where is your
        normal IPv4 domain) with AAAA records.
14. Test the above on-site and off-site.
15. Set up an IPv6 reverse DNS domain.
16. Test the above on-site.
17. Request a reverse DNS delegation.
18. Test the above off-site.

While this sounds involved, it really isn't so difficult. It does
take a mostly-constant network connection, some clues, and some time.

Previous Next Table of Contents