# Update Hurricane Electric IPv6 Tunnel Client IPv4 address
:local HEtunnelinterface "6to4 Interface name"
:local HEtunnelid "Tunnel ID"
:local HEuserid "Username"
:local HEmd5pass "Update Key"
:local HEupdatehost "ipv4.tunnelbroker.net"
:local HEupdatepath "/nic/update"
:local WANinterface "WAN Interface name"
:local outputfile ("HE-" . $HEtunnelid . ".txt")
# Internal processing below...
# ----------------------------------
:local HEipv4addr
# Get WAN interface IP address
:set HEipv4addr [/ip address get [/ip address find interface=$WANinterface] address]
:set HEipv4addr [:pick [:tostr $HEipv4addr] 0 [:find [:tostr $HEipv4addr] "/"]]
:if ([:len $HEipv4addr] = 0) do={
:log error ("Could not get IP for interface " . $WANinterface)
:error ("Could not get IP for interface " . $WANinterface)
}
# Update the HEtunnelinterface with WAN IP
/interface 6to4 {
:if ([get ($HEtunnelinterface) local-address] != $HEipv4addr) do={
:log info ("Updating " . $HEtunnelinterface . " local-address with new IP " . $HEipv4addr . "...")
set ($HEtunnelinterface) local-address=$HEipv4addr
}
}
:log info ("Updating IPv6 Tunnel " . $HEtunnelid . " Client IPv4 address to new IP " . $HEipv4addr . "...")
/tool fetch mode=https \
host=($HEupdatehost) \
url=("https://" . $HEupdatehost . $HEupdatepath . \
"?hostname=" . $HEtunnelid . \
"&myip=" . $HEipv4addr) \
user=($HEuserid) \
password=($HEmd5pass) \
dst-path=($outputfile)
:log info ([/file get ($outputfile) contents])
/file remove ($outputfile)
Удобно запускать по факту поднятия PPP-соединения (если WAN через него), прописав скрипт в параметре On Up в ppp rofile. В ином случае закускать по шедуллеру.
Последний раз редактировалось mos6581 14 фев 2017, 10:37, всего редактировалось 1 раз.
Так, только малюсенькое уточнение... Там добрая часть скрипта предназначена для выяснения HEipv4addr. И в новом запросе этот адрес не используется (определяется на стороне HE автоматически?). Если оно не надо - то половину скрипта, получается, можно выкинуть?
Вы правы, тут недоработка в следствие того, что сервис сам определяет IPv4 адрес с которого пришел запрос. Дополненный скрипт, который передает IPv4-адрес с указанного WAN-интерфейса: