Supporting IPv6 on a Linux Server Node

This article provides a technical tutorial on setting up IPv6 on a Linux server and connecting it to the IPv6 Internet.

The current version of the IP protocol, IPv4, has proved to be robust, easily implemented, interoperable and has stood the test of scaling to the size of today's Internet, most of which uses IPv4—now nearly 20 years old. IPv4 has been remarkably resilient in spite of its age, but it is beginning to have problems. The initial design of IPv4 did not take into consideration several issues that are of great importance today, such as a large address space providing a solution for the address crunch problem, mobility, security, autoconfiguration and quality of service.

To address these concerns, the Internet Engineering Task Force (IETF) has developed a suite of protocols and standards known as the IP version 6 (IPv6), which incorporates many of the concepts and proposed methods for updating IPv4. Some of the IPv6 features include a new header format, a larger address space (128 bits), an efficient and hierarchical addressing and routing infrastructure, the availability of stateless and stateful address security, built-in security, better support of mobility and a new protocol for neighboring node interaction. As a result, IPv6 is not only going to fix a number of problems in IPv4, it also will add many improvements. IPv6 is expected to replace IPv4 gradually, with the two coexisting for a number of years during a transition period.

Linux IPv6 Implementations

There are two main IPv6 implementations for Linux: the implementation that comes as part of the Linux kernel and the USAGI (UniverSAl playGround for IPv6) implementation. The USAGI Project works to deliver a production-quality IPv6 protocol stack for Linux, tightly collaborating with the WIDE, KAME and TAHI Projects. It is run by volunteers from various organizations contributing to the Linux and the IPv6 communities via the delivery of the IPv6 protocol stack. Currently, there are many efforts in the different distributions teams, and USAGI is trying to unify them so that there is one IPv6 implementation for all Linux distributions.

For the purpose of this article, we use Linux kernel 2.4.5 from We first show how to build a kernel with IPv6 support, then how to upgrade the basic networking software to support IPv6 and finally, how to connect your IPv6-enabled server to the IPv6 Internet using the services from the Project.

Supporting IPv6 in the Linux Kernel

The first step is to download the Linux kernel from and uncompress it:

tar -xzf linux-2.4.5.tar.gz

You will have a directory called linux. You need to move this directory into /usr/src and rename it linux-2.4.5 to reflect the kernel version. Next, you need to create a link to the 2.4.5 source directory:

ln -s /usr/src/linux-2.4.5 /usr/src/linux
Having done that, you need to configure the new kernel to enable support for IPv6:
cd /usr/src/linux
make xconfig (or menuconfig)
We need to enable two options in the kernel configuration. First, go to Code Maturity Level and enable development/incomplete code/drivers:
"Prompt for development and/or incomplete
   code/drivers"    YES

Figure 1. Enabling Support for Experimental Features

Then go to the Networking Options. There you will enable the IPv6 protocol:


Figure 2. Linux Kernel IPv6 Configuration

This is all the configuration you need at the kernel level. Next, you should save this configuration and exit by clicking on the Save and Exit button (see Figure 3). This will create a .config file in /usr/src/linux, which is the kernel configuration file. Now you are ready to compile the kernel by following these steps:

make clean
make dep
make bzImage

Figure 3. Saving the Configuration

The result will be a new kernel image created in /usr/src/linux/arch/i386/boot/. If you added other features as modules you need to compile and install the modules by applying:

make modules
make modules_install

At this point you need to copy the new IPv6-enabled boot image to /boot:

cp /usr/src/linux/arch/i386/boot/bzImage
and update your file:
cp /usr/src/linux/ \
ln -fs /boot/ /boot/
The only remaining step is to update /etc/lilo.conf file to add an entry for the new IPv6-enabled kernel. Edit the /etc/lilo.conf file and add a new entry as follows:
root=/dev/hda1 # change this to reflect your own
               # partition
Then update the LILO configuration by applying
This will add an entry called linux_ipv6 that will be presented at LILO at boot time. You are now ready to reboot your server. When LILO comes up, choose to boot linux_ipv6. Et voilà! Your system will boot with IPv6 support in the kernel. Type ifconfig at the prompt to verify and see the outcome. It should show the IPv6 local address ::1 in your loopback configuration (see Figure 4).

Figure 4. ifconfig Loopback



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

find the IP address for

jim karter's picture

find the IP address for host1. From host1 only has a v4 protocol stack, only IPv4 is for the search service names. So try to get to host1 host2 using IPv4-mapped address. An IPv4 packet will be sent by host1 host2. watch anime online | Good Night SMS

If you want to talk to host1

Anonymous's picture

If you want to talk to host1 host2 will create a power V6. Next, locate the IP address for host1. Since host1 has only a v4 protocol stack, only IPv4 are no records in the name lookup service. So try to reach host1 host2 using an IPv4-mapped. An IPv4 packet will be sent by host1 host2 and think that it is communicating with a client v4.
frases para orkut | Mensagens para Orkut | watch anime online

Linux servers...

lara.smith's picture

Linux servers are the most safest servers among all the operating servers so I personally prefer it.

Real Estate Investing

Really Informatic

Anonymous's picture

Really Informatic post.
Thanks for sharing
Real Estate Investing |

The link does not work

rapaz's picture

the link to do de same in debian does not work
so re post the new link


Re: Supporting IPv6 on a Linux Server Node

Anonymous's picture

I just read a similar howto on the same subject, but focusing more on Debian. In case anyone is interested :

Re: Supporting IPv6 on a Linux Server Node

Anonymous's picture

iam doing project on ipv4-ipv6 we need help .we should knoe how to ping6 with an ipaddress.