Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Linux Router für IPv6 mit ip6tables und SIXXS-Tunnel
12-30-2010, 06:53 PM (Dieser Beitrag wurde zuletzt bearbeitet: 12-30-2010 06:54 PM von Wolfgang Ninaus.)
Beitrag #1
Linux Router für IPv6 mit ip6tables und SIXXS-Tunnel
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
Code:
interface eth1 {
   AdvSendAdvert on;
    prefix 2001:15c0:zzzz::/64  
    {
        AdvAutonomous on;
        AdvOnLink on;
        AdvRouterAddr on;
   };
};

Als nächstes das Startup-Skript:
Code:
#!/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:
Code:
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:
Code:
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)

Code:
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Nachrichten in diesem Thema
Linux Router für IPv6 mit ip6tables und SIXXS-Tunnel - Wolfgang Ninaus - 12-30-2010 06:53 PM

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste