6to4-Tunneling
Download
Report
Transcript 6to4-Tunneling
Service Providers IPv6
Tunneling
By Gaza IPv6 Project Team
Eng. Alaa H. Ahmed
1
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Agenda
Static point-to-point tunneling-6in4
6to4-Tunneling
Miredo automatic tunneling
4 in 6 tunneling
2
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Configuring IPv6-in-IPv4 tunnels
If you want to leave your link and you have no IPv6
capable network around you, you need IPv6-in-IPv4
tunneling to reach the world wide IPv6-Internet.
There are some kind of tunnel mechanism and also
some possibilities to setup tunnels
3
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Types of tunnels
There are more than one possibility to tunnel IPv6
packets over IPv4-only links:
Static point-to-point tunneling: 6in4
6to4-Tunneling
Automatically tunneling-Miredo
4
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Static point-to-point tunneling-6in4
Allows point-to-point tunneling of IPv6 data between
network endpoints via IPv4
A point-to-point tunnel is a dedicated tunnel to an endpoint,
which knows about your IPv6 network (for backward
routing) and the IPv4 address of your tunnel endpoint.
IPv4 address of your local tunnel endpoint must be static, global
unique and reachable from the foreign tunnel endpoint
A global IPv6 prefix assigned to you
A foreign tunnel endpoint which is capable to route your IPv6
prefix to your local tunnel endpoint (mostly remote manual
configuration required)
requiring n(n-1)/2 tunnels for n sites (e.g. ten sites would require
45 tunnels for full mesh connectivity)
5
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Displaying existing tunnels
# /sbin/ip -6 tunnel show [<device>]
# /sbin/ip -6 tunnel show
sit0: ipv6/ip remote any local any ttl 64 nopmtudisc
sit1: ipv6/ip remote 195.226.187.50 local any ttl 64
6
Gaza IPv6 Project - Eng. Alaa H. Ahmed
6in4 Tunneling configuration
Create a IPv6 tunnel interface:
# /sbin/ip tunnel add <Tunnelname> mode sit local <ipv4addresslocal>
remote <ipv4addressofforeigntunnel>
Bring it up
# ip link set <Tunnelname> up
Assign a IPv6 address from a new subnet to the tunnel
# ip -6 addr add <IPv6 Address >/64 dev <Tunnelname>
7
Gaza IPv6 Project - Eng. Alaa H. Ahmed
6in4 Tunneling configuration
Route the subnet to your IP own address,
# ip -6 route add <prefixtoroute1> dev <Tunnelname> metric 1
Enable IPv6 forwarding
# echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
Removing point-to-point tunnels
# /sbin/ip tunnel del <TunnelName>
8
Gaza IPv6 Project - Eng. Alaa H. Ahmed
LAB1
9
Gaza IPv6 Project - Eng. Mohammed Abu-Jamous
6to4-Tunneling (2002::/16)
6to4 is an Internet transition mechanism for migrating
from IPv4 to IPv6.
Allow IPv6 packets to be transmitted over an IPv4
network without the need to configure explicit tunnels.
Special relay servers are also in place that allow 6to4
networks to communicate with native IPv6 networks.
Host must have a global IPv4 address connected, and
the host is responsible for encapsulation of outgoing
IPv6 packets and decapsulation of incoming 6to4
packets.
10
Gaza IPv6 Project - Eng. Alaa H. Ahmed
6to4-Tunneling (2002::/16)
6to4 performs three functions:
Assigns a block of IPv6 address space to any host or
network that has a global IPv4 address.
Encapsulates IPv6 packets inside IPv4 packets for
transmission over an IPv4 network using 6in4.
Routes traffic between 6to4 and "native" IPv6 networks.
11
Gaza IPv6 Project - Eng. Alaa H. Ahmed
6to4-Tunneling (2002::/16)
Most IPv6 networks use autoconfiguration, which
requires the last 64 bits for the host.
The first 64 bits are the IPv6 prefix.
The first 16 bits of the prefix are always 2002:
The next 32 bits are the IPv4 address
The last 16 bits of the prefix are available for addressing
multiple IPv6 subnets behind the same 6to4 router
IPv4 = 1.2.3.4 IPv6 Range= 2002:0102:0304::/48
Your Host IP 2002:0102:0304::1
12
Gaza IPv6 Project - Eng. Alaa H. Ahmed
ipv4="1.2.3.4"; printf "2002:%02x%02x:%02x%02x::1" `echo $ipv4 | tr "." " "`
6to4-Tunneling (2002::/16)
Border Router & Relay Router
A 6to4 border router is an IPv6 router supporting a
6to4 tunnel-interface.
It is normally the border router between an IPv6 site
and a wide-area IPv4 network, where the IPv6 site uses
2002::/16 co-related to the IPv4 address used later on.
Relay router is a 6to4 router configured to support
transit routing between 6to4 addresses and pure native
IPv6 addresses
13
Gaza IPv6 Project - Eng. Alaa H. Ahmed
6to4-Tunneling (2002::/16)
To reach the entire IPv6 Internet a device is required
that accepts your automatic tunnels and is able to
forward the encapsulated IPv6 packets to the IPv6
Internet. This is the task of a 6to4 relay.
They have been widely deployed and are reachable on
192.88.99.1 anycast address everywhere you are
14
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Implementing 6to4 Tunnling
15
Gaza IPv6 Project - Eng. Mohammed Abu-Jamous
Configuration
Configure Linux to forward (route) IPv6.
Create the 6to4 tunnel.
Assign IPv6 addresses to the interfaces on the Linux
system.
Configure IPv6 routing.
Advertise IPv6 prefixes to the end systems.
16
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Enable Linux as IPv6 Router
Enable IPv6 packet forwarding
# cat /proc/sys/net/ipv6/conf/all/forwarding
0
#echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
For permanent edit /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
NETWORKING_IPV6=yes
IPV6FORWARDING=yes
restart network service
17
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Creating Tunnel
To create the tunnel we need to know the IPv4 address
of the WAN connection.
# ip addr show dev eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen
1000
link/ether 00:0c:29:b6:07:3d brd ff:ff:ff:ff:ff:ff
inet 10.1.12.1/24 brd 10.1.12.255 scope global eth1
The tunnel type is called SIT (Simple Internet
Transition) on Linux. The created interface will have
the name tun6to4.
# ip tunnel add tun6to4 mode sit ttl 254 remote any local 10.1.12.1
# ip link set dev tun6to4 up
18
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Creating Tunnel
The following display shows the tunnel up and running.
# ip link show dev tun6to4
10: tun6to4@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue
link/sit 10.1.12.1 brd 0.0.0.0
19
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Addressing
The 6to4 address is a combination of the 6to4 prefix
(2002::/16), the IPv4 address of the WAN interface
(10.1.12.1 -> hexadecimal ::a01:c01::).
the site-level aggregator (SLA or "subnet"; we
chose 0 for the WAN interface and 1 for the LAN
interface) and the host. The prefix is /64.
# ip -6 addr add 2002:a01:c01::1/16 dev tun6to4
20
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Addressing
Looking at the interfaces we now see these addresses
configured
# ip -6 addr show dev tun6to4
10: tun6to4@NONE: <NOARP,UP,LOWER_UP> mtu 1480
inet6 2002:a01:c01::1/16 scope global
valid_lft forever preferred_lft forever
inet6 ::10.1.12.1/128 scope global
valid_lft forever preferred_lft forever
21
Gaza IPv6 Project - Eng. Alaa H. Ahmed
IPv6 Routing
As long as the local LAN only consists of directly
connected LAN segments only two routes are required:
a route to other 6to4 sites and a default route
# ip -6 route add 2000::/3 via ::10.1.23.3 dev tun6to4 metric 1
# ip -6 route add ::/0 via ::192.88.99.1 dev tun6to4 metric 1
# ip -6 route show
2000::/3 via ::10.1.23.3 dev tun6to4 metric 1 …
fe80::/64 dev eth1 metric 256 …
fe80::/64 dev eth0 metric 256 …
fe80::/64 dev tun6to4 metric 256 …
default via fe80::1 dev eth0 metric
22
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Remove a 6to4 tunnel
Remove all routes through this dedicated tunnel device
# /sbin/ip -6 route flush dev tun6to4
Shut down interface
# /sbin/ip link set dev tun6to4 down
Remove created tunnel device
# /sbin/ip tunnel del tun6to4
23
Gaza IPv6 Project - Eng. Alaa H. Ahmed
Automatic IPv6 Tunneling -Teredo
tunneling (2001:0::/32)
Automatic tunneling occurs, when a node directly
connects another node gotten the IPv4 address of the
other node before
Teredo is by default in Windows releases
Miredo an open source Teredo IPv6 tunneling software,
for Linux and the BSD operating systems. It includes
functional implementations of all components of the
Teredo specification
24
Gaza IPv6 Project - Eng. Alaa H. Ahmed
How it works ?
Teredo operates using a platform independent tunneling
protocol designed to provide IPv6 (Internet Protocol
version 6) connectivity by encapsulating IPv6 datagram
packets within IPv4 User Datagram Protocol (UDP)
packets.
These datagrams can be routed on the IPv4 Internet and
through NAT devices
25
Gaza IPv6 Project - Eng. Mohammed Abu-Jamous
How it works ?
Teredo Client: A host which has IPv4 connectivity to the Internet
from behind a NAT assigned an IPv6 address that starts with the
Teredo prefix (2001:0::/32).
Teredo server :A well-known host which is used for initial
configuration of a Teredo tunnel. A Teredo server never forwards
any traffic for the client . very modest bandwidth requirements
which allows a single server to support large numbers of clients.
Teredo relay: The remote end of a Teredo tunnel forward all of the
data on behalf of the Teredo clients it serves, Therefore, a relay
requires a lot of bandwidth and can only support a limited number
of simultaneous clients
26
Gaza IPv6 Project - Eng. Mohammed Abu-Jamous
How it works ?
0-31: are set to the Teredo prefix (2001:0::/32).
32-64: IPv4 address of the Teredo server
64-79: holds some flags and other bits;
80-95: contains the obfuscated UDP port number mapped by the
NAT to the Teredo client with all bits inverted.
96-127: contains the obfuscated IPv4 address. This is the public
IPv4 address of the NAT with all bits inverted
Bits
0 - 31
32 - 63
64 - 79
80 - 95
96 - 127
Length
32 bits
32 bits
16 bits
16 bits
32 bits
Obfuscated
UDP port
Obfuscated
Client
public IPv4
Description
27
Prefix
Teredo
server IPv4
Gaza IPv6 Project - Eng. Mohammed Abu-Jamous
Flags
How it works ?
closest Teredo relay
28
Gaza IPv6 Project - Eng. Mohammed Abu-Jamous
Limitations
Teredo is not compatible with all NAT devices. Like
symmetric NATs.
Symmetric NAT
Each request from the same internal IP address and port
to a specific destination IP address and port is mapped to
a unique external source IP address and port; if the same
internal host sends a packet even with the same source
address and port but to a different destination, a different
mapping is used.
Only an external host that receives a packet from an
internal host can send a packet back
29
Gaza IPv6 Project - Eng. Mohammed Abu-Jamous
Miredo Configuration
Get the package from the internet
wget http://www.remlab.net/files/miredo/miredo-1.0.6.tar.bz2
Extract it
tar -xvf miredo-1.0.6.tar.bz2
Install it
./configure
make
make install
30
Gaza IPv6 Project - Eng. Mohammed Abu-Jamous
Miredo Configuration
Start the service
/usr/local/sbin/miredo -f
[root@localhost sbin]# ./miredo -f
miredo[6325]: Starting...
miredo[6326]: Qualified (NAT type: restricted)
miredo[6326]: New Teredo address/MTU
miredo[6326]: Teredo pseudo-tunnel started
miredo[6326]: (address: 2001:0:53aa:64c:0:d66c:aa8d:9671, MTU: 1280)
31
Gaza IPv6 Project - Eng. Mohammed Abu-Jamous
Miredo Configuration
Check the teredo interface
#ifconfig
teredo Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet6 addr: fe80::ffff:ffff:ffff/64 Scope:Link
inet6 addr: 2001:0:53aa:64c:0:d66c:aa8d:9671/32 Scope:Global
UP POINTOPOINT RUNNING NOARP MTU:1280 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:500
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
32
Gaza IPv6 Project - Eng. Mohammed Abu-Jamous
Miredo Configuration
Ping IPv6 Address
ipv6.google.com
www.v6.google.com
[root@localhost ~]# ping6 -c 4 www.kame.net
PING www.kame.net(2001:200:dff:fff1:216:3eff:feb1:44d7) 56 data bytes
64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=3 ttl=58 time=1235 ms
64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=2 ttl=58 time=2242 ms
64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=1 ttl=58 time=3241 ms
64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=0 ttl=58 time=4243 ms
--- www.kame.net ping statistics --4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 1235.778/2740.725/4243.165/1120.492 ms, pipe 5
[root@localhost ~]#
33
Gaza IPv6 Project - Eng. Mohammed Abu-Jamous
Configuring IPv4-in-IPv6 tunnels
Setup of point-to-point tunnel
creating a 4over6 tunnel device
# /sbin/ip tunnel add <device> mode ip4ip6 remote
<ipv6addressofforeigntunnel> local <ipv6addresslocal>
Bring it up
# /sbin/ip link set dev <device> up
Add a route
# /sbin/ip -6 route add <prefixtoroute1> dev <device> metric 1
34
Gaza IPv6 Project - Eng. Alaa H. Ahmed
References
http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/chapterconfiguring-ipv6-in-ipv4-tunnels.html
https://www.sixxs.net/faq/connectivity/?faq=ossetup
http://www.shorewall.net/6to4.htm
http://www.tldp.org/HOWTO/Linux%2BIPv6HOWTO/configuring-ipv6to4-tunnels.html
http://www.anyweb.co.nz/tutorial/v6Linux6to4
35
Gaza IPv6 Project - Eng. Mohammed Abu-Jamous