Как стать автором
Обновить

Настройка Ipv6 на DD-WRT через tunnelbroker

На моей винде не хотело работать teredo и я занялся поисками альтернатив. В итоге нашел решение прошивкой роутера dd-wrt, и вбиванием туда скрипта.

Дано:
— Белый динамический ИП.
— Роутер с прошивкой dd-wrt ( dd-wrt.com )
— Жуткое желание прикрутить Ipv6

1) Итак, что нам нужно. Во первых нам нужна регистрация на www.tunnelbroker.net
Без него, ничего работать не будет.
Заходим по ссылке, регистрируемся (просит ввести кучу данных о себе). Потом на почту приходит письмо с логином и паролем. Логинимся на сайте и жмем «Create Regular Tunnel».
IPv4 Endpoint (Your side): сюда вводим свой ipv4 (да-да, пофиг что он динамический, сервис предоставляет возможность апдейтить ип, которой мы и воспользуемся впоследствии).

2) Далее заполняем скрипт нужными данными:
Сам скрипт и описание я взял с вики прошивки
Скрипт
#v1.4 Feb 29, 2012
#***************************
#Settings start here
#***************************

#basic connection settings
SERVER_IP4_ADDR="ввести ip4 адрес сервера"
CLIENT_IPV6_ADDR="ввести Ip6 адрес клиента"
ROUTED_64_ADDR="ввести адрес шлюза"

#account info to auto update endpoint
USERID="ввести юзер айди. Не сам логин, а айди"
PASSWD="здесь пишем свой пароль от туннельброкера"
TUNNELID="здесь пишем айди тунеля"

#####Optional/Advanced Settings######

#IPv6 OpenDNS IPv6 Resolver
ENABLE_OPENDNS_IPV6_DNS=1

#HE's endpoint verificiation server ip to add to whitelist
HE_VERIFY_SERVER_IP=«66.220.2.74»

#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=1
WAN_IP_SOURCE_ADDR=«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"

#Enable this to generate a .wanup script to automatically update local tunnel endpoint address on wan change
ENABLE_WANUP_SCRIPT=1
WANUP_SCRIPT_FILE_PATH="/tmp/etc/config/tunnelUpdate.wanup"

#Generated files paths
CRON_JOB_FILE="/tmp/report.sh"
RADVD_CONFIG="/tmp/radvd.conf"

#***************************
#Settings end here
#***************************

echo "" >> $STARTUP_SCRIPT_LOG_FILE
echo «HE IPv6 Script started» >> $STARTUP_SCRIPT_LOG_FILE

insmod ipv6
sleep 10

#get a hash of the plaintext password
MD5PASSWD=`echo -n $PASSWD | md5sum | sed -e 's/ -//g'`
echo `date` >> $STARTUP_SCRIPT_LOG_FILE

#cut out the "/64" if user typed it in
ROUTED_64_ADDR=`echo $ROUTED_64_ADDR|cut -f1 -d/`
SERVER_IP4_ADDR=`echo $SERVER_IP4_ADDR|cut -f1 -d/`
CLIENT_IPV6_ADDR=`echo $CLIENT_IPV6_ADDR|cut -f1 -d/`
echo «User added addresses cleaned/checked» >> $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

#update HE endpoint
#need to alllow wan ping or HE will not validate new endpoint
iptables -I INPUT 2 -s $HE_VERIFY_SERVER_IP -p icmp -j ACCEPT
echo -e wget -q «ipv4.tunnelbroker.net/ipv4_end.php?ip=$WANIP&pass=$MD5PASSWD&apikey=$USERID&tid=$TUNNELID» -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
etime=`date +%s`
wget -q «ipv4.tunnelbroker.net/ipv4_end.php?ip=$WANIP&pass=$MD5PASSWD&apikey=$USERID&tid=$TUNNELID» -O /tmp/wget.tmp.$etime
cat /tmp/wget.tmp.$etime >> $STARTUP_SCRIPT_LOG_FILE
echo "" >> $STARTUP_SCRIPT_LOG_FILE
rm /tmp/wget.tmp.$etime

# The following commands are straight from HE's website
ip tunnel add he-ipv6 mode sit remote $SERVER_IP4_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

#generate wanup script
if [ $ENABLE_WANUP_SCRIPT -eq 1 ]
then
echo «WANUP script being generated» >> $STARTUP_SCRIPT_LOG_FILE
dirname $WANUP_SCRIPT_FILE_PATH | xargs mkdir
echo 'echo «WANUP script triggered on `date`» >>' $STARTUP_SCRIPT_LOG_FILE > $WANUP_SCRIPT_FILE_PATH
if [ $USE_NVRAM_WAN_ADDR_INSTEAD -eq 1 ]
then
echo -e 'WANIP=$(nvram get wan_ipaddr);' >> $WANUP_SCRIPT_FILE_PATH
else
echo -e 'WANIP=`wget $WAN_IP_SOURCE_ADDR -O — 2>/dev/null`' >> $WANUP_SCRIPT_FILE_PATH
fi
echo -e wget -q 'http://ipv4.tunnelbroker.net/ipv4_end.php?ip=$WANIP'"&pass=$MD5PASSWD&apikey=$USERID&tid=$TUNNELID" >> $WANUP_SCRIPT_FILE_PATH
echo 'ip tunnel change he-ipv6 local $WANIP'>> $WANUP_SCRIPT_FILE_PATH
chmod +x $WANUP_SCRIPT_FILE_PATH
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

В верхнем блоке скрипта нужно вписать 6 параметров. Их берем со страницы туннельброкера. Кавычки оставляем.
Про скрипт: общими словами он устанавливает соединение с туннелем ipv6, апдейтит на туннельброкере наш внешний ип адрес, настраивает маршрутизацию.
Если возникнут проблемы смотрим скрины:
Скрины
image
image

3) Далее заходим на вэб морду роутера и проверяем галки Use Dnsmasq for DHCP/DNS на странице настройки DHCP сервера. Они должны быть включены.
Потом идем в Administration > Commands. Вставляем туда наш скрипт, жмем Save Startup.
Далее Переходим в Administration > Managment. Включаем Ipv6 Support и Radvd enabled. Поле конфига оставляем пустым.
Еще можно на этой же странице включить Cron, и вбить туда
* 4 * * * root /tmp/report.sh
Тогда, на сколько я понял, обновляет конечную точку каждый день в 4 утра.
Теперь жмем Apply Settings, потом Reboot Router.

4) Проверяем на каком-нибудь aaaa.test-ipv6.com или ipv6.google.com

PS: У меня на одной из версий прошивок скрипт не запустился, отвалился клон мак адреса и ван. Я просто зашел на роутер и удалил скрипт автозапуска (Administration > Commands > ничего не вбивая жмем Save Startup). Потом скачал другую версию прошивки, установил ее, вписал скрипт и все заработало. Так что если что-то не пошло, попробуйте другую версию. У меня для роутера Linksys WRT610N v1 пошло на прошивке отсюда . Сама прошивка.
К сожалению ни в линуксе, на котором основана прошивка роутера, ни в Ipv6 технологиях я не силен, так что могут быть определенные не точности. Но данных достаточно, что бы настроить без проблем у себя ipv6

Ссылки:
www.dd-wrt.com/site/index
www.tunnelbroker.net
www.dd-wrt.com/wiki/index.php/IPv6_setup_Hurricane_Electric_Tunnel_Broker
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.