воскресенье, 3 февраля 2013 г.

Бесплатный динамический DNS для Mikrotik

Вводная: IP адрес получаемый при подключении был динамическим и при переподключении менялся, соответственно для удалённого подключения необходимо было привязать к микротику сервис динамического DNS.

Решение: Самым популярным сервисом для данной задачи является DynDNS, но с 2011 года он стал платным и соответственно нам не подходит (вообще он позволяет один бесплатный домен на аккаунт, но я не разобрался как).
После недолгого поиска остановился на сервисе ChangeIP.com . Для начала регистрируемся в нём, подтверждаем аккаунт по емейлу - после этого он сразу запустит мастер создание динамической записи (здесь выбираем желаемое имя домена третьего уровня).

Для работы должен быть активирован пакет advanced-tools

Теперь собственно к настройке микротика - необходимо выполнить следующие (выполняется в консоли) -
/system script
add name=ChangeIP.com policy=ftp,reboot,read,write,policy,test,winbox,password source=":global ddnsuser \"%USERNAME%\"\r\
\n:global ddnspass \"%PASSWORD%\"\r\
\n:global ddnshost \"%ADDRESS%\"\r\
\n:global ddnsinterface \"pppoe-out1\"\r\
\n\r\
\n:global ddnssystem (\"mt-\" . [/system package get [/system package find name=system] version] )\r\
\n:global ddnsip [ /ip address get [/ip address find interface=\$ddnsinterface] address ]\r\
\n:global ddnslastip\r\
\n\r\
\n:if ([:len [/interface find name=\$ddnsinterface]] = 0 ) do={ :log info \"DDNS: No interface named \$ddnsinterface, please check configuration.\" }\r\
\n:if ([ :typeof \$ddnslastip ] = \"nothing\" ) do={ :global ddnslastip 0.0.0.0/0 }\r\
\n:if ([ :typeof \$ddnsip ] = \"nothing\" ) do={\r\
\n:log info (\"DDNS: No ip address present on \" . \$ddnsinterface . \", please check.\")\r\
\n} else={\r\
\n :if (\$ddnsip != \$ddnslastip) do={\r\
\n :log info \"DDNS: Sending UPDATE!\"\r\
\n :log info [ :put [/tool dns-update name=\$ddnshost address=[:pick \$ddnsip 0 [:find \$ddnsip \"/\"] ] key-name=\$ddnsuser key=\$ddnspass ] ]\r\
\n :global ddnslastip \$ddnsip\r\
\n } else={ \r\
\n :log info \"DDNS: No changes necessary.\"\r\
\n }\r\
  \n}"
Заменив %USERNAME%, %PASSWORD%, %ADDRESS%  на свои данные (зарегистрированные в changeip.com). Не забудьте также заменить "pppoe-out1" на имя интерфейса через который выполняется выход в интернет.

Далее необходимо поставить данный скрипт на периодическое выполнение (к примеру каждые 5 минут)
/system scheduler
add interval=5m name=ChangeIP.com on-event=ChangeIP.com policy=read,write,policy,test,password start-time=startup