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

Опубликовано

Что такое динамический DNS думаю знают все. Для тех кто не знает напомню, провайдер при подключении к интернет выделяет компьютеру случайный IP-адрес. Дабы не платить провайдеру денег за постоянный IP придумали динамический DNS, программа-клиент на компьютере пользователя отслеживает какой IP выдал провайдер и автоматически прописывает его в DNS, тем самым делая возможным обращение по имени. Зачем это нужно? Бывают разные применения, например, на домашнем компьютере поднят web-сервер

и нужно чтобы сайт расположенный на нем посещали люди.Существует достаточно много сервисов, предоставляющий подобный функционал, однако, если нужно реализовать подобное на собственном домене, скорее всего эти сервисы попросят заплатить денег.Я уже писал о том как можно реализовать динамический DNS если у Вас есть сервер с ISPmanager, однако решение описанное в той заметке очень уж специфично для моих личных обстоятельств. Сейчас мои сайты благополочно переехали на выделенный сервер, где есть запущенный Apache, а значит ISPmanager доступен через браузер, соответственно вызывать mgrctl из командной строки у меня больше надобности нет.Сегодня я перенес свой DynDNS туда же на выделенный сервер, набросав вот такой скрипт.

#!/bin/shecho Content-type: text/plainechoIP=`/usr/bin/host sub.dom.ru ns1.dom.ru |/usr/bin/awk '/sub/ { print $4 }'`CMD='/usr/bin/fetch -q -o /dev/null'POST='http://127.0.0.1/manager/ispmgr?\authinfo=dns:123&func=domain.sublist.edit&\name=sub&sdtype=A&sok=yes&plid=dom.ru&'echo -n 'Your IP is 'echo -n $REMOTE_ADDRif [ $IP != $REMOTE_ADDR ]; thenecho -n '. Updating... '`$CMD $POST'elid=sub+A++'$IP'&addr='$REMOTE_ADDR'`echo Done.elseecho '. Noting to do.'fi

Данный скрипт можно положить куда-нибудь в cgi-bin одного из сайтов на сервере и вызвать его из браузера. При этом скрипт спросит у DNS сервера текущий IP для домена третьего уровня sub.dom.ru, авторизуется в ISPmanager на сервере пользователем dns с паролем 123 и установит IP для sub.dom.ru тем, с которого была вызвана страничка.Из интересного: