Skip to content

6in4 for OpenWRT

Ставим пакеты 6in4 и curl

1
2
opkg update
opkg install 6in4 curl

В файле /etc/config/network прописываем

1
2
3
4
5
config interface 'wan6'
        option proto '6in4'
        option peeraddr '<SERVER IP>'
        option ip6addr '<IPv6 CLIENT P2P>'
        list ip6prefix '<IPv6 PD ADDRESS/64>'

Значения переменных берём на сайте 6in4.ru

Далее для динамического обновления IP WAN на сайте добавляем возможность выполнения скриптов при подключении к сети

Создаём директорию в hotplug.d

1
mkdir -p /etc/hotplug.d/iface

Добавляем скрипт

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
cat << "EOF" > /etc/hotplug.d/iface/90-online
[ "${INTERFACE}" != "loopback" ] || exit 0
if [ "${ACTION}" != "ifup" ] \
&& [ "${ACTION}" != "ifupdate" ]
then exit 0
fi
if [ "${ACTION}" = "ifupdate" ] \
&& [ -z "${IFUPDATE_ADDRESSES}" ] \
&& [ -z "${IFUPDATE_DATA}" ]
then exit 0
fi
hotplug-call online
EOF
cat << "EOF" >> /etc/sysupgrade.conf
/etc/hotplug.d/iface/90-online
EOF

Далее создаём директорию online

1
mkdir -p /etc/hotplug.d/online

И туда добавляем скрипт в котором <API KEY> и <TUNNEL ID> меняем на свои значения с сайта

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
cat << "EOF" > /etc/hotplug.d/online/10-send-wan-ip-to-6in4ru
. /lib/functions/network.sh
network_flush_cache
network_find_wan WAN_IF
network_get_ipaddr WAN_ADDR "${WAN_IF}"
curl -v --request PUT \
--url https://6in4.ru/tunnel/<API KEY>/<TUNNEL ID> \
--header 'Content-Type: application/json' \
--data '{"ipv4remote": "'$WAN_ADDR'"}'
EOF
cat << "EOF" >> /etc/sysupgrade.conf
/etc/hotplug.d/online/10-send-wan-ip-to-6in4ru
EOF

Проверяем командой hotplug-call online

Если IPv4 Client address в личном кабинете на сайте поменялся на ваш WAN IP значит всё сделали правильно.

Теперь при каждом подключении к сети IPv4 Client address будет обновляться на текущий

Информацию брал тут

  1. https://openwrt.org/docs/guide-user/advanced/hotplug_extras
  2. https://openwrt.org/docs/guide-developer/network-scripting#get_wan_address

EOF