IPv6 Forum
Linux Router für IPv6 mit ip6tables und Tunnelbroker.net / Hurricane Electic - Druckversion

+- IPv6 Forum (http://www.ipv6-forum.com/forum)
+-- Forum: IPv6 (/forumdisplay.php?fid=1)
+--- Forum: Aus der Praxis. (/forumdisplay.php?fid=5)
+--- Thema: Linux Router für IPv6 mit ip6tables und Tunnelbroker.net / Hurricane Electic (/showthread.php?tid=2955)



Linux Router für IPv6 mit ip6tables und Tunnelbroker.net / Hurricane Electic - Wolfgang Ninaus - 09-22-2011 10:08 PM

Linux Router für IPv6 mit ip6tables und Tunnelbroker.net / Hurricane Electic

Wer wirklich schnell zum eigenen IPv6-Netzwerk kommen möchte sollte sich Tunnelbroker.net anschauen. Im Gegensatz zu SIXXS (bei denen es wegen dieses Creditsystems ewig dauert) hat man das Netzwerk in wenigen Minuten am laufen.

1. Schritt: Registrierung
http://www.tunnelbroker.net/register.php

Kurz darauf erhält man seine Logindaten und es geht los.

2. Schritt: Einloggen und auf Create Regular Tunnel klicken; dann erscheint folgendes Fenster:

[attachment=95]

3. Schritt: Die angezeigten Daten (wie unten) in das startscript einfügen:
[attachment=105]

Jetzt erstellen wir ein Startup-script unter /etc/network/if-up.d/startipv6tunnel
Code:
#!/bin/bash
# dieses Script liegt auf /etc/network/if-up.d/startipv6tunnel
# The IPv4 address of the hurricane PoP you're using
HURRICANE4="216.66.80.98" #siehe Screenshot in Schritt 3 (1)
EXTIP="223.67.22.22" #siehe Screenshot in Schritt 3 (2)
TUNNELPREFIX="2001:7f7:25:477::" #siehe Screenshot in Schritt 3 (3) + Anmerkung 1
INTPREFIX="2001:7f7:b6b1::/64" #siehe Screenshot in Schritt 3 (4) + Anmerkung 2
INTPREFIXIP="2001:7f7:b6b1::1" #siehe Screenshot in Schritt 3 (4) + Anmerkung 2
EXTERNALIF="eth0"
INTERNALIF="eth1"

#OPTIONAL:/sbin/ip addr add $EXTIP/32 dev $EXTERNALIF

MYTUNNELIP="${TUNNELPREFIX}2"
HURRICANETUNNELIP="${TUNNELPREFIX}1"
MTU=1280
IPTABLES="/sbin/iptables"
IPT6="/sbin/ip6tables"
IP6DEV="hurricane"
## ENABLING IPv6 Tunnel ##
$IPTABLES -A INPUT -p 41  -s $HURRICANE4 -d $EXTIP -j ACCEPT
$IPTABLES -A OUTPUT -p 41 -d $HURRICANE4 -s $EXTIP -j ACCEPT
$IPTABLES -A POSTROUTING -o $EXTERNALIF -t nat -d $HURRICANE4 -p all -j SNAT --to-source $EXTIP
## ENABLING IPv6 Tunnel ##
/sbin/ip tunnel add $IP6DEV mode sit local ${EXTIP} remote ${HURRICANE4} ttl 255
/sbin/ip link set $IP6DEV up
/sbin/ip -6 addr add ${MYTUNNELIP}/64 dev $IP6DEV
/sbin/ip -6 ro add ::/0 dev $IP6DEV
#INTERNALIF #
/sbin/ip a a $INTPREFIXIP dev $INTERNALIF
/sbin/ip r a $INTPREFIX dev $INTERNALIF
echo "Starting IPv6 firewall..."
#OPTIONAL: enable IPv6 forwarding
#OPTIONAL:echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

/etc/init.d/radvd restart

$IPT6 -F
$IPT6 -X
$IPT6 -t mangle -F
$IPT6 -t mangle -X

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

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

# 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
$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

Abschließend radvd konfigurieren:
/etc/radvd.conf:
Code:
interface eth1 {
  AdvSendAdvert on;
    prefix 2001:7f7:b6b1::/64 #siehe Screenshot in Schritt 3 (4) + Anmerkung 2
    {
        AdvAutonomous on;
        AdvOnLink on;
        AdvRouterAddr on;
  };
};

Anmerkung 1:
Im Screenshot steht
Server IPv6 Address 2001:7f7:25:477::1/64 und
Client IPv6 Address 2001:7f7:25:477::2/64. Da das in der Regel immer so ist nehme ich im Script einfach das 2001:7f7:25:477::
Anmerkung 2:
Im Screenshot steht Routed /48 2001:7f7:b6b1::/48: Da ich über radvd im Netzwerk nur ein /64-er Netzwerk freigebe. Wähle ich hier einfach irgendein Teilnetz - in diesem Fall 2001:7f7:b6b1::/64 mit der lokalen IP 2001:7f7:b6b1::1. (Es wäre natürlich auch möglich 2001:7f7:b6b1:ab::/64 zu verwenden.)

Das ganz noch starten:
Code:
debian:~# /etc/network/if-up.d/startipv6tunnel

That's it!