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

Настройка сервиса 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

Комментарии

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

Как с помощью 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%" Нагло стырено с просторов Интернет

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

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

Пример bat-файла для удаления файлов на ftp по заранее определенной маске

@echo off SetLocal EnableDelayedExpansion rem Определяем переменные SET CONF=ftp.cnf SET FILELIST=f.txt SET HOST=ftp.host.lan SET USERNAME=ftpuser SET PASSWORD=PaS$w0Rd rem  Создаем файл конфигурации для автоматизации работы ftp-клиента rem в котором сканируем файлы по маске с учетом регистра echo.open %HOST%> %CONF% echo.%USERNAME%>> %CONF% echo.%PASSWORD%>> %CONF% echo.binary>> %CONF% echo.ls *_IN.zip>> %CONF% echo.ls *_IN.ZIP>> %CONF% echo.ls *_in.zip>> %CONF% echo.ls *_in.ZIP>> %CONF% echo.bye>> %CONF% rem Запускаем ftp-клиент в автоматическом режиме, rem выводим результаты просмотра каталога в текстовый файл, rem  фильтруя выводимые имена файлов ftp -s:%CONF% | findstr /i "[a-z,_,0-9]_IN.zip" > %FILELIST% rem Вторично создаем файл конфигурации echo.open %HOST%> %CONF% echo.%USERNAME%>> %CONF% echo.%PASSWORD%>> %CONF% echo.binary>>%CONF% rem Записываем в конфигу