IPV6-Forum

... Netzwerke, Routing, Forum

  • Increase font size
  • Default font size
  • Decrease font size

Aufbau eines IPv6 Netzwerk-Routers

E-Mail Drucken PDF

Linux Router für IPv6 mit ip6tables und SIXXS-Tunnel

http://www.ipv6-forum.com/forum/showthread.php?tid=85

In meinem Beitrag "Einrichten eines 6in4 static Tunnels mit SIXXS unter Linux" habe ich beschrieben, wie man einen IPv6 Tunnel einrichtet.

Nun möchte ich das ganze auf ein Netzwerk erweitern:

Mein Linux-Router (hier ein Debian Lenny) ist mit 2 Netzwerkkarten ausgestattet:
eth0: Netzwerkkarte mit Internetzugang
eth1: Internes Netzwerk

Als erstes habe ich bei Sixxs ein subnet beantragt. Innerhalb weniger Stunden bekam ich mein approval-mail, das ungefähr so aussieht:

Code:
The SixXS Staff have honored your request for a subnet on the following tunnel:
-------
PoP Name     : xxxx (xxxx [ASxxxx])
Subnet IPv6  : 2001:15c0:zzzz::/48
Routed to    : 2001:15c0:xxxx:xxxx::2/64
Your IPv4    : yy.yy.yyy.yy9
-------


Eigentlich sind nur 2 Änderungen notwendig:
1. Das Start-Skript muss für das Netzwerk auf der internen Netzwerkkarte erweitert werden.
2. radvd - konfigurieren.

 

radvd - damit alle Clients IP-Adressen bekommen:


Dazu muss folgende Datei angepasst werden:
/etc/radvd.conf

interface eth1 {
AdvSendAdvert on;
prefix 2001:15c0:zzzz::/64  
{
AdvAutonomous on;
AdvOnLink on;
AdvRouterAddr on;
};
};

 

Als nächstes das Startup-Skript:

#!/bin/bash
# dieses Script liegt auf /etc/network/if-up.d/startipv6tunnel
# The IPv4 address of the SixXS PoP you're using
SIXXS4="yyy.yyy.yy.73"
EXTIP="yy.yy.yyy.yy9"
TUNNELPREFIX="2001:15c0:xxxx:xxxx::"
INTPREFIX="2001:15c0:zzzz::"
EXTERNALIF="eth0"
INTERNALIF="eth1"

MYTUNNELIP="${TUNNELPREFIX}2"
SIXXSTUNNELIP="${TUNNELPREFIX}1"
MTU=1280
IPTABLES="/sbin/iptables"
IPT6="/sbin/ip6tables"
IP6DEV="sixxs"
## ENABLING IPv6 Tunnel ##

$IPTABLES -A INPUT -p 41  -s $SIXXS4 -d $EXTIP -j ACCEPT
$IPTABLES -A OUTPUT -p 41 -d $SIXXS4 -s $EXTIP -j ACCEPT
$IPTABLES -A POSTROUTING -o $EXTERNALIF -t nat -d $SIXXS4 -p all -j SNAT --to-source $EXTIP

## ENABLING IPv6 Tunnel ##

/sbin/ip tunnel add $IP6DEV mode sit local ${EXTIP} remote ${SIXXS4}
/sbin/ip link set $IP6DEV up

/sbin/ip link set mtu ${MTU} dev $IP6DEV
/sbin/ip tunnel change $IP6DEV ttl 64
/sbin/ip -6 addr add ${MYTUNNELIP}/64 dev $IP6DEV
/sbin/ip -6 ro add default via ${SIXXSTUNNELIP} dev $IP6DEV

#eth1 internal IF #
/sbin/ip a a $INTPREFIX"1" dev $INTERNALIF
/sbin/ip r a $INTPREFIX"/64" dev $INTERNALIF

echo "Starting IPv6 firewall..."
$IPT6 -F
$IPT6 -X
$IPT6 -t mangle -F
$IPT6 -t mangle -X

## DROP all incomming traffic
$IPT6 -P INPUT DROP
$IPT6 -P OUTPUT DROP
$IPT6 -P FORWARD DROP

#unlimited access to loopback
$IPT6 -A INPUT -i lo -j ACCEPT
$IPT6 -A OUTPUT -o lo -j ACCEPT

# Allow full outgoing connection but no incomming stuff
$IPT6 -A INPUT -i $IP6DEV -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT6 -A OUTPUT -o $IP6DEV -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# allow incoming ICMP ping pong stuff
$IPT6 -A INPUT -i $IP6DEV -p ipv6-icmp -j ACCEPT
$IPT6 -A OUTPUT -o $IP6DEV -p ipv6-icmp -j ACCEPT

# Clients are allowed to connect to router without limits
$IPT6 -A INPUT  -i $INTERNALIF -p all -j ACCEPT
$IPT6 -A OUTPUT -o $INTERNALIF -p all -j ACCEPT

# clients are allowed to reach internet
$IPT6 -A FORWARD -i $INTERNALIF -o $IP6DEV -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT6 -A FORWARD -o $INTERNALIF -i $IP6DEV -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

############## add your custom rules below ############
#### open IPv6  port 80
##$IPT6 -A INPUT -i $IP6DEV -p tcp --destination-port 80 -j ACCEPT
#### open IPv6  port 22
##$IPT6 -A INPUT -i $IP6DEV -p tcp --destination-port 22 -j ACCEPT
#### open IPv6  port 25
##$IPT6 -A INPUT -i $IP6DEV -p tcp --destination-port 25 -j ACCEPT
############# End custom rules ################
#
##### no need to edit below ###
## log everything else
$IPT6 -A INPUT -i $IP6DEV -j LOG
$IPT6 -A INPUT -i $IP6DEV -j DROP


Das ganz noch einmal starten:

debian:~# /etc/network/if-up.d/startipv6tunnel


Und das wars. Sobald man auf einem Client (Linux oder Windows) die Netzwerkverbindung aktualisiert (also z.B. aus- und einschaltet) hat der Client eine IPv6-Adresse:

Man kann die Verbindung dann einmal mit folgenden Mitteln testen:


Auf einem Linux-Client (hier Ubuntu) sollte der Befehl ifconfig folgendes ausgeben:

user@ubuntu:/# ifconfig 
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx  
          inet addr:192.168.xxx.xxx Bcast:192.168.xxx.xxx  Mask:255.255.255.0
          inet6 addr: 2001:15c0:zzzz:xxxx:abcd:abcd:abcd:abcd/64 Scope:Global
          inet6 addr: fe80::abcd:abcd:abcd:abcd/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:49790 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46229 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:45647711 (45.6 MB)  TX bytes:7472494 (7.4 MB)
          Interrupt:18

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:70 errors:0 dropped:0 overruns:0 frame:0
          TX packets:70 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:6956 (6.9 KB)  TX bytes:6956 (6.9 KB)
user@ubuntu:/# route -n -6
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
2001:15c0:zzzz::/64            ::                         UAe  256 0    26 eth0
fe80::/64                      ::                         U    256 0     0 eth0
::/0                           fe80::abcd:abcd:abcd:abcd   UGDAe 1024 0     8 eth0
::/0                           ::                         !n   -1  1   144 lo
::1/128                        ::                         Un   0   3    18 lo
2001:15c0:zzzz:xxxx:abcd:abcd:abcd:abcd/128 ::                         Un   0   1   485 lo
fe80::abcd:abcd:abcd:abcd/128  ::                         Un   0   1     0 lo
ff00::/8                       ::                         U    256 0     0 eth0
::/0                           ::                         !n   -1  1   144 lo

 

Zuletzt aktualisiert am Donnerstag, den 30. Dezember 2010 um 17:06 Uhr  



uploaded