Динамический DNS

Материал из Энциклопедия хостинга
Версия от 01:46, 5 августа 2016; I.artemev (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск


Содержание

Что это такое и зачем нужно?

Это технология обновления IP-адреса Вашего домена.

Например, у Вас дома есть широкий интернет-канал, и на Вашем компьютере запущен FTP-сервер, с которого Вы позволяете скачивать файлы своим знакомым. Ваш интернет-провайдер каждый раз при Вашем подключении к сети выдает Вам случайный IP-адрес из числа свободных у него. Как сообщить этот адрес друзьям? Делать рассылку каждый раз подключаясь к сети не очень правильно. Правильно — зарегистрировать себе аккаунт в DynDNS-сервисе, поставить на компьютер специальный клиент, который будет следить за адресом и обновлять его при необходимости, а все Ваши друзья смогут использовать доменное имя для доступа к Вашему FTP.

Делаем DynDNS на VDS

Следует учесть, что если Вы хотите использовать в качестве DynDNS-адреса свой домен или поддомен, то скорее всего аккаунт в DynDNS сервисе придется оплачивать.

Поскольку у Вас уже есть VDS от FirstVDS c панелью ISPmanager платить в два места смысла не имеет. Для реализации задуманного нужен будет небольшой скрипт на Shell, вот он

update.cgi

#!/bin/sh
echo Content-type: text/plain
echo
IP=`/usr/bin/host sub.dom.ru ns1.dom.ru |/usr/bin/awk '/sub/ { print $4 }'`
CMD='/usr/bin/fetch -q -o /dev/null'

//Если ISPmanager 4, то используем эту строку
POST='http://127.0.0.1/manager/ispmgr?authinfo=dns:q1w2e3&func=domain.sublist.edit&name=sub&sdtype=A&sok=yes&plid=dom.ru&'
//Если ISPmanager 5, то используем эту строку
POST='https://127.0.0.1:1500/ispmgr?authinfo=dns:q1w2e3&func=domain.record.edit&name=sub&sdtype=A&sok=ok&plid=dom.ru&'

echo -n 'Your IP is '
echo -n $REMOTE_ADDR
if [ $IP != $REMOTE_ADDR ]; then
        echo -n '. Updating... '

        //Если ISPmanager 5, то используем эту строку
        `$CMD $POST'elid=sub+A++'$IP'&ip='$REMOTE_ADDR'`

        echo Done.
else
echo '. Noting to do.'
fi

Для скрипта целесообразно создать отдельную директорию на сайте, допустим /cgi-bin/dns/ и сделать к ней доступ по паролю с помощью меню Ограничение доступа.

Как это работает

Для изменения IP-адреса записи в домене используется API ISPmanager, разберем скрипт построчно

#!/bin/sh

Наш скрипт на Shell, вызываем командный интерпретатор

echo Content-type: text/plain
echo

Определяем тип отдаваемой скриптом странички

IP=`/usr/bin/host sub.dom.ru ns1.dom.ru |/usr/bin/awk '/sub/ { print $4 }'`

Узнаем какой сейчас IP у записи sub.dom.ru

CMD='/usr/bin/fetch -q -o /dev/null'

Или определяем команду для вызова для ISPmanager 5

POST='https://127.0.0.1:1500/ispmgr?authinfo=dns:q1w2e3&func=domain.record.edit&name=sub&sdtype=A&sok=ok&plid=dom.ru&'

В эту переменную вынесены те параметры запроса, которые изменяться не будут

echo -n 'Your IP is '
echo -n $REMOTE_ADDR

Выдаем текст в браузер

if [ $IP != $REMOTE_ADDR ]; then

Если IP который отдает DNS не совпадает с тем, с которого мы пришли

echo -n '. Updating... '

Выдаем текст в браузер и

Для ISPmanager 5

`$CMD $POST'elid=sub+A++'$IP'&ip='$REMOTE_ADDR'`

Формируем запрос для ISPmanager API и выполняем его после чего

echo Done.

Рапортуем. Ну а если IP совпадают

else
echo '. Noting to do.'
fi

Говорим что обновление не требуется.

Теперь при заходе на страничку http://dom.ru/cgi-bin/dns/update.cgi IP-адрес с которого пришел посетитель будет прописан в DNS для домена sub.dom.ru

Для автоматического обновления можно вызывать страничку по cron с локального компьютера, например, с помощью wget

Сервисы DynDNS

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты

Заметили ошибку?

Выделите ее и нажмите CTRL+ENTER