К основному контенту

Настройка сервиса SkyDNS на роутере Mikrotik с динамическим адресом

Вводная: Есть роутер Mikrotik с динамическим IP адресом и бесплатный аккаунт SkyDNS (про сервис можно прочитать на сайте - https://www.skydns.ru/ ). Необходимо реализовать возможность фильтрации через сервис SkyDNS.

Решение: Первоначально было не совсем понятно, как реализовать данный функционал - в инструкциях https://www.skydns.ru/info/guide и FAQ https://www.skydns.ru/info/faq информации по динамическому обновлению без специальных программ нет. Среди роутеров, с динамическим адресом, прозрачно работает только Zyxel серии Keenetic (https://www.skydns.ru/info/guides/zyxel-keenetic).

Дальнейшее чтение навело на "Поддержка динамических ip-адресов в Linux, FreeBSD, и других UNIX" https://www.skydns.ru/info/guides/ddclient в которой описывался способ настройки через программу ddclient. Она была скачана и просмотрены исходники - работает она достаточно просто. В зависимости от указанных настроек генерируется URL, переходом на который и обновляется текущий IP адрес для фильтрации. Итоговый URL выглядит таким образом - http://email:password@www.skydns.ru/nic/update?hostname=notebook.

Далее был создан скрипт, который автоматически выполняет данное действие на роутере Mikrotik. Причём для снижения нагрузки на сервера SkyDNS, скрипт проверяет, было ли уже выполнено обновление для текущего IP адреса. (не забудьте прописать свои данные в первые четыре строки)


:global skyduser "email"
:global skydpass "password"
:global skydhost "notebook"
:global skydinterface "pppoe-out1"

:global skydip
:global skydlastip

:global skydip [ /ip address get [/ip address find interface=$skydinterface ] address ]

:if ([ :typeof $skydlastip ] = "nothing" ) do={ :global skydlastip 0.0.0.0/0 }
:if ([ :typeof $skydip ] = "nothing" ) do={
:log info ("SkyDNS: No ip address present on " . $skydinterface . ", please check.")
} else={
:if ($skydip != $skydlastip) do={
:local str "/nic/update?hostname=$skydhost"
/tool fetch address=www.skydns.ru src-path=$str mode=http user=$skyduser password=$skydpass dst-path=("/SkyDNS.".$skydhost)
:delay 2
:local str [/file find name="SkyDNS.$skydhost"];
/file remove $str
:log info ("SkyDNS: UPDATE! ".$skydip)
:global skydlastip $skydip
}
}


Затем ставим наш скрипт на периодическое выполнение
/system scheduler
add interval=10m name=SkyDNSDinamic on-event=SkyDNSDinamic \
policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \
start-time=startup


И настраиваем наш роутер на работу в качестве сервера DNS
/ip dns
set allow-remote-requests=yes servers=193.58.251.251


Теперь достаточно указывать адрес нашего роутера, как DNS-сервера для клиентов (вручную или лучше указав его в DHCP)
Дополнительные ссылки -
http://habrahabr.ru/company/skydns/blog/110450/ - про сервис SkyDNS на habrahabr
http://dyn.com/support/developers/api/perform-update/ - про API DynDNS
https://www.skydns.ru/info/guides/ddclient - про ddclient

Материал скопирован. Оригинал: http://arxont.blogspot.ru/2013/06/skydns-mikrotik.html

Комментарии

Популярные сообщения из этого блога

OpenOffice. Calc. Символ «'» перед числом

Постоянно забываю как убрать принудительное текстовое форматирование в таблицах OpenOffice, поэтому просто копирую эту статью из базы знаний: Символ «'» (апостроф) Если перед числами в строке ввода стоит символ «'», то в этом случае цифры не распознаются как числа. Символ «'» (апостроф) является символом принудительного форматирования данных «как текст», поэтому он не отображается в ячейках; увидеть его можно только в строке ввода перед данными. «Язык формул» электронных таблиц разработан задолго до появления MS Windows и Microsoft Office. Символ «апостроф» в начале содержимого ячейки всегда был символом принудительного форматирования содержимого «как текст». Данный способ форматирования является преимущественным перед форматом ячейки. Так работали Quatro Pro, Super Calc, таблицы Lotus 1-2-3. Так работают и все современные электронные таблицы. «'» перед цифровыми значениями следует использовать, когда вводятся константы, не являющиеся числами. Например ...

Как с помощью bat-файла удалить последний символ в каждой строке текстового файла

@Echo Off SetLocal EnableDelayedExpansion Set file=e:\Temp1\temp.txt Set newfile=e:\Temp1\newtemp.txt (For /F "tokens=* usebackq delims=" %%a In ("%file%") Do (   Set ta=%%a   Echo !ta:~0,-1! ))>"%newfile%" Нагло стырено с просторов Интернет

Windows 2008. Завершение сеанса пользователей RemoteApp

В службах удаленных рабочих столов Windows 2008 появилась возможность использовать seamless приложения, бесшовно интегрирующиеся в рабочий стол клиента, что, несомненно, очень удобно с точки зрения пользователя. Но это повлекло за собой следующую проблему, с которой я перманентно пытался бороться пару месяцев, пока всё-таки не решил взяться и почитать мануал. Проблема заключалась в следующем: пользователь, завершивший работу с программой на сервере удаленных рабочих столов не мог подключиться к ней заново, получая черный экран вместо окна приветствия. Оказалось, что пользователи RemoteApp по завершению сеанса не покидают сервер, а находятся в состоянии "отключено". Побороть эту проблему помог специальный параметр групповой политики и этот мануал . Итак, вот что нам поможет: gpedit.msc - Конфигурация компьютера - Административные шаблоны - Компоненты Windows - Службы удаленных рабочих столов - Узел сеансов удаленных рабочих столов - Ограничение сеансов по времени - Задать пр...