Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save smowtion/bb98d7be58b963c19427bb8c27fd1a46 to your computer and use it in GitHub Desktop.
Save smowtion/bb98d7be58b963c19427bb8c27fd1a46 to your computer and use it in GitHub Desktop.
tunnelbroker.net : tunnel setup on Linux using "ip" from the iproute suite (iproute2)
#!/bin/bash
# IPv6 Tunnel setup of an tunnelbroker.net tunnel on Linux using the configuration file `/etc/network/interfaces`
# (needs the `ip` tool from the iproute suite, Ubuntu package: <http://packages.ubuntu.com/iproute>)
#
# Run like this:
# ./tunnelbroker-net.linux.etc-network-interfaces.sh
#
# 2011 by Philipp Klaus
# Published on <http://blog.philippklaus.de/2011/05/ipv6-6in4-tunnel-via-hurricane-electric-tunnelbroker-net-tunnel-setup-on-ubuntu-11-04/>
TUNNELNAME="he-ipv6"
SERVERIPV4ADDR="216.66.80.30" # Server IPv4 address as listed on tunnelbroker.net
CLIENTIPV6ADDR="2001:470:1f0a:1abc::2" # Client IPv6 address as listed on tunnelbroker.net
ROUTED64="2001:470:1f0b:1abc" # Routed /64 as listed on tunnelbroker.net (without the trailing ::/64)
interfaces="/etc/network/interfaces";
grep $TUNNELNAME $interfaces > /dev/null
if [ $? = 0 ]; then echo "You already have an entry for the tunnel $TUNNELNAME in your $interfaces file."; exit 1; fi
cat << EOF | sudo tee -a $interfaces > /dev/null
# IPv6 via HE tunnel...
# Set up using the script on <https://gist.github.com/962408>
auto $TUNNELNAME
iface $TUNNELNAME inet6 v4tunnel
address $CLIENTIPV6ADDR
endpoint $SERVERIPV4ADDR
netmask 64
# ttl 64
#up ip -6 route add default dev $TUNNELNAME
up ip -6 route add 2000::/3 dev $TUNNELNAME
### $ROUTED64::1:1 is the first IPv6 address on that interface
up ip -6 addr add $ROUTED64::1:1/128 dev $TUNNELNAME
### $ROUTED64::2:1 is the second (if desired), etc.
up ip -6 addr add $ROUTED64::2:1/128 dev $TUNNELNAME
down ip -6 route flush dev $TUNNELNAME
EOF
#!/bin/bash
# IPv6 Tunnel setup of an tunnelbroker.net tunnel on Linux using the `ip` tool from the iproute suite (iproute2)
# Website of iproute2: <http://www.linux-foundation.org/en/Net:Iproute2>
# Package on Ubuntu: <http://packages.ubuntu.com/iproute> and on Arch Linux <http://www.archlinux.org/packages/?&q=iproute2>
#
# Run like this:
# ./tunnelbroker-net.linux.sh
#
# 2011 by Philipp Klaus
# Published on <http://blog.philippklaus.de/2011/05/ipv6-6in4-tunnel-via-hurricane-electric-tunnelbroker-net-tunnel-setup-on-ubuntu-11-04/>
# A modified version by Pradeesh Parameswaran can be found on <http://pastebin.com/3JjfYasF>
# Uncomment this line to debug the script:
#set -x
#LOCALIPV4="14.21.215.11"
LOCALIPV4=$(curl -s http://ipv4.whatsmyip.reliable-ict.de)
HEIPV4SERVER="216.66.80.30"
HEIPV6CLIENT="2001:470:1f0a:1abc::2/64"
TUNNELNAME="he-ipv6"
echo "Please enter your user account password. It is needed to set up the IPv6 tunnel."
sudo echo "Gained superuser permissions"
if [ $? == 1 ]; then echo "Sorry! You need to provide your password in order to set up the tunnel."; exit 1; fi
cat << "EOF"
If you run an older Linux distribution, you may need to load the kernel module:
sudo modprobe ipv6
EOF
# found on <https://bugs.launchpad.net/ufw/+bug/502655/comments/8>
cat << "EOF"
If you have the UFW firewall running on your system,
make sure, passing proto 41 is allowed:
sudo ufw allow proto ipv6 from $HEIPV4SERVER
Please make sure, that `IPV6=yes` is set in `/etc/default/ufw`. After changing this,
you have to run `sudo ufw disable && sudo ufw enable` in order to get it to work.
EOF
# Now setup the tunnel, start the link, add the IPv6 address to the tunnel and set up routing.
sudo ip tunnel add $TUNNELNAME mode sit remote $HEIPV4SERVER local $LOCALIPV4 ttl 255
sudo ip link set $TUNNELNAME up
sudo ip addr add $HEIPV6CLIENT dev $TUNNELNAME
sudo ip route add ::/0 dev $TUNNELNAME
ip -f inet6 addr # ← show the current IPv6 addresses on you machine
cat << EOF
You set up the tunnel. To remove the tunnel again, run these commands:
sudo ip route delete ::/0 dev $TUNNELNAME
sudo ip addr del $HEIPV6CLIENT dev $TUNNELNAME
sudo ip link set $TUNNELNAME down
sudo ip tunnel del $TUNNELNAME
EOF
sudo yum install epel-release -y
sudo yum install --enablerepo="epel" ufw -y
#after install it, enable ufw
sudo ufw enable
#check ufw status
sudo ufw status
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment