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

Dynamic DNS — очень полезная штука для тех кто не желает отстегивать провайдеру денег за постоянный IP-адрес. Зачем это надо каждый разбирается сам, мне вот иногда нужно домой ходить по SSH и HTTPS, а вычислять IP методом тыка не хочется.

Для организации динамического DNS нам потребуется VDS с установленным ISPmanager. Все делается с помощью ISPmanager API, описание которого есть в документации. Можно дергать нужный URL например wget'ом, но это не мой случай, т.к. apache у меня остановлен и доступа в панель через браузер нет, а можно использовать утилиту mgrctl, вот это как раз мой вариант.

Система (о как громко сказал) состоит из двух скриптов, серверного и клиентского.

Клиентский скрипт выясняет текущий IP в DNS, сравнивает его с тем что выдан провайдером и при необходимости выполняет процедуру обновления:

#!/bin/sh
date
if [ -f /var/run/tun0.pid ]; then
CURIP=`/sbin/ifconfig tun0 |/usr/bin/grep |/usr/bin/awk {'print $2'}`
echo Current IP is $CURIP, getting IP from DNS server
DNSIP=`/usr/sbin/host homelan.megaded.info 82.146.33.122 |grep homelan |awk {'print $4'}`
echo IP in DNS is $DNSIP
if [ $DNSIP != $CURIP ]; then
echo Updating DNS
/usr/bin/ssh root@82.146.33.122 /root/bin/updns.sh $DNSIP $CURIP >> /root/mydyndns/ssh.log
echo IP-address set to $CURIP
echo «--»
else
echo Noting to do. Exiting
echo «--»
fi
else
echo No link
echo «--»
fi

Если необходимо обновление вызывается серверный скрипт, которому в качестве параметров передаются текущий IP в DNS и IP на который его сменить, он и выполняет обновление.

#!/bin/sh
/usr/local/ispmgr/sbin/mgrctl domain.sublist.edit elid="homelan A "$1 plid=megaded.info name=homelan sdtype=A addr=$2 sok=yes
/usr/local/ispmgr/sbin/mgrctl domain.fix elid=megaded.info

Ну и для записи в зоне нужно TTL сделать поменьше, у меня — 10 секунд.

Вроде все.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
Тэги: , ,

Связанные записи