#!/bin/sh # Set this if you don't want the script to figure out your IP (MUST BE EXTERNAL) #IPV4ADDR=207.40.203.241 # Remote box to connect to. For AnyCast (192.88.99.1) use "any" REMOTE=any #REMOTE=64.71.128.82 # default 6to4 relay to use #RELAY=192.88.99.1 # tunnel name to use default is tun6to4 #TUN_IF=tun6to4 # local network connection interface if not set will figure it out #LOCAL_IF=eth1 case "$1" in start) if [ -z "${IPV4ADDR}" ]; then if [ -z "${LOCAL_IF}" ]; then LOCAL_IF=$(ip -o route show | grep '^default ' \ | sed -e 's/^default.*dev \([^ ]*\).*/\1/') fi IPV4ADDR=$(ip -o addr show eth1 | grep ' inet ' \ | grep -v ' secondary ' | head -n 1 | \ sed -e 's/.*inet \([^ ]*\) .*/\1/' -e 's/\/.*//') if [ -z "${IPV4ADDR}" ]; then echo "Can't determine IP address assigned to ${LOCAL_IF}" exit 1 fi fi if [ -z "${TUN_IF}" ]; then TUN_IF=tun6to4 fi if [ -z "${RELAY}" ]; then RELAY=192.88.99.1 fi if [ -z "${REMOTE}" ]; then REMOTE=any fi if [ -z "${IPV6ADDR}" ]; then IPV6ADDR=$(printf "2002:%02x%02x:%02x%02x::1\n" `echo $IPV4ADDR | tr . ' '`) fi echo "Your IPv4 address is: ${IPV4ADDR}" echo "Based on this address your IPv6 address for 6to4 tunneling is: ${IPV6ADDR}" echo "This will be relayed via: ${RELAY}" echo "Creating IPv6 tunnel" /sbin/ip tunnel add ${TUN_IF} mode sit ttl 255 remote ${REMOTE} local ${IPV4ADDR} echo "Bringing tunnel up" /sbin/ip link set dev ${TUN_IF} mtu 1472 up echo "Setting tunnel's IP address" /sbin/ip -6 addr add ${IPV6ADDR}/16 dev ${TUN_IF} #/sbin/ip -6 route add ::/0 dev ${TUN_IF} <- do we need this? #### This is for people not using 6bone but using the default AnyCast available to them /sbin/ip -6 route add ::/96 dev ${TUN_IF} metric 1 /sbin/ip -6 route add 2000::/3 via ::${RELAY} dev ${TUN_IF} metric 1 ;; stop) if [ -z "${TUN_IF}" ]; then TUN_IF=tun6to4 fi echo "Flushing routes" /sbin/ip -6 route flush dev ${TUN_IF} echo "Bringing tunnel down" /sbin/ip link set dev ${TUN_IF} down echo "Deleting tunnel" /sbin/ip tunnel del ${TUN_IF} ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac exit 0