4.1. IPv6-ready kernel

Modern Linux distributions already contain IPv6-ready kernels, the IPv6 capability is mostly compiled as module, so it's possible that this module is not loaded on startup.

See IPv6+Linux-Status-Distribution page for most up-to-date information.

4.1.1. Check for IPv6 support in the current running kernel

To check, whether current running kernel supports IPv6, take a look into your /proc-file-system. Following entry must exists:

/proc/net/if_inet6
   

A short auto-magically test looks like:

# test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"
   

If this fails, it's possible, that the IPv6 module is not loaded.

4.1.2. Try to load IPv6 module

You can try to load the IPv6 module executing

# modprobe ipv6
   

If this is successful, this module should be listed, testable with following auto-magically line:

# lsmod |grep -w 'ipv6' && echo "IPv6 module successfully loaded"
   

And the upper shown check should be now run successfully.

Note: unloading the module is currently not supported and can result under some circumstances in a kernel crash.

4.1.2.1. Automatically loading of module

It's possible to automatically load the IPv6 module on demand. You only have to add following line in the configuration file of the kernel module loader (normally /etc/modules.conf or /etc/conf.modules):

alias net-pf-10 ipv6  # automatically load IPv6 module on demand
    

It's also possible to disable automatically loading of the IPv6 module using following line

alias net-pf-10 off   # disable automatically load of IPv6 module on demand
    

4.1.3. Compile kernel with IPv6 capabilities

If both upper shown results were negative and your kernel has no IP6 support, than you have some possibilities:

If you've decided to compile a kernel, you should have already experience in kernel compiling and read the Linux Kernel HOWTO.

A mostly up-to-time comparison between vanilla and USAGI extended kernels is available on IPv6+Linux-Status-Kernel.

4.1.3.1. Compiling a vanilla kernel

More detailed hints about compiling an IPv6-enabled kernel can be found e.g. on IPv6-HOWTO-2#kernel.

4.1.3.2. Compiling a kernel with USAGI extensions

Same as for vanilla kernel, only recommend for advanced users, which are already familiar with IPv6 and kernel compilation. See also USAGI project / FAQ.

4.1.4. IPv6-ready network devices

Not all existing network devices have already (or ever) the capability to transport IPv6 packets. A current status can be found at IPv6+Linux-status-kernel.html#transport.

Major issue is that because of the network layer structure of kernel implementation an IPv6 packet isn't really recognized by it's IP header number (6 instead of 4). It's recognized by the protocol number of the Layer 2 transport protocol. Therefore any transport protocol which doesn't use such protocol number hasn't now the capability to dispatch the IPv6 packet. Attention: the packet is still transported over the link, but on receivers side, the dispatching won't work (you can see this e.g. using tcpdump).

4.1.4.1. Currently known never “IPv6 capable links”

  • Serial Line IP (SLIP, RFC 1055), should be better called now to SLIPv4, device named: slX

  • Parallel Line IP (PLIP), same like SLIP, device names: plipX

  • ISDN with encapsulation rawip, device names: isdnX

4.1.4.2. Currently known “not supported IPv6 capable links”

  • ISDN with encapsulation syncppp, device names: ipppX (design issue of the ipppd, will be merged into more general PPP layer in kernel series 2.5.x)