Stage 1: IPv6-capable PCs
Kernel Configuration:
-
You should be using the latest 2.2.x kernel - go
to http://www.kernel.org to get one
You will also need the latest version of modutils.
-
Enter the following commands as root:
-
# cd /usr/src
-
# mkdir tmp
-
# cd tmp
-
# tar xvzf /path/linux-2.2.15.tar.gz
-
# mv linux ../linux-2.2.15
-
# cd ..
-
# rm linux
-
# ln -s linux-2.2.15 linux
-
# cd linux
-
# make mrproper
-
You can now copy your .config file here
if you have one. If the .config is from an older kernel,
do a make oldconfig. This will update it for this kernel version
and prompt you if there are new options Otherwise, you will have to set
all of the options manually in the next command.
-
# make menuconfig
Go to the networking options menu
Set "The IPv6 protocol" to 'M' (module)
Turn on "IPv6: enable EUI-64 token format"
Turn on "IPv6: disable provider based addresses"
Go back to the main menu
Exit and save changes
-
# make dep
-
# make clean
-
# make bzImage
-
# make modules
-
# make modules_install
-
Now copy /usr/src/linux/System.map to /boot/System.map-2.2.xx-ipv6
(where 2.2.xx is your kernel version)
-
Copy /usr/src/linux/arch/i386/boot/bzImage
to /boot/vmlinuz-2.2.xx-ipv6
-
Edit /etc/lilo.conf, adding a new boot selection
for the kernel (or if you are brave, set the current boot option to use
it)
-
Now reinitialize your boot sector:
-
Now reboot, remembering to boot with your new kernel
Installation of Required Software:
Thanks to Peter Bieringer (http://www.bieringer.de)
for having provided much of this information in his excellent IPv6 HowTo.
net-tools: http://www.tazenda.demon.co.uk/phil/net-tools/net-tools-1.54.tar.gz
Supplies: hostname, netstat, arp, ifconfig,
rarp, route
-
# cd /usr/src
-
# tar xvzf /path/net-tools-1.54.tar.gz
-
# cd net-tools-1.54
-
# make clean
-
# make config
-
Does your system support GNU gettext? (say
y)
-
UNIX protocol family?
(say y)
-
INET (TCP/IP) protocol family? (say y)
-
INET6 (IPv6) protocol family? (say y)
-
(choose the defaults for the next few by hitting
<ENTER>)
-
SIT (IPv6-inIPv4) support?
(say y)
-
(choose the defaults for the rest)
-
#make
-
#make install
iputils: ftp://ftp2.3dgamers.com/pub/mirrors/redhat/ftp.redhat.com/redhat/redhat-6.2/i386/RedHat/RPMS/iputils-20000121-2.i386.rpm
Supplies: arping, clockdiff, ping6,
rdisc, tracepath, tracepath6, traceroute6
If you are using RedHat
6.2, you can skip this
-
# rpm -Uvh /path/iputils-20000121-2.i386.rpm
-
You may be asked to install other prerequisite
packages first
-
If you get a message about conflicts, you can
use the --force option
Netkit: ftp://ftp.suse.com/pub/people/kukuk/ipv6/nkit-0.4.1.tar.gz
Supplies: finger, fingerd, inetd, ping,
ping6, telnet, telnetd and IPv4 only ruptime, rwho, rwhod
-
# cd /usr/src
-
# tar xvzf /path/nkit-0.4.1.tar.gz
-
# cd nkit-0.4.1
-
# ./configure
-
# make clean
-
# make
-
# make install
-
(note: this overwrites some of the files from
iputils (like ping6), but this should be OK)
xinetd: http://synack.net/xinetd/xinetd-2.1.8.8p2.tar.gz
Supplies: xinetd
(inetd replacement), itox (converts inetd.conf)
-
# cd /usr/src
-
# tar xvzf /path/xinetd-2.1.8.8p2.tar.gz
-
# cd xinetd-2.1.8.8p2
-
# ./configure --with-inet6 --with-libwrap
-
# make clean
-
# make
-
# make install
-
# cat /etc/inetd.conf | itox -daemon_dir /usr/sbin/tcpd
>/etc/xinetd.conf
-
Be sure to follow the instructions in the section
"Configuring xinetd" later in this document!
libpcap: http://www.tcpdump.org/daily/libpcap-current.tar.gz
Supplies: libpcap.a
(packet capture library; needed by tcpdump)
-
# cd /usr/src
-
# tar xvzf /path/libpcap-current.tar.gz
-
# cd libpcap-<version>
-
# ./configure --enable-ipv6
-
# make clean
-
# make
-
# make install
tcpdump: http://www.tcpdump.org/daily/tcpdump-current.tar.gz
Supplies: tcpdump (packet capture utility)
-
# cd /usr/src
-
# tar xvzf /path/tcpdump-current.tar.gz
-
# cd tcpdump-<version>
-
# ./configure --enable-ipv6
-
You must now apply some fixes before the source
will compile (these may already be fixed in later versions).
-
In Makefile, find the line that says:
-
INCLS = -I. -I$(srcdir)/missing -I$(srcdir)/linux-include
-
and append to that line:
-
-I<path to libpcap source>
(for example, append "-I/usr/src/libpcap-20000521")
-
In print-ppp.c and print-chdlc.c,
add the following line before the line that says "#include <ctype.h>"
-
In print-icmp6.c, around line #584,
replace the following line:
-
#error unknown mld6 struct
-
with:
-
void
mld6_print(register const u_char *bp)
{
printf("unknown mld6");
}
-
In print-rt6.c, add the following
line to the top of the file:
-
#define IPV6_RTHDR_TYPE_0 0
-
Now proceed with the installation:
-
# make clean
-
# make
-
# make install
Apache: http://www.apache.org/dist/apache_1.3.12.tar.gz(needs
patch at ftp://ftp.kame.net/pub/kame/misc/apache-1.3.12-v6-20000518.diff.gz)
Supplies: httpd (Apache Web Server)
-
Note: If you already have an RPM of apache
installed, you should install the ipv6 RPM from:
-
ftp://ftp.jindai.net/pub/linux/ipv6-rpm/glibc21/RPMS/i386/apache-1.3.9-1_v6.i386.rpm
-
and restart httpd (run "/etc/rc.d/init.d/httpd
restart")
-
Otherwise, do the following:
-
# cd /usr/src
-
# tar xvzf /path/apache_1.3.12.tar.gz
-
# cd apache_1.3.12
-
# gzip -d <patch-location>/apache-1.3.12-v6-20000518.diff.gz
(This may have already been done by FTP)
-
# patch -p1 < <patch-location>/apache-1.3.12-v6-20000518.diff
-
Now use the special configure.v6 script to prepare
for compilation:
-
# chmod +x configure.v6
-
# ./configure.v6 --prefix=<apache install
directory>
-
# make clean
-
# make
-
# make install
-
# /usr/local/apache/bin/apachectl start
(You must do this every time you boot)
-
Now read README.v6 for IPv6 specific changes to
configs.
Chimera: ftp://ftp.jindai.net/pub/linux/ipv6-rpm/glibc21/RPMS/i386/chimera-2.0a14-1.i386.rpm
Supplies: Chimera (an IPv6-compatible web
browser)
Don't
bother trying to compile from the source;
the Makefile will need a number of changes to work.
Instead,
settle for the RPM:
-
# rpm -Uvh /path/chimera-2.0a14-1.i386.rpm
-
# ln -s /usr/inet6/bin/chimera /usr/bin/chimera
Basic configuration:
/etc/protocols: Append new lines with IPv6 protocol
numbers if they are not there:
ipv6
41 IPv6 # IPv6
ipv6-route 43 IPv6-Route #
Routing Header for IPv6
ipv6-frag 44 IPv6-Frag
# Fragment Header for IPv6
ipv6-crypt 50 IPv6-Crypt #
Encryption Header for IPv6
ipv6-auth 51 IPv6-Auth
# Authentication Header for IPv6
ipv6-icmp 58 IPv6-ICMP
icmpv6 icmp6 # ICMP for IPv6
ipv6-nonxt 59 IPv6-NoNxt #
No Next Header for IPv6
ipv6-opts 60 IPv6-Opts
# Destination Options for IPv6
/etc/hosts:
Append new lines with special IPv6 addresses if they are not there:
::1
ip6-localhost ip6-loopback
fe00::0
ip6-localnet
ff00::0
ip6-mcastprefix
ff02::1
ip6-allnodes
ff02::2
ip6-allrouters
ff02::3
ip6-allhosts
Configuring xinetd:
/etc/xinetd.conf must be edited to support
the currently installed daemons, if it doesn't already. Look in xinetd/sample.conf
for a sample config. Specifically, the paths to your servers are most likely
wrong. For example:
/usr/sbin/tcpd/in.telnetd
should be:
/usr/sbin/in.telnetd
...and so on.
Now you will need to start the daemon. First,
make sure you have no active connections through inetd, and then:
# killall inetd
# xinetd
After a moment, xinetd will return you to the
shell and it will be running in the background. Look at /var/log/messages
to see if there were any errors. You
will need to kill inetd and start xinetd manually every time you boot now
unless you change your init scripts and rc files to do this for you.
Check that the services are running. Look at the
output of the following command for lines with ":::<well-known
port>":
# netstat -A inet6 -anp
Now test the server by doing a telnet localhost.
You
may also need to edit your /etc/hosts.allow and /etc/hosts.deny
files if it doesn't work (ie. if you get a "connection refused").