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

Настройка сервиса 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%" Нагло стырено с просторов Интернет

Как качать видео в Google Chrome без расширений и программ

Таким образом можно скачивать и аудио файлы, статью можно было бы назвать "скачивание медиа файлов", но народ в основном качает видео. На странице с видео, не запуская видео плеер(!), кликаете правой клавишей мыши по свободному месту на странице, выбираете "просмотр кода элемента" в контекстном меню. Можно использовать и горячие клавиши - Ctrl+Shift+I. Как откроется окно "инструментов разработчика", переходите на вкладку Network. Затем запускаете видео и ищете свой видео файл. Можно сразу отфильтровать ненужное, для этого надо нажать на значок "clear" внизу (на скрине он обозначен). Найдя свой файл, кликните по нему.Откроется рубрика "headers" с данными о файле. Там будет и ссылка - "Request URL". Ссылку надо скопировать и вставить(и перейти) в адресную строку. Когда страница начнет грузиться, то останется только в меню Chrome выбрать "Сохранить страницу как..." или Ctrl+S. Если долго не всплывает окно...