Есть чудесный бесплатный сервис Cloudflare, который позволяет прятать свой реальный ip при использовании доменных имен. Быстро изменяет записи на всех доменных именах и за деньги может даже отфильтровать трафик от флуда и прочей грязи (но это уже другая история, скажем дорогая и не удобная история)
Сразу привожу полный скрипт, а нижу будет разбор полётов.
######## Set and collect general variables ######### :global hostname "soft.hd.zp.ua" :global resolvedIP "" :global externalIP "" :global WANInterface "ISP1" ######## Set CloudFlare variables ################# :local CFemail "[email protected]" :local CFtkn "3c8b585915544145becded4f2b58068177a33" :local CFzone "hd.zp.ua" :local CFid "178055949" :local CFtype "A" :local CFttl "1" :local CFservicemode "0" :local CFDomain "soft" :local CFDebug "true" ######## Resolve and set IP-variables ########## /ip dns cache flush :local currentIP [/ip address get [/ip address find interface="ISP1" ] address]; :set externalIP [:pick $currentIP 0 [:find $currentIP "/"]]; :set resolvedIP [:resolve $hostname]; ######## Build CF API Url ######################### :local CFurl "https://www.cloudflare.com/api_json.html\3F" :set CFurl ($CFurl . "a=rec_edit&tkn=$CFtkn&id=$CFid"); :set CFurl ($CFurl . "&email=$CFemail&z=$CFzone&type=$CFtype"); :set CFurl ($CFurl . "&name=$CFDomain&service_mode=$CFservicemode&ttl=$CFttl"); ######## Write debug info to log ################# :if ($CFDebug = "true") do={ :log info ("CF: hostname = $hostname") :log info ("CF: resolvedIP = $resolvedIP") :log info ("CF: currentIP = $currentIP") :log info ("CF: externalIP = $externalIP") :log info ("CF: CFurl = $CFurl&content=$externalIP") }; ######## Compare and update CF if necessary ##### :if ($resolvedIP != $externalIP) do={ :log info ("CF: Updating CF, setting $CFDomain = $externalIP") /tool fetch mode=https url="$CFurl&content=$externalIP" keep-result=no /ip dns cache flush } else={ :log info "CF: No Update Needed!" }
:global hostname «soft.hd.zp.ua» — это полный адрес поддомена
:global WANInterface «ISP1» — интерфейс Mikrotik с динамическим IP который смотрит в интернет
:local CFemail «[email protected]» — почта Вашей учётной записи на Cloudflare
:local CFtkn «3c8b585915544145becded4f2b58068177a33» — это секретный ключик Вашей учётки на Cloudflare, взять можно тут Account — My account — Your API key is: 3c8b585915544145becded4f2b58068177a33
:local CFzone «hd.zp.ua» — Ваш домен
:local CFid «178455949» — это ключ домена, как получить чуть ниже
:local CFtype «A» — тип записи
:local CFttl «1»
:local CFservicemode «0» — скрывать или нет ip адрес, если скрывать, поставить «1»
:local CFDomain «soft» — имя субдомена
:local CFDebug «true» — дебажим или нет
И так, как получить :local CFid для определенного субдомена
Для этого нужен любой сервер под Linux
Заходим через ssh или telnet на сервер и даём команду
curl https://www.cloudflare.com/api_json.html -d ‘a=rec_load_all’ -d ‘tkn=3c8b585915544145becded4f2b58068177a33′ -d ’[email protected]’ -d ‘z=hd.zp.ua’
Опять же:
tkn=3c8b585915544145becded4f2b58068177a33 — наш ключик от учётки
[email protected] — email учётной записи
z=hd.zp.ua — наш домен
Получим в ответ многабукаф по всем записям домена hd.zp.ua
Нам необходимо найти rec_id»:»178455949″ принадлежащий субдомену soft.hd.zp.ua
Добавляем скрипт в System – Scripts , например с именем cloudflare soft.hd.zp.ua
После чего добавляем в System – Scheduler задание с именем cloudflare soft.hd.zp.ua и выбираем желаемый интервал выполнения.