The initscripts-ipv6 Homepage

Table of Contents

General
License
Author
Credits
Mailling Lists
initscripts-ipv6-announce
initscripts-ipv6
Bug Reports
Where to get sources or binaries:
Latest version of sources:
Stable set
Testing
Available formats:
Ready to use packages for several operating systems:
Installation
Pre-install:
Installation:
Configuration:
Description of initscripts-ipv6 set
Common (distribution version independed)
Distribution version depended
Configuration of IPv6 using initscripts-ipv6 set
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-<interface-name> (general)
/etc/sysconfig/network-scripts/ifcfg-<interface-name> (LAN)
/etc/sysconfig/network-scripts/ifcfg-<interface-name> (6to4 tunneling)
/etc/sysconfig/network-scripts/ifcfg-<interface-name> (PPP-server related controls)
/etc/sysconfig/network-scripts/ifcfg-<interface-name> (PPP-client related controls)
/etc/sysconfig/network-scripts/ifcfg-<tunnelinterface-name> [tunnelinterface-name=sitX (X > 0)]
/etc/sysconfig/static-routes-ipv6
/etc/sysconfig/network-scripts/route6-<interface-name>
Testing & Debugging
Testing
Debugging
Examples
Static tunnel setup
Static tunnel with a routable segment
Freenet6 point-to-point-tunnel
Freenet6 static 48 bit prefix delegation
Hurricane Electric tunnel broker
6to4 relay tunnel router
6to4 relay tunnel router connecting one or more subnets to the IPv6 backbone
IPv6 enabled PPP server and client
ChangeLog
Current changelog
Former changelog

General

initscripts-ipv6 is a set of script and example files which should help you to configure IPv6 networking of your hosts in the same persistent manner that already like IPv4. Because IPv6 has more and other features than IPv4, this new support was developed and is currently still not full-finished. From time to time bugfixes (less) and feature enhancements (sometimes) are made.

License

The set of script files are published under the GNU GPL version 2.

Author

The author of initscripts-ipv6 is

Credits

  • Pekka Savola <pekkas at netcore dot fi> for his hard work helping on /Red Hat Linux/ integration and testing

Mailling Lists

initscripts-ipv6-announce

Reason:

sending announcements of new versions

Traffic:

very low

Postings:

only moderators are allowed to post

Information:

DeepSpace6 / maillist initscripts-ipv6

initscripts-ipv6

Reason:

discussions

Traffic:

currently very low, this list is new (started at Dec 2002)

Postings:

subscribers

Information:

DeepSpace6 / maillist initscripts-ipv6

Bug Reports

You can send bug reports to the author himself or subscribe to maillist "initscripts-ipv6" and send it to the list.

Where to get sources or binaries:

Latest version of sources:

A (mostly not current) release of my set of script files is already included in RedHat's current distributions, they are included the initscript package

  • RHL 7.2: initscripts-6.40 (2001-09-09) / initscripts-ipv6 version 2001-07-17a

  • RHL 7.3: initscripts-6.67 (2002-04-19) / initscripts-ipv6 version 2002-01-25 (2002-04-12)

  • RHL 8.0: initscripts-6.95 (2002-09-04) / initscripts-ipv6 version 2002-01-25 (2002-04-12)

How to get

Because of the amount of files and dependencies, the current scripts are no longer separately available via HTTP, they are now distributed in a tarball via FTP and for /Red Hat Linux/ also as SRPMS

Stable set

From time to time, long tested snapshots would be renamed to a stable release.

Tarball: ftp://ftp.bieringer.de/pub/linux/IPv6/initscripts/stable/

  • Contains all necessary scripts and diff files for RHL 6.2 and 7.x in a tree and also a txt-file containing documentation about the new switches

  • Usage: extract and move them into related directories, apply version related patches

SRPMS for RHL 7.x: http://www.netcore.fi/pekkas/linux/ipv6/initscripts-*.src.rpm

  • <http://www.netcore.fi/pekkas/linux/ipv6/> (stripped ones, out of sync possible)

  • Contains a complete initscript-set for RHL 7.x

  • Usage: rebuild RPM (--rebuild) and update (-F)

Testing

Between the stable releases mostly new sets for beta tests are available at ftp://ftp.bieringer.de/pub/linux/IPv6/initscripts/testing/

Available formats:

tar.gz

See above...

as RPM

Coming next...

Ready to use packages for several operating systems:

Red Hat Linux

Coming next...

Mandrake:

Linux Mandrake is very similar to Red Hat Linux.

Debian GNU/Linux:

Coming next...

Installation

Network configuration on Linux is splitted in several steps:

  1. Configuration of the built-in interfaces

  2. Global network configuration

  3. Starting of the daemons using the network

For IPv6 you have to implement in this steps the IPv6 configuration in the right way. Therefore several configuration and script files were written, which do this work. *Please, DO NOT USE following shown addresses in your case without checking!*

Pre-install:

  • IPv4 interface configuration should be done by the distribution and has to be working (not a must for an IPv6 only box)

Installation:

If you decide to use the latest available set, then

  1. Fetch tarball

  2. Extract tarball

  3. Copy script files to related directories (perhaps outdated ones will be overwrited)

  4. Apply patches to existing files using given diff files (# cat /path/to/file.diff | patch --dry-run)

  5. Look into the configuration files and copy related items to yours

Please, check example data and change it before starting!

Configuration:

See below.

Description of initscripts-ipv6 set

Common (distribution version independed)

Information files and tools:

sysconfig.txt

Description of current used switches and their meaning

readme-changes-ipv6.txt

ChangeLog

striptool4ipv6scripts

Shell script which strips away all unimportant information (e.g. debugging code and additional information), since Red Hat Linux 7.x (and similar distribution) packagers can use this like shown below and if there were no bugs left, the stripped script should work afterwards, too...

$ sh striptool4ipv6scripts network-functions-ipv6 rh7 info debug

Script files

/etc/sysconfig/network-scripts/network-functions-ipv6

Central IPv6 function library, used by several scripts for initializing IPv6 on interfaces and many more

/etc/sysconfig/network-scripts/init.ipv6-global

Global IPv6 initscript (called by hooks in /etc/rc.d/init./network) to bring up global settings and shutdown IPv6 globally at least

/etc/sysconfig/network-scripts/ifup-ipv6

IPv6 related interface initialization script for normal interfaces (called by hook in /etc/sysconfig/network-scripts/ifup)

/etc/sysconfig/network-scripts/ifdown-ipv6

IPv6 related interface shutdown script for normal interfaces (called by hook in /etc/sysconfig/network-scripts/ifdown)

/etc/sysconfig/network-scripts/ifup-sit

IPv6 related interface initialization script for tunnel interfaces (called by hook in /etc/sysconfig/network-scripts/ifup)

/etc/sysconfig/network-scripts/ifdown-sit

IPv6 related interface shutdown script for tunnel interfaces (called by hook in /etc/sysconfig/network-scripts/ifdown)

/etc/ppp/ip-up.ipv6to4

Script for dynamic 6to4 tunneling setup called by the related PPP script (/etc/ppp/ip-up)

/etc/ppp/ip-down.ipv6to4

Scripts for dynamic 6to4 tunneling called by the related PPP script (/etc/ppp/ip-down)

/etc/ppp/ipv6-up

Script for IPv6-PPP connection (called by ppp-daemon)

/etc/ppp/ipv6-down

Script for IPv6-PPP connection (called by ppp-daemon)

Configuration files (examples):

/etc/sysconfig/network.diff

Global IPv6 switches

/etc/sysconfig/static-routes-ipv6

Static IPv6 routes (perhaps going obsolet in the future)

/etc/sysconfig/network-scripts/ifcfg-eth0

Ethernet interface configuration

/etc/sysconfig/network-scripts/ifcfg-isdn0

ISDN link using HDLC/IP

/etc/sysconfig/network-scripts/ifcfg-sit1

Static tunnel interface (unnumbered tunnel)

/etc/sysconfig/network-scripts/ifcfg-sit2

Static tunnel interface (numbered tunnel - "Freenet6")

/etc/sysconfig/network-scripts/ifcfg-sit3

Static tunnel interfaces (numbered tunnel - "Hurricane Electric")

/etc/sysconfig/network-scripts/ifcfg-sit4

Static tunnel interfaces (numbered tunnel, local IPv4 is specified)

/etc/sysconfig/network-scripts/ifcfg-ppp0

6to4-tunnel PPP interface

/etc/sysconfig/network-scripts/ifcfg-ppp1

IPv6 enabled PPP interface, ppp-server side

/etc/sysconfig/network-scripts/ifcfg-ppp2

IPv6 enabled PPP interface, ppp-client side

/etc/sysconfig/network-scripts/chat-ppp2

Chat-script for an analog modem

/etc/radvd.conf

Configuration file for radvd and 6to4

Script files for testing

/usr/sbin/test_ipv6_installation

Test script, to test your IPv6 function library for full working with your IPv6 kernel

Distribution version depended

/etc/sysconfig/network-scripts/ifup-isdn

IPv6 related interface initialisation script for ISDN interfaces

/etc/sysconfig/network-scripts/ifdown-isdn

IPv6 related interface shutdown script for ISDN interfaces

Red Hat Linux 6.2

This version has no IPv6 support, so it must be implemented completly (but it's better to use a more current version)

/etc/rc.d/init.d/network.diff

Diff for main network initialization scripts, add hook for IPv6

/etc/sysconfig/network-scripts/ifup.diff

Diff for main interface initialization scripts, add hook for IPv6

/etc/sysconfig/network-scripts/ifdown.diff

Diff for main interface shuitdown scripts, add hook for IPv6

Red Hat Linux 7.1

This version has already IPv6 support, but based on an older version of set of scripts

/etc/rc.d/init.d/network.diff

Diff for main network initialization scripts, add hook for IPv6 (new feature)

/etc/sysconfig/network-scripts/ifup.diff

Diff for main interface initialization scripts, move hook for IPv6 (bugfix)

Red Hat Linux 7.2

This version has already IPv6 support, but based on an older version of set of scripts

/etc/sysconfig/network-scripts/ifup-ippp.diff

Diff for IPv6 enabling of existing ISDN setup script

/etc/sysconfig/network-scripts/ifdown-ippp.diff

Diff for IPv6 enabling of existing ISDN setup script

Configuration of IPv6 using initscripts-ipv6 set

See also sysconfig.txt in mostly newest version.

/etc/sysconfig/network

Controls global IPv6 configuration

NETWORKING_IPV6

yes

Enable global IPv6 initialization

no

Disable global IPv6 initialization [default]

IPV6FORWARDING

yes

Control IPv6 forwarding (box acting as router)

no

Disable global IPv6 forwarding [default]

IPV6_AUTOCONF

Control IPv6 autoconfiguration globally (e.g. accecpt router advertisements)

yes

Enable global IPv6 autoconfiguration (only, if global forwarding is disabled) [default]

no

Disable global IPv6 autoconfiguration (only, if global forwarding is disabled)

IPV6_AUTOTUNNEL

Control IPv6 automatic tunneling (device sit0)

yes

Enable automatic IPv6 tunneling

no

Disable automatic IPv6 tunneling [default]

IPV6_DEFAULTGW [optional]

Control default route setup

<ipv6address[%interface]>

Specifying gateway address

<interface>

Specifying gateway device only

IPV6_RADVD_PIDFILE [optional]

Location of radvd's PID file (needed, if default isn't valid)

<pid-file>

Specify filename

/etc/sysconfig/network-scripts/ifcfg-<interface-name> (general)

Controls IPv6 configuration per interface <interface>

IPV6INIT

yes

Enable IPv6 initialization of this interface

no

Disable IPv6 initialization of this interface [default]

/etc/sysconfig/network-scripts/ifcfg-<interface-name> (LAN)

IPV6ADDR [optional for hosts, mostly required for routers]

<ipv6address[/prefixlength]>

Specify a basic (not link local) IPv6 address and prefix for this interface

IPV6ADDR_SECONDARIES [optional]

<ipv6address[/prefixlength]>[ <ipv6address[/prefixlength]>[ ...]]

Specify optional additional IPv6 addresses and their prefix length for this interface

There are also ranges supported for setup a bunch of addresses, e.g.

3ffe:ffff::1f-2a

will set a range from "3ffe:ffff::1f" to "3ffe:ffff::2a"

IPV6_MTU [optional]

<mtu>

Specify the MTU of a link, must be greater or equal to 1280.

IPV6_AUTOCONF

Control accepting of RAs and redirects on this interface (overwrite global setting)

yes

Accept RAs and redirects [default, if forwarding is off]

no

Do not accept RAs and redirects [default, if forwarding is on]

IPV6_ROUTER

Control sending of router advertisements and isRouter on neigbor advertisements

yes

Send RAs and set isRouter on NAs [default, if forwarding is on]

no

Do not send RAs and unset isRouter on NAs [default, if forwarding is off]

IPV6_PRIVACY

Controls IPv6 privacy per interface.

leightweight

change MAC address on boot to a random one (support since 2003-02-08, patch for /etc/sysconfig/network-scripts/ifup required)

rfc3041

like defined in RFC 3041, as of Feb. 2003 only usable with USAGI extension

/etc/sysconfig/network-scripts/ifcfg-<interface-name> (6to4 tunneling)

Control 6to4 tunneling through this interface (must be external one).

IPV6TO4INIT

yes

Enable 6to4 initialization of this interface

no

Disable 6to4 initialization of this interface [default]

IPV6TO4_RELAY

<ipv4address>

Specifiy 6to4 relay [default is 192.88.99.1]

IPV6TO4_IPV4ADDR [optional]

<ipv4address>

Specify 6to4 local address overwrite (optional, in case of NAT or other special scenarios) * [optional, for e.g. NAT issues]

IPV6TO4_SECONDARY_SUFFICES [optional]

<suffix>[ <suffix>[ ...]]

Specify additional prefixes for generated local 6to4 addresses (optional) *

IPV6TO4_ROUTING

<interface-networkpart/prefixlength>[ <interface-networkpart/prefixlength>[ ...]]

Information for setup local subnetting (sorry about that strange format...)

IPV6_CONTROL_RADVD [optional]

yes

Enable radvd triggering

IPV6TO4_MTU [optional]

<mtu>

Specify the MTU of a 6to4 tunnel link, must be greater or equal to 1280. Default: MTU of master device - 20

/etc/sysconfig/network-scripts/ifcfg-<interface-name> (PPP-server related controls)

IPV6_CONTROL_RADVD [optional]

yes

Enable radvd triggering

/etc/sysconfig/network-scripts/ifcfg-<interface-name> (PPP-client related controls)

IPV6_DEFAULTDEV

<interface>

Default route through this device

/etc/sysconfig/network-scripts/ifcfg-<tunnelinterface-name> [tunnelinterface-name=sitX (X > 0)]

Control a dedicated IPv6-in-IPv4 tunnel interface

IPV6_TUNNELNAME [optional]

<name>

Specify alternate name for tunnel, can be useful

IPV6TUNNELIPV4

<ipv4address>

Specify the IPv4 address of the foreign tunnel endpoint [required]

IPV6TUNNELIPV4LOCAL [optional]

<ipv4address>

Specify the IPv4 address of the local tunnel endpoint (for nodes with more than one IPv4 address on an interface) [optional]

IPV6ADDR

<ipv6address[/prefixlength]>

Specify the local IPv6 address of a numbered IPv6-in-IPv4 tunnel # Local address of * a numbered tunnel [optional]

IPV6_MTU [optional]

<mtu>

Specify the MTU of a tunnel

/etc/sysconfig/static-routes-ipv6

Global definitions of static routes (perhaps the support is going obsolete in the future). Normal default gateway or device shouldn't be specified here, use options DEFAULTGW or DEFAULTDEV instead.

Example for IPv6 static routes per interface

#Device   IPv6 network to route   IPv6 gateway address
eth0      fec0:0:0:2::/64         fec0:0:0:1:0:0:0:20
eth0      2000::/3                3ffe:ffff:0000:f102:0:0:0:1

Example for IPv6 static routes per tunnel

# Virtual tunnel interface   IPv6 network to route through
sit1                         2000::/3

fdfd

/etc/sysconfig/network-scripts/route6-<interface-name>

This is a newer support of static routes per interface. Contains lines that are arguments to "/sbin/ip -6 route add"

Examples

site local route for network fec0:0:0:2::/64 via gateway fec0:0:0:1:0:0:0:20 through device eth0:

fec0:0:0:2::/64 via fec0:0:0:1:0:0:0:20 dev eth0

6to4 route for network 3ffe:ffff:1::/48 via gateway ::192.168.1.2 through device tun6to4:

3ffe:ffff:1::/48 via ::192.168.1.2 dev tun6to4 

Testing & Debugging

Testing

You can restart the whole network configuration by executing

# /etc/rc.d/init.d/network restart

Normally, you're not able to see what's really happened, because the output is written to syslog (Red Hat Linux: facility: local7, file: /var/log/boot.log). Therefore it's always a good idea to look at the output on another virtual console with

# tail -f /var/log/boot.log

Debugging

Debugging functions contained by library network-functions-ipv6

You can call this functions directly like shown below, but check for required options first:

# source /etc/sysconfig/network-scripts/network-functions-ipv6; ipv6_exec_sysctl -w net.ipv6.conf.eth0.use_tempaddr=2

It's also possible to increas the debug level, if library contain debug code (normally not, if installed by distribution).

Check for containing debug code:

# grep -c DEBUG_IPV6 /etc/sysconfig/network-scripts/network-functions-ipv6
74 

If the result is "0", than no debug code is included. Solution: replace current library file by an unstripped version (e.g. from tarball).

# source /etc/sysconfig/network-scripts/network-functions-ipv6; DEBUG_IPV6=511 ipv6_exec_sysctl -w net.ipv6.conf.eth0.use_tempaddr=2
EXE: /sbin/sysctl -w net.ipv6.conf.eth0.use_tempaddr=2
DRY: /sbin/sysctl -w net.ipv6.conf.eth0.use_tempaddr=2 

The variable DEBUG_IPV6 is bitwise used, see description below the changelog fo unstripped library for more information which value is related to what.

Debugging configuration scripts

You are also able to debug the configuration scripts itself, in most cases it's enough to use an unstripped library version. E.g.

# DEBUG=511 /etc/sysconfig/network-scripts/ifup-ipv6 eth0

Examples

This examples are overtaken from the former webpage, pls. inform if mistakes or failed function occured.

Static tunnel setup

This section contains examples about a setup of static tunnels to different tunnel providers.

Note: static tunnels should be configured on device names sit/X/ with (/X/>0). Do not use sit0, because it is a reserved device and shouldn't be used for such cases.

------------------------------------------------------------------------

Static tunnel with a routable segment

Example based on test at 2002-03-15.

Data you got from a static tunnel server administrator (here is an example shown):

  • IPv6 remote static tunnel IPv4 address (server side): 1.2.3.4

  • To local routed IPv6 address space: 3ffe:ffff:0000:f100::/56

Common known data:

  • Global routable IPv6 address space: 2000::/3

What does this data mean and where to put the values in the configuration files:

Name

Value(s)

Explanation

Which file is related

Where to put this value

IPv6 remote static tunnel IPv4 address (server side)

1.2.3.4

The IPv4 address of a remote tunnel server

e.g. ifcfg-sit1

IPV6TUNNELIPV4="1.2.3.4"

To local routed IPv6 segment

3ffe:ffff:0000:1234::/56

An IPv6 address space which will be routed to you

e.g. local interface , RAdvD, routing configuration

e.g. /etc/radvd.conf, segmented per device, other local hosts also e.g. IPV6ADDR="3ffe:ffff:0000:f100::1/56"

Global routable IPv6 address space

2000::/3

IPv6 address space, which should be routed through this tunnel

/etc/sysconfig/network

IPV6_DEFAULTDEV="sit1"

Configuration files result in:

  • /etc/sysconfig/network-scripts/ifcfg-sit1

DEVICE="sit1"
BOOTPROTO="none"
ONBOOT="yes"
IPV6INIT="yes"
IPV6TUNNELIPV4="1.2.3.4"
IPV6ADDR="3ffe:ffff:0000:f100::1/56"

  • /etc/sysconfig/network

IPV6_DEFAULTDEV="sit1"

Check:

  • Tunnel setup

# ip tunnel
sit0: ipv6/ip remote any local any ttl 64 nopmtudisc
sit1: ipv6/ip remote 1.2.3.4 local any ttl 64
  • Interface

# ifconfig sit1
sit1 Link encap:IPv6-in-IPv4
     inet6 addr: fe80::something/10 Scope:Link
     inet6 addr: 3ffe:ffff:0:f100::1/56 Scope:Global
     UP POINTOPOINT RUNNING NOARP MTU:1472 Metric:1
     RX packets:0 errors:0 dropped:0 overruns:0 frame:0
     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0
  • Routing

# route -A inet6 |grep sit1
2000::/3  :: U    1 0 0 sit1
fe80::/10 :: UA 256 0 0 sit1
ff00::/8  :: UA 256 0 0 sit1

Freenet6 point-to-point-tunnel

Example based on test at 2001-03-13.

Data you got from Freenet6 (here is an example shown):

This perl script is setup with exacts values :

Your IPv6 address : 3ffe:b00:c18:1fff:0:0:0:a1f
Freenet6 IPv6 address (server side) : 3ffe:b00:c18:1fff:0:0:0:a1e
Freenet6 IPv4 address (server side) : 206.123.31.102
Your IPv4 address : 62.155.142.69

Common known data:

  • Global routable IPv6 address space: 2000::/3

What does this data mean and where to put the values in the configuration files:

Name

Value(s)

Explanation

Which file is related

Where to put this value

Your IPv6 address

3ffe:b00:c18:1fff:0:0:0:a1f

Freenet6 assign only one IPv6 address to you, not more!

e.g. ifcfg-sit2

IPV6ADDR="3ffe:b00:c18:1fff:0:0:0:a1f/127"

Freenet6 IPv6 address (server side)

3ffe:b00:c18:1fff:0:0:0:a1e

They also assigned a relating IPv6 address on their tunnel server (it's now a point-to-point IPv6 link)

Value is locally not needed (but for easier ping6 tests you can put it in /etc/hosts)

Freenet6 IPv4 address (server side)

206.123.31.102

The IPv4 address of their tunnel server

e.g. ifcfg-sit2

IPV6TUNNELIPV4="206.123.31.102"

Your IPv4 address

62.155.142.69

Your global IPv4 address, static or dynamically assigned

interface or dial-up configuration

Value must be already assigned static or dynamically, otherwise no Internet connection is possible

Global routable IPv6 address space

2000::/3

IPv6 address space, which should be routed through this tunnel

/etc/sysconfig/network

IPV6_DEFAULTDEV="sit1"

Configuration files result in:

  • /etc/sysconfig/network-scripts/ifcfg-sit2

DEVICE="sit2"
BOOTPROTO="none"
ONBOOT="yes"
IPV6INIT="yes"
IPV6TUNNELIPV4="206.123.31.102"
IPV6ADDR="3ffe:b00:c18:1fff:0:0:0:a1f/127"
  • /etc/sysconfig/network

IPV6_DEFAULTDEV="sit2"

Check:

  • Tunnel setup

# ip tunnel
sit0: ipv6/ip remote any local any ttl 64 nopmtudisc
sit2: ipv6/ip remote 206.123.31.102 local any ttl 64
  • Interface

# ifconfig sit2
sit2 Link encap:IPv6-in-IPv4
     inet6 addr: fe80::3e9b:8e45/10 Scope:Link
     inet6 addr: fe80::c0a8:101/10 Scope:Link
     inet6 addr: 3ffe:b00:c18:1fff::a1f/127 Scope:Global
     UP POINTOPOINT RUNNING NOARP MTU:1472 Metric:1
     RX packets:10 errors:0 dropped:0 overruns:0 frame:0
     TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0
  • Routing

# route -A inet6 |grep sit2
3ffe:b00:c18:1fff::a1e/127 :: UA 256 4 0 sit2
2000::/3                   :: U    1 0 0 sit2
fe80::/10                  :: UA 256 0 0 sit2
ff00::/8                   :: UA 256 0 0 sit2

Freenet6 static 48 bit prefix delegation

Example based on suggestions got from: Ates Haner <ates # mail.utexas.edu> (not tested by me further on)

Data you got from Freenet6 <http://www.freenet6.net/>: (here is an /example/ shown):

This perl script is setup with exacts values :

Your IPv6 address : 3ffe:b000:c18:1fff:0:0:0:a1f
Freenet6 IPv6 address (server side) : 3ffe:b000:c18:1fff:0:0:0:a1e
Freenet6 IPv4 address (server side) : 206.123.31.102
Your IPv4 address : 62.155.142.69
Your delegated IPv6 prefix: 3ffe:XXXX:XXXX::/48

Common known data:

  • Your network(s) derived from above: 3ffe:XXXX:XXXX:AAAA::/64, 3ffe:XXXX:XXXX:BBBB::/64, etc.

  • Global routable IPv6 address space: 2000::/3

What does this data mean and where to put the values in the configuration files:

Name

Value(s)

Explanation

Which file is related

Where to put this value

Your IPv6 address

3ffe:b00:c18:1fff:0:0:0:a1f

Freenet6 assigns you a 48 bit prefix

e.g. ifcfg-sit2

IPV6ADDR="3ffe:b00:c18:1fff:0:0:0:a1f/127"

Freenet6 IPv6 address (server side)

3ffe:b00:c18:1fff:0:0:0:a1e

They also assigned a relating IPv6 address on their tunnel server (it's now a point-to-point IPv6 link)

Value is locally not needed (but for easier ping6 tests you can put it in /etc/hosts)

Freenet6 IPv4 address (server side)

206.123.31.102

The IPv4 address of their tunnel server

e.g. ifcfg-sit2

IPV6TUNNELIPV4="206.123.31.102"

Your IPv4 address

62.155.142.69

Your global IPv4 address, static or dynamically assigned

interface or ial-up configuration

Value must be already assigned static or dynamically, otherwise no Internet connection is possible

Global routable IPv6 address space

2000::/3

IPv6 address space, which should be routed through this tunnel

/etc/sysconfig/network

IPV6_DEFAULTDEV="sit1"

Address for interface A

3ffe:XXXX:XXXX:AAAA:whatever

Choose a local 64 bit prefix and an IPv6 address for related interface

e.g. ifcfg-ethA

IPV6ADDR="3ffe:XXXX:XXXX:AAAA:whatever/64"

Address for interface B

3ffe:XXXX:XXXX:BBBB:whatever

Choose a local 64 bit prefix and an IPv6 address for related interface

e.g. ifcfg-ethB

IPV6ADDR="3ffe:XXXX:XXXX:BBBB:whatever/64"

Configuration files result in:

  • /etc/sysconfig/network-scripts/ifcfg-sit2

(to be filled...)

  • /etc/sysconfig/network

IPV6_DEFAULTDEV="sit2"

RAdvD example part:

  • /etc/radvd.conf

interface ethA
{
       AdvSendAdvert on;
       prefix 3ffe:XXXX:XXXX:AAAA::/64
       {
               AdvOnLink on;
               AdvAutonomous on;
       };
};

interface ethB 
{ 
       AdvSendAdvert on;
       prefix 3ffe:XXXX:XXXX:BBBB::/64
       { 
               AdvOnLink on;
               AdvAutonomous on;
       };
};

Check:

  • Tunnel setup

(to be filled...)

  • Interface

(to be filled...)

  • Routing

(to be filled...)

Recommendations:

  • It's recommend to disabling the script in the freenet6 client that actually sets up the tunnel (template/linux.sh) and use this setup files

ToDo:

  • Script which automagically runs the Freenet6 script and place all values into related setup files and restart/reconfigure interfaces.

Hurricane Electric tunnel broker

Example based on test at 2001-03-13.

Data you got from Hurricane Electric: (here is an /example/ shown):

Account: *****
Last Active: Never (tested via ipv6 ping every half hour)
Full name: *****
Company: *****
E-mail address: *****
Broker IPv4 tunnel address: 64.71.128.26
Broker IPv6 link address: 3FFE:1200:3028:FF01::2e6/127
Your IPv4 tunnel address: 62.155.142.69
Your IPv6 link address: 3FFE:1200:3028:FF01::2e7/127

If you also require an IPv6 network:

Your IPv6 network prefix: 3FFE:1200:3028:8173::/64

Common known data:

  • Global routable IPv6 address space: 2000::/3

What does this data mean and where to put the values in the configuration files:

Name

Value(s)

Explanation

Which file is related

Where to put this value

Your IPv4 tunnel address

3FFE:1200:3028:FF01::2e7/127

In this mode, only one IPv6 address is provided to you.

e.g. ifcfg-sit3

IPV6ADDR="3FFE:1200:3028:FF01::2e7/127"

Broker IPv6 link address

3FFE:1200:3028:FF01::2e6/127

They also assigned a relating IPv6 address on their tunnel server (it's now a point-to-point IPv6 link)

Value is locally not needed (but for easier ping6 tests you can put it [without prefix length] in /etc/hosts)

Broker IPv4 tunnel address

64.71.128.26

The IPv4 address of their tunnel server

e.g. ifcfg-sit3

IPV6TUNNELIPV4="64.71.128.26"

Your IPv4 address

62.155.142.69

Your global IPv4 address, static or dynamically assigned

interface or ial-up configuration

Value must be already assigned static or dynamically, otherwise no Internet connection is possible

Your IPv6 network prefix

3FFE:1200:3028:8173::/64

An IPv6 address space which will be routed to you

e.g. local interface, RAdvD, routing configuration

e.g. /etc/radvd.conf, segmented per device, other local hosts

Global routable IPv6 address space

2000::/3

IPv6 address space, which should be routed through this tunnel

/etc/sysconfig/network

IPV6_DEFAULTDEV="sit1"

Configuration files result in:

  • /etc/sysconfig/network-scripts/ifcfg-sit3

DEVICE="sit3"
BOOTPROTO="none"
ONBOOT="yes"
IPV6INIT="yes"
IPV6TUNNELIPV4="64.71.128.26"
IPV6ADDR="3FFE:1200:3028:FF01::2e7/127"
  • /etc/sysconfig/network

IPV6_DEFAULTDEV="sit3"

Check:

  • Tunnel setup

# ip tunnel
sit0: ipv6/ip remote any local any ttl 64 nopmtudisc
sit3: ipv6/ip remote 64.71.128.26 local any ttl 64
  • Interface

# ifconfig sit3
sit3 Link encap:IPv6-in-IPv4
     inet6 addr: 3ffe:1200:3028:ff01::2e7/127 Scope:Global
     inet6 addr: fe80::3e9b:8e45/10 Scope:Link
     inet6 addr: fe80::c0a8:101/10 Scope:Link
     UP POINTOPOINT RUNNING NOARP MTU:1472 Metric:1 
     RX packets:6 errors:0 dropped:0 overruns:0 frame:0
     TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0
  • Routing

# route -A inet6 | grep sit3
3ffe:1200:3028:ff01::2e6/127 :: UA 256 3 0 sit3
2000::/3                     :: U    1 0 0 sit3
fe80::/10                    :: UA 256 0 0 sit3
ff00::/8                     :: UA 256 0 0 sit3

6to4 relay tunnel router

Example based on test at 2001-03-13, reviewed on 2003-02-10.

Information about 6to4 relay tunnel routers are given here: http://www.kfu.com/~nsayer/6to4/

Data you got from: (here is an /example/ shown):

IPv4 address of remote 6to4 relay router: 192.88.99.1

Common known data:

  • Global routable IPv6 address space: 2000::/3

  • Your global accessable IPv4 address: 62.155.142.69

What does this data mean and where to put the values in the configuration files:

Name

Value(s)

Explanation

Which file is related

Where to put this value

IPv4 address of remote 6to4 relay router

194.95.108.191

The IPv4 address of a 6to4 relay tunnel router

e.g. ifcfg-eth0

IPV6TO4_RELAY="194.95.108.191"

Your global accessable IPv4 address

62.155.142.69

Global accessable IPv4 address of your host

e.g. ifcfg-eth0

IPV6TO4_IPV4ADDR="62.155.142.69" - Only needed, if NAT, PPP or other scenarios do not let extract a global IPv4 address automatically from the interface configuration

Your IPv4 address

62.155.142.69

Your global IPv4 address, static or dynamically assigned

interface or ial-up configuration

Value must be already assigned static or dynamically, otherwise no Internet connection is possible

Global routable IPv6 address space

2000::/3

IPv6 address space, which should be routed through this tunnel

/etc/sysconfig/network

IPV6_DEFAULTDEV="tun6to4"

The IPv6to4 address in shown example 2002:3e9b:8e45::1/16 will be calculated automatically by the script. Also note that 6to4 tunneling is done by creating a tunnel interface with the special name "tun6to4"

Configuration files result in:

  • /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
BOOTPROTO="none"
IPADDR="192.168.1.1"
NETMASK="255.255.255.0"
ONBOOT="yes"
IPV6INIT="yes"
IPV6FORWARDING="yes"
IPV6TO4INIT="yes"
IPV6TO4_RELAY="192.88.99.1"
IPV6TO4_IPV4ADDR="62.155.142.69"
  • /etc/sysconfig/network

IPV6_DEFAULTDEV="tun6to4"

Check:

  • Tunnel setup

# ip tunnel
sit0: ipv6/ip  remote any  local any  ttl 64  nopmtudisc
tun6to4: ipv6/ip  remote any  local 62.155.142.69  ttl 64

  • Interface

# ip addr show tun6to4
17: tun6to4@NONE: <NOARP,UP> mtu 1480 qdisc noqueue
    link/sit local 62.155.142.69 brd 0.0.0.0
    inet6 2002:3e9b:8e45::1/16 scope global 
  • Routing

# ip -6 route show dev tun6to4
::/96 via ::  metric 256  mtu 1480 advmss 1420
2002::/16  proto kernel  metric 256  mtu 1480 advmss 1420
2000::/3 via ::192.88.99.1  metric 1  mtu 1472 advmss 1412
fe80::/10  proto kernel  metric 256  mtu 1480 advmss 1420
ff00::/8  proto kernel  metric 256  mtu 1480 advmss 1420

6to4 relay tunnel router connecting one or more subnets to the IPv6 backbone

If you are enable to connect your tunnel server via 6to4 to the IPv6 backbone like described earlier on this page (Example 6to4 Relay Tunnel), it's because of the assigned /48 prefix also possible, to route one or more local connected subnets, too.

Once you have decided which site prefixes you want to use, you can enstablish local routes of this prefixes through dedicated interfaces. E.g. with a choosen site prefix

0:0:0:f101::0/64

on eth0 run

# route -A inet6 add 2002:d950:2485:f101::0/64 dev eth0

To distribute the prefix, use e.g. radvd. Now clients on this link should also be able to connect to the IPv6 backbone.

In dial-up scenarios with dynamic local IPv4 address assignment, the described command must be executed every time and also the tunnel must be reconfigured. Therefore I create some scripts which do the job automatically. Also, with a new release of radvd (currently available at http://v6web.litech.org/radvd/), which support automatic recalculation of 6to4 prefixes, you can distribute the new prefix to local LANs.

Scripts files:

/etc/ppp/ip-up.ipv6to4

Script for called by the related PPP script /etc/ppp/ip-up{.local}

/etc/ppp/ip-down.ipv6to4

Script for called by the related PPP script /etc/ppp/ip-down{.local}

/etc/sysconfig/network-scripts/ifcfg-ppp0

Sample interface configuration file for interface ppp0

/etc/radvd.conf

Sample configuration file for radvd

Configuration:

  • /etc/sysconfig/network-scripts/ifcfg-ppp0

IPV6TO4INIT="yes"                  # Enable 6to4 initialization
IPV6TO4_IPV4ADDR="<ipv4addr>       # Specify special local IPv4 address (only needed behind a NAT gateway)
IPV6TO4_RELAY="<ipv4addr>          # Remote IPv6to4 relay address
IPV6TO4_ROUTING="eth0-:f101::0/64 eth1-:f102::0/64" # Information for setup local subnetting
IPV6_CONTROL_RADVD="yes"           # Enable radvd triggering
IPV6_RADVD_PIDFILE="</path/to/file>" # PID file of radvd for sending signals
  • /etc/radvd.conf

In a prefix section, add a line like

              Base6to4Interface ppp0;
  • /etc/ppp/ip-up.local

Add a calling line like

/etc/ppp/ip-up.ipv6to4 $1 >>/var/log/ppp-ipv6to4.log 2>&1
  • /etc/ppp/ip-down.local

Add a calling line like

/etc/ppp/ip-down.ipv6to4 $1 >>/var/log/ppp-ipv6to4.log 2>&1

Testing:

Trigger a dial and take a look into the new created logfile /var/log/ppp-ipv6to4.log

More information coming perhaps next...

IPv6 enabled PPP server and client

On modern installation it's also possible to run IPv6 over a PPP link.

Requirements:

  1. IPv4 over PPP must be already working (please send no questions about how to do that!)

  2. IPv6 enabled ppp package

  3. For automagically distribution of an IPv6 prefix a newer radvd

Script files:

/etc/ppp/ipv6-up

Script called by pppd

/etc/ppp/ipv6-down

Script called by pppd

/etc/sysconfig/network-scripts/ifcfg-ppp1

Sample interface configuration file for server

/etc/sysconfig/network-scripts/ifcfg-ppp2

Sample interface configuration file for client

/etc/sysconfig/network-scripts/chat-ppp2

Sample chat script to run ifup/ifdown ppp on client side

Known working features and limitations:

ppp-2.4.1

  • Assign of automagically generated link-local addresses on client and server works: *ok*

  • Assign of defined link-local addresses on client and server works: *ok*

  • Manually (or scripted) assign of static IPv6 addresses works after link is up: *ok*

  • Server is not able to assign a global configurable prefix to ppp-client: *missing feature*, workaround: after IPv6 goes up on link, the by pppd called script ipv6-up can trigger radvd to distribute prefixes over that link, too (tested, works)

  • Server is not able to assign a per user definable prefix to ppp-client unlike IPv4: *missing feature*

Configuration:

  • On PPP client, you have to enable IPv6 options to enable the link for IPv6, e.g.

PPPOPTIONS="debug nomp ipcp-accept-local ipcp-accept-remote ipv6cp-accept-local ipv6ipv6cp-use-ipaddr"
  • On PPP server, you have to enable IPv6 options to enable the link for IPv6, e.g. add in the ppp-server's option file

+ipv6
Testing:

On PPP client

Run trigger for PPP device

# ifup ppp2

Modem is dialing, connection is coming up. Succesful interface configuration:

# ifconfig ppp2
ppp2 Link encap:Point-to-Point Protocol
     inet addr:1.2.3.2 P-t-P:1.2.3.1 Mask:255.255.255.255 
     inet6 addr: fe80::9037:7088:7774:5647/10 Scope:Link
     UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 
     RX packets:7 errors:0 dropped:0 overruns:0 frame:0
     TX packets:9 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3
     RX bytes:124 (124.0 b) TX bytes:226 (226.0 b) 

On PPP server

mgetty is waiting for incoming call, AutoPPP catch the login, Example of a successful connection (in debug mode, auth is CHAP):

      pppd[3421]: pppd 2.4.1 started by a_ppp, uid 0
      pppd[3421]: using channel 5
      pppd[3421]: Using interface ppp1
      pppd[3421]: Connect: ppp1 <--> /dev/ttyS0
      pppd[3421]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MD5> <magic 0x69c2ec5> <pcomp> <accomp>]
      pppd[3421]: rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x4e2c2d7b> <pcomp> <accomp>]
      pppd[3421]: sent [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x4e2c2d7b> <pcomp> <accomp>]
      pppd[3421]: rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <auth chap MD5> <magic 0x69c2ec5> <pcomp> <accomp>]
      pppd[3421]: sent [CHAP Challenge id=0x1 <d0aec6b0eb16689c8e0b7265d191e86f>, name = "server"]
      pppd[3421]: rcvd [CHAP Response id=0x1 <5f8d2896311a003e499f85596418dec5>, name = "account"]
      pppd[3421]: sent [CHAP Success id=0x1 "Welcome to dialingateway."]
      pppd[3421]: sent [IPCP ConfReq id=0x1 <addr 1.2.3.1> <compress VJ 0f 01>]
      pppd[3421]: sent [IPV6CP ConfReq id=0x1 <addr fe80::d496:9425:e3a7:0815>]
      pppd[3421]: sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
      pppd[3421]: CHAP peer authentication succeeded for account
      pppd[3421]: rcvd [IPCP ConfReq id=0x1 <addr 0.0.0.0> <compress VJ 0f 01> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
      pppd[3421]: sent [IPCP ConfNak id=0x1 <addr 1.2.3.2> <ms-dns1 1.2.1.1> <ms-dns3 1.2.1.1>]
      pppd[3421]: rcvd [IPV6CP ConfReq id=0x1 <addr fe80::9037:7088:7774:5647>]
      pppd[3421]: sent [IPV6CP ConfAck id=0x1 <addr fe80::9037:7088:7774:5647>]
      pppd[3421]: rcvd [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
      pppd[3421]: sent [CCP ConfAck id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
      pppd[3421]: rcvd [IPCP ConfAck id=0x1 <addr 1.2.1.1> <compress VJ 0f 01>]
      pppd[3421]: rcvd [IPV6CP ConfAck id=0x1 <addr fe80::d496:9425:e3a7:0815>]
      pppd[3421]: local  LL address fe80::d496:9425:e3a7:0815
      pppd[3421]: remote LL address fe80::9037:7088:7774:5647
      pppd[3421]: Script /etc/ppp/ipv6-up started (pid 26264)
      pppd[3421]: rcvd [CCP ConfAck id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
      pppd[3421]: Deflate (15) compression enabled
      pppd[3421]: Script /etc/ppp/ipv6-up finished (pid 26264), status = 0x0
      pppd[3421]: rcvd [IPCP ConfReq id=0x2 <addr 1.2.3.2> <compress VJ 0f 01> <ms-dns1 1.2.1.1> <ms-dns3 1.2.1.1>]
      pppd[3421]: sent [IPCP ConfAck id=0x2 <addr 1.2.3.2> <compress VJ 0f 01> <ms-dns1 1.2.1.1> <ms-dns3 1.2.1.1>]
      pppd[3421]: local  IP address 1.2.1.1
      pppd[3421]: remote IP address 1.2.4.2
      pppd[3421]: Script /etc/ppp/ip-up started (pid 26265)
      pppd[3421]: Script /etc/ppp/ip-up finished (pid 26265), status = 0x0
  • Succesful interface configuration:

# ifconfig ppp1
ppp1 Link encap:Point-to-Point Protocol
     inet addr:1.2.3.1 P-t-P:1.2.3.2 Mask:255.255.255.255
     inet6 addr: fe80::d496:9425:e3a7:815/10 Scope:Link 
     UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
     RX packets:10 errors:0 dropped:0 overruns:0 frame:0
     TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3
     RX bytes:274 (274.0 b) TX bytes:124 (124.0 b)

ChangeLog

Current changelog

2003-02-11/PB

Minor enhancements

2003-02-10/PB

Creating a LyX document by importing the content from old website

Former changelog

This changelog was copied from the old HTML-only website.

Version 3.19/20010522b:

  • Add new switches to control autoconfiguration per device

  • Take care about different meaning of the forwarding switch

  • Global IPv6 initscript (called from hooks in /etc/rc.d/init./network) to bring up global settings and shutdown IPv6 globally at least

  • Remove redundant information on page

Version 3.19/20010731:

  • sit-interfaces: new optional option IPV6TUNNELIPV4LOCAL

  • interfaces: new optional option IPV6_MTU

  • IPV6TO4_RELAY can now contain a 6to4 address

  • Some reviews and minor enhancements, see readme-changes-ipv6.txt included in the taball for details

Version 3.20/20010828a:

  • Add support for easy default route setup (currently using 2000::/3 because ::/0 is still not working)

  • Enable ifup|down-isdn (taken from RHL beta Roswell, also working on RHL 6.2) for IPv6, now you can run IPv6 over HDLC/IP

Version 3.22/20011124:

  • Rename radvd control options to general name because of also usable for ppp device configuration

  • Internal renaming of all functions in the libary, therefore all scripts need to be replaced, but normally no external adaptions are required (only, if you use the libary by self-written scripts)

  • Add support for radvd triggering on normal devices (not only 6to4) to handle automagically configuration of PPP links

Version 3.23/20020112:

  • Rename radvd control options to better naming, add RHL (fallback support)

  • Add and improve default route setup and 6to4 handling

  • Remove support of NBMA and 6to4 tunneling using sit0

  • Move radvd trigger for PPP to ipv6-up|down

Version 3.23/20020315:

  • ifup|down-sit: supports now device name overriding

  • ifup-sit: add support for more than one local IPv6 address

  • ifup-ipv6: add support for more than one local 6to4 address by specifying additional suffices


Updated 12.05.2004Sources | DeepSpace6

Valid XHTML 1.0!IPv6 Ready