Nu har jag testat ordentligt. Myckte riktigt så routas hela /48 nätet till 2002:xxxx:xxxx::1.
Radvd har såklart också utvecklats, så numer räcker det med ::/64 som adress på interfacet så hoppar det igång.
Så radvd.conf:
Kod: Markera allt
interface eth0 {
AdvSendAdvert on;
prefix ::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
RDNSS 2001:16d8:ff13:dead::1 {
};
};
DNSen byts förslagsvis mot något mer pålitligt.
Scriptet är något modifierat, och använder inte längre /etc/default/6to4, utan alla inställningar görs direkt i scriptet:
Kod: Markera allt
#! /bin/bash
#
# 6to4 Script to configure a 6to4 "tunnel" device
#
# Written by Emil Sandnabba <emil@sandnabba.se>
# Orginal by Daniel Lawson <daniel@meta.net.nz>
# Interface för tunneln:
IF=tun6to4
# Externt interface (publik IP):
EXTIF=hso0
# Interface för ingående IPv6:
INTIF=tun6to4
# IPv6 forward?
sysctl -w net.ipv6.conf.all.forwarding=1
start_6to4_tunnel() {
# GET EXTIF IP Address
PPPIP=`ip -4 addr list $EXTIF | grep inet | awk '{ print $2'}`
# From IanKumlien:
# If you get a /netmask-bits suffix, then change the PPPIP line to:
PPPIP=`ip -4 addr list $EXTIF | grep inet | awk '{ print $2 }' | cut -d/ -f1`
echo $PPPIP
# Set up the tunnel
ip tunnel add ${IF} mode sit remote any local $PPPIP ttl 255
ip link set dev ${IF} mtu 1472 up
}
start_routes() {
ip -6 route add 2000::/3 via ::192.88.99.1 dev ${IF} metric 1
}
start_local_network() {
# Add a 6to4 Address to ${INTIF}
if [ -n ${INTIF} ]; then
ip -6 addr add $(printf "2002:%02x%02x:%02x%02x::1/64" $(echo ${PPPIP} | tr '.' ' ')) dev ${INTIF}
fi
}
stop_local_network() {
if [ -n ${INTIF} ]; then
# GET the *old* tunnel ip
OLDIP=`ip -6 addr list dev ${IF} | grep inet6 | cut -d ":" -f 3 | cut -d '/' -f 1`
# Remove the 6to4 IP assigned to ${INTIF}
ip -6 addr del $(printf "2002:%02x%02x:%02x%02x::1/64" $(echo ${OLDIP} | tr '.' ' ')) dev ${INTIF}
fi
}
stop_routes() {
ip -6 route del 2000::/3 via ::192.88.99.1 dev ${IF} metric 1
}
stop_6to4_tunnel() {
ip -6 route flush dev ${IF}
ip link set dev ${IF} down
ip tunnel del ${IF}
echo
}
restart_6to4_ad () {
[ "yes" == "${RADVD}" ] &&
killall -1 radvd
}
case "$1" in
start)
echo -n "Setting up 6to4 IPv6 tunnel ($IF): "
start_6to4_tunnel
start_routes
start_local_network
# restart_6to4_ad
;;
stop)
echo -n "Shutting down 6to4 IPv6 tunnel ($IF): "
stop_routes
# stop_local_network
stop_6to4_tunnel
# restart_6to4_ad
;;
restart|force-reload)
echo -n "Resetting 6to4 IPv6 tunnel ($IF): "
stop_local_network
stop_routes
stop_6to4_tunnel
start_6to4_tunnel
start_routes
start_local_network
restart_6to4_ad
;;
*)
echo "Usage: $0 {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Det enda som behövs göras i dagsläget är att sätta en IP på det interna interfacet som inte krockar med den externa, och sen starta radvd så är det igång.
Sista vart det följande för mig:
Extern (tun6to4, satt automatiskt av scriptet): 2002:5aef:4d26::1/64
Intern (satt manuellt med ifconfig eth0 add): 2002:5aef:4d26:1::1/64
Sen är det bara att starta radvd (Lägg ovanstående conf som /etc/radvd.conf och starta med "sudo radvd").
Då kommer datorer som pluggas in på eth0 att få adresser inom 2002:5aef:4d26:1::/64, din valda DNS server och det är bara att tuta och köra.
Kommer nog att fortsätta med scriptet så att även ovastående sker automatiskt. Hjälp, eller tips och idéer tas gärna emot!