Сам себе Dynamic DNS Используем ppd.yandex.ru для создания своего dyndns для домашнего сайта

Всем доброго времени суток!

Решил поделиться решением, которое использую несколько лет для домашнего сайта. В свое время домашний провайдер за небольшое количество денег предоставлял статический IP адрес и проблем собственно не было, потом эту услугу похоронили, оставив так называемый динамический реальный IP адрес (DHCP). Который никак не резервируется, т.е. при перезагрузке роутера в 99% адрес изменится. Т.к. за сайтом приглядываю вяло, часто о смене адреса узнавал от metrika.yandex.ru. В общем если интересно, то прошу пройти далее

Итак есть у нас домен второго уровня domain.ru и домен третьего уровня www.domain.ru. В принципе доменов может быть сколько угодно, для простоты я взял два. Домен должен быть делегирован на ppd.yandex.ru, что очень просто делается. Я буду использовать сервер с операционной системой FreeBSD 10.2, curl и простой скрипт на sh,  решение должно работать на любой UNIX подобной ОС. Предварительно нужно так же установить curl, cd /usr/ports/ftp/curl && make install clean. (В Ubuntu sudo apt-get install curl libcurl3 libcurl3-dev)

Нам нужно используя сравнение текущего IP адреса сервера на котором размещен наш домен с записью DNS и если адреса не совпадают, произвести замену IP адреса в pdd.yandex.ru используя предоставленное яндексом API.

Текущий IP адрес будем дергать отсюда http://yandex.ru/internet.

Для использования API, прежде всего необходимо получен токен от яндекса на странице  в domain name вводим наш домен второго уровня (например domain.ru) жмем Get token и копируем (в notepad, winword, etc) полученный результат вида 123456789ABCDEF0000000000000000000000000000000000000

Получаем все записи для домена на нашем аккаунте

В выводе нас интересуют записи типа «A» («type»: «A»), при условии, что почтовый сервер мы используем от Яндекса, в противном случае возможно вам понадобятся так же MX запись(и).
Из вывода нам нужно скопировать «record_id» для нужных нам доменов.  Для основного домена (второго уровня domain.ru ) record_id берется из строки «subdomain»: «@»

Создадим наш скрипт, который будем время от времени дергать по cron

Меняем значения в переменных, подставляя наши значения домена(ов), токен

Сохраняем скрипт, делаем его исполняемым
chmod +x /home/admins/scripts/dyndns.sh
и добавляем задание в crontab (crontab -u user -e), будем дергать каждые 10 минут
*/2 * * * * /home/admins/scripts/dyndns.sh  >/dev/null 2>&1

Ну вроде как все, спасибо за внимание!

Описание, примеры API 

Сам себе Dynamic DNS Используем ppd.yandex.ru для создания своего dyndns для домашнего сайта: 2 комментария

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *