IPv6 startup script

From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 18:53, 20 February 2008 (edit)
GloomyTrousers (Talk | contribs)
(Instructions)
← Previous diff
Revision as of 07:23, 5 June 2009 (edit) (undo)
Ausimus1 (Talk | contribs)
(Removing all content from page)
Next diff →
Line 1: Line 1:
-==Instructions== 
-Use this script once you have been assigned a SixXS tunnel to connect that tunnel. Once your tunnel has been up for a week, you earn enough credits to request a subnet (/48 IPv6 allocation) which you can then use for hosts on your network. See the instructions in the SETUP VALUES section for more info. 
-See [http://www.sixxs.net/main/ http://www.sixxs.net/main/] for info on how to request tunnels and subnets. 
- 
-Any feedback on the script welcome in [http://www.dd-wrt.com/phpBB2/viewtopic.php?t=27817 this forum topic]. 
- 
- #!/bin/sh 
- # 
- # SIXXS IPv6 startup script for WRT54G 
- # From http://www.dd-wrt.com/wiki/index.php/IPv6_startup_script 
-  
- ################################## 
- ### SETUP VALUES ### 
- ### Change these before running ## 
- ################################## 
-  
- # The IPv6 prefix (/64) of the tunnel initially assigned to you by SixXS (including the ::). 
- # Only the ::1 and ::2 are used from this range, for the PoP and your router, respectively. 
- # You need to keep the tunnel up for a week in order earn enough credits to request a /48 subnet (see below) which can then be used by hosts on your network. 
- TUNNELPREFIX="2001:db8:1111:1111::" 
-  
- # The IPv4 address of the SixXS PoP you're using 
- SIXXS4="1.1.1.1" 
-  
- # MTU - must match your SixXS tunnel settings and radvd's "AdvLinkMTU" value; 1280 is the default but it can be increased. 
- # This script will give you a recommendation when you run it, but it should be 20 less than your IPv4 MTU. 
- MTU=1280 
-  
- # A /64 from your /48 subnet prefix assigned by SixXS, INCLUDING the /64 
- ## This should match what you announce to the network with radvd (set in Administration -> Management in the web interface) 
- # If you have not yet been assigned this (you need to keep the tunnel up for a week to earn enough credits), leave blank/commented out 
- ###SUBNET="2001:db8:2222::/64" 
-  
- # Space-separated list of extra IPs you want for your router, such as: 
- # * Local (RFC 4193, currently draft) address e.g. fdxx:xxxx:xxxx:yyyy::1/64; or 
- # * site-local (as per RFC 1918, but obseleted by RFC 3879) address e.g. fec0::1/64 
- # * Any other local or global fixed address you want (note that we already assign the above SUBNET address) 
- # This is optional, leave blank/commented out if not wanted. 
- ###ADDITIONALIP6="fec0::1/64" 
-  
- ################################## 
- ### END OF SETUP VALUES ## 
- ################################## 
-  
- logger -st sixxs -- "Starting IPv6 setup" 
-  
- # Get the tunnel endpoint addresses 
- MYTUNNELIP="${TUNNELPREFIX}2" 
- SIXXSTUNNELIP="${TUNNELPREFIX}1" 
-  
- # Get our external IPv4 (in case the IP isn't available, because we don't have a connection yet, retry until we succeed) 
- while [ -z ${EXTIP} ]; do 
- # PPPoE devices are on ppp0, all others are on vlan1; we try both 
- DEV=ppp0 
- EXTIP=`/usr/sbin/ip -4 addr show dev ${DEV} | grep inet | awk '{print $2}' | cut -d/ -f1` 
- if [ -z ${EXTIP} ]; then 
- # Not on ppp0 - try vlan1 
- DEV=vlan1 
- EXTIP=`/usr/sbin/ip -4 addr show dev ${DEV} | grep inet | awk '{print $2}' | cut -d/ -f1` 
- fi 
- if [ -z ${EXTIP} ]; then 
- logger -st sixxs -- "- No external IP found; trying again in 10 secs..." 
- sleep 10 
- fi 
- done 
- logger -st sixxs -- "- External IP ${EXTIP} found on device ${DEV}" 
-  
- # Create tunnel 
- logger -st sixxs -- "- Creating SixXS tunnel ${EXTIP} <--> ${SIXXS4}" 
- /usr/sbin/ip tunnel add sixxs mode sit local ${EXTIP} remote ${SIXXS4} 
-  
- # Bring tunnel interface up explicitly 
- logger -st sixxs -- "- Bringing sixxs device up" 
- /usr/sbin/ip link set sixxs up 
-  
- # Fix MTU and TTL 
- logger -st sixxs -- "- Fixing MTU and TTL of sixxs device" 
- /usr/sbin/ip link set mtu ${MTU} dev sixxs 
- /usr/sbin/ip tunnel change sixxs ttl 64 
-  
- # Check for optimal MTU 
- # Max MTU is device's MTU minus 20 (IPv6 headers are 20 bytes bigger than IPv4) 
- RECMTU=`ip addr show dev $DEV | grep mtu | awk '{print $5}'` 
- RECMTU=`expr ${RECMTU} - 20` 
- if [ ${MTU} -lt ${RECMTU} ]; then 
- logger -st sixxs -- "- Note: You could increase your MTU setting from ${MTU} to ${RECMTU} for improved performance. Change it in ${0}, radvd.conf and in the SixXS tunnel config." 
- elif [ ${MTU} -gt ${RECMTU} ]; then 
- ### TODO: What happens if MTU is too high? 
- logger -st sixxs -- "- WARNING: Your MTU ${MTU} is too high - it should be ${RECMTU}. Change it in ${0}, radvd.conf and in the SixXS tunnel config." 
- fi 
-  
- # Add extra IPs if any 
- if [ ! -z ${ADDITIONALIP6} ]; then 
- for IP in ${ADDITIONALIP6}; do 
- logger -st sixxs -- "- Adding fixed IP ${IP}" 
- /usr/sbin/ip -6 addr add ${IP} dev br0 
- done 
- fi 
-  
- # Configure IPv6 endpoint on the tunnel 
- logger -st sixxs -- "- Configuring local IPv6 tunnel endpoint ${MYTUNNELIP}" 
- /usr/sbin/ip -6 addr add ${MYTUNNELIP}/64 dev sixxs 
-  
- # Add default route 
- logger -st sixxs -- "- Adding default route through SixXS ${SIXXSTUNNELIP}" 
- /usr/sbin/ip -6 ro add default via ${SIXXSTUNNELIP} dev sixxs 
-  
- if [ ! -z ${SUBNET} ]; then 
- # Add a network from the /48 subnet to br0 
- logger -st sixxs -- "- Setting up subnet ${SUBNET}" 
- /usr/sbin/ip -6 addr add ${SUBNET} dev br0 
-  
- ## # Start router advertisement daemon 
- ## # No need to do this here; just use the setup in the web interface 
- ## logger -st sixxs -- "- Starting radvd..." 
- ## /sbin/radvd -C /tmp/smbshare/etc/radvd.conf 
- else 
- logger -st sixxs -- "- Note: No subnet configured yet - apply for one when you've kept the tunnel up for a week and earned enough credits" 
- fi 
-  
- logger -st sixxs -- "SixXS IPv6 setup done"  
- 
-== radvd configuration == 
-An example radvd.conf, to be used once you have been assigned a /48 subnet (see Administration -> Management in your router's web interface): 
- 
- interface br0 { 
- AdvSendAdvert on; 
- AdvHomeAgentFlag on; 
- AdvLinkMTU 1280; 
- MinRtrAdvInterval 3; 
- MaxRtrAdvInterval 10; 
- prefix [REPLACE WITH SUBNET]/64 { 
- AdvOnLink on; 
- AdvAutonomous on; 
- AdvRouterAddr on; 
- }; 
- }; 
- 
-[[Category:English documentation]] 

Revision as of 07:23, 5 June 2009