IPv6 setup Hurricane Electric Tunnel Broker

From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 16:05, 24 October 2011 (edit)
Craigfromhudd (Talk | contribs)
(Script)
← Previous diff
Revision as of 16:15, 24 October 2011 (edit) (undo)
Craigfromhudd (Talk | contribs)
(Script)
Next diff →
Line 16: Line 16:
You should have an account and tunnel created on the website. This post will not cover that. Install steps are below the script. This script will only work with /64 tunnels/addresses. Don't use it if you're using /48 You should have an account and tunnel created on the website. This post will not cover that. Install steps are below the script. This script will only work with /64 tunnels/addresses. Don't use it if you're using /48
-==Script== 
- <nowiki> 
-#v1.2 June 17, 2011  
-#*************************** 
-#Settings start here 
-#*************************** 
- 
-  
-#####Optional/Advanced Settings###### 
- 
-#IPv6 OpenDNS IPv6 Resolver 
-ENABLE_OPENDNS_IPV6_DNS=1 
- 
-#WAN IP Source settings 
-#Set below to 1 to use internal NVRAM wan address instead of fetching it from a site 
-USE_NVRAM_WAN_ADDR_INSTEAD=0 
-WAN_IP_SOURCE_ADDR="http://automation.whatismyip.com/n09230945.asp" 
- 
-#logging settings (set to /dev/null for no logging) 
-STARTUP_SCRIPT_LOG_FILE="/tmp/ipv6.log" 
-CRON_STATUS_LOG_FILE="/tmp/lastHEUpdate.log" 
- 
-#Generated files paths 
-CRON_JOB_FILE="/tmp/report.sh" 
-RADVD_CONFIG="/tmp/radvd.conf" 
- 
-#*************************** 
-#Settings end here 
-#*************************** 
- 
-echo "HE IPv6 Script started" >> $STARTUP_SCRIPT_LOG_FILE 
- 
-insmod ipv6 
-sleep 10 
- 
-#get a hash of the plaintext password 
-MD5PASS=`echo -n $PASSWORD | md5sum | sed -e 's/ -//g'` 
-echo "" >> $STARTUP_SCRIPT_LOG_FILE 
- 
-#cut out the "/64" if user typed it in 
-ROUTED_64_ADDR=`echo $ROUTED_64_ADDR|cut -f1 -d/` 
-SERVER_IPV4_ADDR=`echo $SERVER_IPV4_ADDR|cut -f1 -d/` 
-CLIENT_IPV6_ADDR=`echo $CLIENT_IPV6_ADDR|cut -f1 -d/` 
-echo "User added addresses cleaned/checked" >> $STARTUP_SCRIPT_LOG_FILE 
- 
-#make sure ICMP pingable 
-iptables -I INPUT -s 66.220.2.74 -p icmp -j ACCEPT 
- 
-#update HE endpoint 
-echo -e wget -q "\042http://ipv4.tunnelbroker.net/ipv4_end.php?ip=AUTO&pass=$MD5PASS&apikey=$USERID&tid=$TUNNELID\042" -O $CRON_STATUS_LOG_FILE >> $CRON_JOB_FILE 
-chmod +x $CRON_JOB_FILE 
-echo "Cron script created, sending endpoint update request to HE" >> $STARTUP_SCRIPT_LOG_FILE 
-wget -q "http://ipv4.tunnelbroker.net/ipv4_end.php?ip=AUTO&pass=$MD5PASS&apikey=$USERID&tid=$TUNNELID" -O $STARTUP_SCRIPT_LOG_FILE 
-echo "" >> $STARTUP_SCRIPT_LOG_FILE 
- 
-#get wan ip for our own use 
-if [ $USE_NVRAM_WAN_ADDR_INSTEAD -eq 1 ] 
-then 
- echo "Fetching WAN IP from NVRAM" >> $STARTUP_SCRIPT_LOG_FILE 
- WANIP=$(nvram get wan_ipaddr);  
-else 
- echo "Fetching WAN IP from External Site: " $WAN_IP_SOURCE_ADDR >> $STARTUP_SCRIPT_LOG_FILE 
- WANIP=`wget $WAN_IP_SOURCE_ADDR -O - 2>/dev/null` 
-fi 
- 
-echo "External IP detected as:" $WANIP >> $STARTUP_SCRIPT_LOG_FILE 
-if [ -n $WANIP ] 
-then 
-echo "configuring tunnel" >> $STARTUP_SCRIPT_LOG_FILE 
- 
-# The following commands are straight from HE's website 
-modprobe ipv6 
-ip tunnel add he-ipv6 mode sit remote $SERVER_IPV4_ADDR local $WANIP ttl 255 
-ip link set he-ipv6 up 
-ip addr add $CLIENT_IPV6_ADDR/64 dev he-ipv6 
-ip route add ::/0 dev he-ipv6 
-ip -f inet6 addr 
-TEMP_ADDR=`echo $ROUTED_64_ADDR'1'` 
- 
-# These commands aren't on HE's website, but they're necessary for the tunnel to work 
-ip -6 addr add $TEMP_ADDR/64 dev br0 
-ip route add 2000::/3 dev he-ipv6 
- 
-#Enable IPv6 forwarding 
-echo 1 > /proc/sys/net/ipv6/conf/all/forwarding 
- 
-# make sure to accept proto-41 
-iptables -I INPUT 2 -p ipv6 -i vlan1 -j ACCEPT 
- 
-#make sure to not NAT proto-41 
-iptables -t nat -A POSTROUTING --proto ! 41 -o eth0 -j MASQUERADE 
-echo "creating radvd conf" >> $STARTUP_SCRIPT_LOG_FILE 
- 
-if [ $ENABLE_OPENDNS_IPV6_DNS -eq 1 ] 
-then 
- echo "Open DNS ipv6 enabled" >> $STARTUP_SCRIPT_LOG_FILE 
- echo "nameserver 2620:0:ccc::2" >> /tmp/resolv.dnsmasq 
- echo "nameserver 2620:0:ccd::2" >> /tmp/resolv.dnsmasq 
-fi 
- 
-#creating radvd.conf 
-echo "#generated by startup script" > $RADVD_CONFIG 
-echo "interface br0 {" >> $RADVD_CONFIG 
-echo "AdvSendAdvert on;" >> $RADVD_CONFIG 
-echo "prefix "$ROUTED_64_ADDR"/64 {" >> $RADVD_CONFIG 
-echo "AdvOnLink on;" >> $RADVD_CONFIG 
-echo "AdvAutonomous on;" >> $RADVD_CONFIG 
-echo "AdvRouterAddr on;" >> $RADVD_CONFIG 
-echo "};" >> $RADVD_CONFIG 
-echo "};" >> $RADVD_CONFIG 
- 
-echo "starting radvd" >> $STARTUP_SCRIPT_LOG_FILE 
-radvd -C $RADVD_CONFIG & 
-fi 
- 
-</nowiki> 
==Install Steps== ==Install Steps==

Revision as of 16:15, 24 October 2011

Contents

About

This will...
Set up HE's tunnel broker service.
Automatically finds your wan ip at boot using whatismyip.com
Automatically updates HE's endpoint on boot
Generates a radvd.conf on boot, and applies it automatically
Generates a executable file that can be used with cron to keep HE's endpoint up-to-date if you have a dynamic IP


My setup for reference.
Optimum Online Cable ISP
WRT610Nv2
v24-sp2 (Aug 12, 2010)
build 14929

You should have an account and tunnel created on the website. This post will not cover that. Install steps are below the script. This script will only work with /64 tunnels/addresses. Don't use it if you're using /48


Install Steps

Installation steps:

  • Change the settings in the beginning of the above script to your settings.
  • Copy personalized script into Administration > Commands. Save as startup script
  • Go into Administration > Management
  • enable IPv6 and radvd. Leave the config box empty
  • (Optional) enable cron and enter this into "Additional Cron Jobs"

Code:

* 4 * * * root /tmp/report.sh

The above line will auto update the endpoint daily at 4am. Change to personal taste

  • Apply settings, wait for reboot


OpenDNS Setting

This setting will append the following two entries into /tmp/resolv.dnsmasq

 nameserver 2620:0:ccc::2
 nameserver 2620:0:ccd::2

These will give dnsmasq access to the OpenDNS Sandbox DNS servers. These will give access to IPv6 only dns entries. (And will also give you double 10s on test-ipv6.com ;) )

Dnsmasq must be enabled (DHCP Server) or this will not work!

Also dnsmasq needs to be used for DNS.

On my working box, I have...
Under Setup...
Static DNS1 - 208.67.222.222 (OpenDNS ipv4 dns server, not required)
Static DNS2 - 208.67.220.220 (OpenDNS ipv4 dns server, not required)
Use DNSMasq for DHCP - Checked
Use DNSMasq for DNS - Checked
DHCP-Authoritative - Checked

Under Services...
DNSMasq - Enabled
Local DNS - Enabled
No DNS Rebind - Disabled


All clients have only 1 dns entry : 192.168.1.1 (My router's IP Address)


See Also

Test the setup with e.g.:
http://ipv6.google.com
http://aaaa.test-ipv6.com/

Forum link:
http://www.dd-wrt.com/phpBB2/viewtopic.php?t=81060

Example of Basic Connection settings syntax

SERVER_IP4_ADDR="0.0.0.0"
CLIENT_IPV6_ADDR="0000:000:0000:000::0"
ROUTED_64_ADDR="0000:000:0000:000::0"