Skip to content

Instantly share code, notes, and snippets.

@volkmax777
Last active October 1, 2024 13:03
Show Gist options
  • Save volkmax777/5936b01959d3bd1687f5ed35af8343b8 to your computer and use it in GitHub Desktop.
Save volkmax777/5936b01959d3bd1687f5ed35af8343b8 to your computer and use it in GitHub Desktop.
Динамическое обновление IP WAN в сервисе 6in4.ru на OpenWRT

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

opkg update
opkg install 6in4 curl

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

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

mkdir -p /etc/hotplug.d/iface

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

cat << "EOF" > /etc/hotplug.d/iface/90-online
if [ "${INTERFACE}" = "loopback" ]
then exit 0
fi
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

mkdir -p /etc/hotplug.d/online

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

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

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

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

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

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

https://openwrt.org/docs/guide-user/advanced/hotplug_extras

https://openwrt.org/docs/guide-developer/network-scripting#get_wan_address

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment