Есть много сервисов, предоставляющих dynamic DNS, но они все либо тупые, либо платные, либо и то и то. Инструкция, как поднять собственный ddns сервер инсайд.
Нам потребуются: DNS сервер, и веб-морда для управления DDNS. Также будет нужен хотя-бы один домен, в котором можно будет регистрировать клиентов. Данная инструкция базируется на веб-морде proutdns. К сожалению автор забил на нее, и даже не выложил ту недопиленную версию, которая стоит у него самого (с поддержкой IPv6, у выложенной ее нет). Но это можно победить. Итак.
Действуем по инструкции
Опять же действуем по инструкции. Но если хочется поддержку IPv6 то надо сделать следующее:
Для начала надо зарегистрировать пользователя через вебморду и добавить там субдомен. Запишем API ключ аккаунта.
Штатное обновление DNS записи осуществляется http get запросом вида: http://адрес.морды/upd.php?key=ключ&host=хост&ip=ип, где
Это работает только для IPv4. В добавленном хаке есть еще один вариант обновления адреса, также http get запрос, но чуть другой: http://адрес.морды/my_update.php?key=ключ&host=хост&ip=ип&clean=1, где все параметры те же самые, за исключением:
#!/bin/bash IPS=http://адрес.морды/ip.php while true; do # First, retrieve IP address CURIP=`curl -s $IPS | awk '{ print $1 }'` OLDIP=`cat /tmp/oldip` # Compare to previously saved IP [ "$CURIP" == "$OLDIP" ] && sleep 300 && continue echo $CURIP > /tmp/oldip curl --silent 'http://адрес.морды/my_update.php?key=ключ&host=хост&clean=1' # Sleeeeeeep I tell you # 300 = 5 minutes sleep 300 done
--retries 10 --log_file inadyn_srv.log --dyndns_system default@freedns.afraid.org --alias хост,key=ключ&host=хост&clean=1 --update_period 60000 --dyndns_server_name адрес.морды --dyndns_server_url /my_update.php? --ip_server_name адрес.морды /ip.php
В параметре alias хост указан два раза намеренно, иначе работать не будет. Демон запускается через init.d, так что будет работать автоматически при старте системы.