Сам себе DynDNS
В общем-то в большей степени памятка для себя, но может еще кому пригодится.Dynamic DNS - очень полезная штука для тех кто не желает отстегивать провайдеру денег за постоянный IP-адрес. Зачем это надо каждый разбирается сам, мне вот иногда нужно домой ходить по SSH и HTTPS, а вычислять IP методом тыка не хочется.Для организации динамического DNS нам потребуется VDS с установленным ISPmanager. Все делается с помощью ISPmanager API, описание которого есть в документации. Можно дергать нужный URL например wget'ом, но это не мой случай, т.к. apache у меня остановлен и доступа в панель через браузер нет, а можно использовать утилиту mgrctl, вот это как раз мой вариант.Система (о как громко сказал) состоит из двух скриптов, серверного и клиентского.Клиентский скрипт выясняет текущий IP в DNS, сравнивает его с тем что выдан провайдером и при необходимости выполняет процедуру обновления:
#!/bin/shdateif [ -f /var/run/tun0.pid ]; thenCURIP=`/sbin/ifconfig tun0 |/usr/bin/grep inet |/usr/bin/awk {'print $2'}`echo Current IP is $CURIP, getting IP from DNS serverDNSIP=`/usr/sbin/host homelan.megaded.info 82.146.33.122 |grep homelan |awk {'print $4'}`echo IP in DNS is $DNSIPif [ $DNSIP != $CURIP ]; thenecho Updating DNS/usr/bin/ssh root@82.146.33.122 /root/bin/updns.sh $DNSIP $CURIP >> /root/mydyndns/ssh.logecho IP-address set to $CURIPecho "--"elseecho Noting to do. Exitingecho "--"fielseecho No linkecho "--"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 секунд.Вроде все.
Комментарии
http://slava-ls.livejournal.com/
Зачем так то, ходить куда-то рутом по ssh да еще по ключу без пароля (или как у тебя в кроне будет скрипт авторизовываться на 82.146.33.122)
Не проще ли сходить в ISPmanager по https и там соответственно внести записи нужные в DNS? ;)
Meg@DED
Сходить по https не проще, я об этом выше написал, во-первых самому мне туда идти лень, а во-вторых у меня apache не запущен.
Ну а хожедние root'ом по ssh дано только в качестве примера, не более, да и вообще ничего плохого я в этом не вижу.