Бесплатная альтернатива DynDNS

1347998788_dns

Приветствую!

Сегодня расскажу о своей реализации, бесплатной альтернативы сервисов типа DynDNS.

Я знаю что есть множество сервисов предоставляющих свои услуги бесплатно. Но!

У некоторых из них есть какие-либо определённые условия по использованию.

Хотелось написать что-то своё. Так как очень необходим опыт по написанию BASH скриптов.

Своё всегда приятнее 🙂

Так как я использую систему умного дома MDM, то конечно хотелось бы заходить на WEB морду системы используя домен и не переживая за то, что у меня измениться IP. А так как он у меня динамический, то понятное дело хотя бы раз в 1 неделю он будет обновляться. Возможность заказать статический IP есть, но платить за такое не очень хочется, потому-что не резонно. Я лично не понимаю почему я должен платить за то, что мне ранее предоставлялось бесплатно.

Продолжим…

У Яндекса появились, по вей видимости давно, API для изменения записей для доменов делегированных на их NS. Но к сожалению, я об этом узнал буквально недавно.

Чем нам это может быть полезно? А тем что мы, написав небольшой скрипт, можем автоматом отправлять запросы на изменение IP для домена, и таким образом не переживать о том, что в какой-то момент мы не сможем попасть туда, куда нам необходимо. В моём случае система умного дома.

Для реализации этого, нам понадобиться домен и сервер который будет производить отправку запроса на изменение, то есть сервер на котором мы и будем использовать скрипт.

В случае если у Вас уже есть домен, Вам проще. Тем у кого домена нет, для этих целей можно зарегистрировать бесплатный в зоне: pp.ua — http://www.pp.ua/. Я себе регистрировал на http://nic.ua/.

domain

После получения доменного имени в своё распоряжение, необходимо делегировать его на NS Яндекса. Для этого у Вашего регистратора смените NS на:

  • dns1.yandex.net
  • dns2.yandex.net

ns

 

Далее необходимо получить ID записи, которую необходимо изменять, а так же токен. Хочу заметить, что все процедуры необходимо выполнять залогинившись в систему Яндекса.

Для получения токена необходимо перейти по ссылке: https://pddimp.yandex.ru/api2/admin/get_token ввести капчу и имя домена который направляли на NS Яндекса и нажать: «Get token». После этого Вам будет отображена длинная строка содержащая число-буквенное значение. Это и есть токен. Его необходимо куда-то сохранить, так как в дальнейшем будем его использовать.

Для получения ID записи необходимо выполнить в командной строке:

Где «domain.com» имя Вашего домена, а «123456789ABCDEF0000000000000000000000000000000000000» Ваш токен.

В ответ Вы получите просто чудовищную кучу информации, в которой не трудно запутаться. Но! Если разобраться, то всё на много проще! Символы: «}, {» отделяют одну запись от другой, и если Вы расставите все записи с новой строки, Вы поймете на сколько всё просто. В моём случае, мне необходимы ID двух записей. Для «@» — то есть главной записи, и для субдомена: «www».

Мои записи выглядят так:

 

Пояснения:

«ip_server» — IP адрес. Как раз тот который мы и будем изменять.

«domain.pp.ua» — Сам домен на котором будут производиться изменения.

«type» — Тип записи. В нашем случае, А запись, так как именно она отвечает за то, откуда будет открываться домен.

«record_id» — ID нашей записи. Именно то, что нам и нужно.

 

После того как мы получили всю необходимую информацию, осталось написать сам скрипт…

Код моего скрипта таков:

 

Содержимое файла: /etc/ddnsy/ddnsy.conf  то есть конфига:

 

Все не очень красиво написано. Но оно работает, и для меня, это самое главное.

Сам WordPress почему-то криво отображает код написанный не в его редакторе, потому в конце статьи я указал ссылку на github где расположен код скрипта. Так-что рекомендую всем брать код именно с git-а.

После написания скрипта, я дал ему права на выполнение  и добавил скрипт в крон.

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

 

Будьте внимательны! Все действия производились в Linux системе. Для Windows пока этот скрипт не подходит. Но! Планирую написать этот же скрипт на PHP для того что бы его можно было использовать на Windows платформе. В случае необходимости, могу быстро набросать софт на VisualBasic, который выполнял бы те же функции но был ещё и с GUI.

На данный момент, добавить больше нечего.  В случае если у Вас появятся какие либо дополнительные вопросы, всегда буду рад помочь.

 

Сам скрпит и конфиг файл, я расположил на github-е. В случае необходимости, Вы всегда сможете найти новую его версию тут: https://github.com/warik-zp/ddnsy

 

 

А пока у меня всё. Всем добра 🙂


Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.

Оставить комментарий

Введите результат: * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.