Difference between revisions of "IPv6 tunnel broker setup"

From ArchWiki
Jump to: navigation, search
(Tunnel rc.d script)
(Start tunnel at boot time)
Line 72: Line 72:
  
 
== Start tunnel at boot time ==
 
== Start tunnel at boot time ==
Once you have that all setup how you want you will need to add <tt>he6in4</tt> to your <tt>/etc/rc.conf</tt> file:
+
Once you have that all setup how you want you will need to add <tt>6in4-tunnel</tt> to your <tt>/etc/rc.conf</tt> file:
 
<pre>
 
<pre>
DAEMONS=(... he6in4 ...)
+
DAEMONS=(... 6in4-tunnel ...)
 
</pre>
 
</pre>

Revision as of 01:23, 19 October 2010

Hurricane Electric offers a free tunnel broker service that is relatively painless to use under Arch if you wish to add IPv6 connectivity to an IPv4-only host.

Registering for a tunnel

Tunnel rc.d script

For this script to work you will need the iproute2 package installed:

# clyde -S iproute2

Try the following init script to start and stop an IPv6 tunnel once you have registered it with HE. I placed this at /etc/rc.d/6in4-tunnel. Obviously some of the variables up top will need to be filled in.

#!/bin/bash

if_name=he6in4
server_ipv4='' # HE Server Endpoint IP
client_ipv4='' # Your local IP
client_ipv6='' # Your HE-assigned client IP
link_mtu=1480
tunnel_ttl=255

daemon_name=6in4-tunnel

. /etc/rc.conf
. /etc/rc.d/functions

case "$1" in
  start)
    stat_busy "Starting $daemon_name daemon"

    ifconfig $if_name &>/dev/null
    if [ $? -eq 0 ]; then
      stat_busy "Interface $if_name already exists"
      stat_fail
      exit 1
    fi

    ip tunnel add $if_name mode sit remote $server_ipv4 local $client_ipv4 ttl $tunnel_ttl
    ip link set $if_name up mtu $link_mtu
    ip addr add $client_ipv6 dev $if_name
    ip route add ::/0 dev $if_name
    # Here is how you would add additional ips
    # ip addr add 2001:XXXX:XXXX:beef:beef:beef:beef:1 dev he6in4
    # ip addr add 2001:XXXX:XXXX:beef:beef:beef:beef:2 dev he6in4
    # ip addr add 2001:XXXX:XXXX:beef:beef:beef:beef:3 dev he6in4

    add_daemon $daemon_name
    stat_done
    ;;

  stop)
    stat_busy "Stopping $daemon_name daemon"

    ifconfig $if_name &>/dev/null
    if [ $? -ne 0 ]; then
      stat_busy "Interface $if_name does not exist"
      stat_fail
      exit 1
    fi

    ip link set $if_name down
    ip tunnel del $if_name

    rm_daemon $daemon_name
    stat_done
    ;;

  *)
    echo "usage: $0 {start|stop}"
esac
exit 0

Start tunnel at boot time

Once you have that all setup how you want you will need to add 6in4-tunnel to your /etc/rc.conf file:

DAEMONS=(... 6in4-tunnel ...)