Сам себе DynDNS.com или как я настраивал Dynamic DNS

Z@Zmaster

Администратор
Команда форума
15 Июн 2005
4,718
12
38
#1
Если сайт DynDNS.com вам чёмнибудь говорит, то эта статья вам может пригодиться.

Итак, имеем: свой DNS сервер myserver.com(BIND, primary & secondary), динамический айпи, желание повесить свой домен example.com на этот динамический айпи не платя денег жадным ублюдка из DynDNS.

Всё просто!
Генерируем ключ:
Код:
# dnssec-keygen -a HMAC-MD5 -b 512 -n USER example
Kexample.+157+39804
Получаем 2 файла:
Код:
# ls K*
Kexample.+157+49773.key          Kexample.+157+49773.private
Открываем тот что .key
Код:
# cat Kexample.+157+39804.key
example. IN KEY 0 3 157 BOP1jushWGUaMgncRuFwIt4omWnGHUW7d61OW1UcBTGPMyEVGOuG7pvy dD9L+NSSq8LcXBcSTcybHpHCy+h0aw==
Запоминаем последнее "слово" после последнего пробела "dD9L+NSSq8LcXBcSTcybHpHCy+h0aw=="

Пишем скрипт(у меня он подогнан под пути FreeBSD, если у вас Linux то просто поправьте):
Код:
#!/bin/sh

# Пути к используемым утилитам
wget=/usr/local/bin/wget
echo=/bin/echo
rm=/bin/rm
dnsup=/usr/bin/nsupdate

# Качаем файлик в котором будет наш айпи. В файле содержиться "ip="xxx.xxx.xxx.xxx"" 
# Содежимое скрипта http://myserver.com/ip.php
# <?php echo 'ip="'.$_SERVER["REMOTE_ADDR"].'"'; ?>
# В принципе можете использовать любой способ получить свой IP адрес
# Этот способ был избран как самый простой для меня
$wget -O /tmp/ip http://myserver.com/ip.php
# Считываем IP адрес из файла
. /tmp/ip

# Создаём файл для утилиты nsupdate
# Тут нам в первый раз понадобилось запомненое ранее слово
$echo "key caesar dD9L+NSSq8LcXBcSTcybHpHCy+h0aw==" > /tmp/dnsup
$echo "server myserver.com" >> /tmp/dnsup
$echo "zone example.com" >> /tmp/dnsup
$echo "update delete example.com. A" >> /tmp/dnsup
$echo "update add example.com. 60 A $ip" >> /tmp/dnsup
$echo "send" >> /tmp/dnsup

# Запускаем утилиту nsupdate
$dnsup /tmp/dnsup

# Подчищаем за собой следы
$rm /tmp/ip
$rm /tmp/dnsup
Всё, клиент мы настроили :)
Теперь приступаем к настройке BIND. Нам нужно сделать примерно следующее(второй раз нужно запомненое слово):
Код:
key example {
        algorithm HMAC-MD5;
        secret dD9L+NSSq8LcXBcSTcybHpHCy+h0aw==;
};
zone "example.com" {
        type master;
        allow-update {
                key example;
        };
        file "/etc/namedb/master/example.com";
};
И самое главное, даём права на запись /var/named/ для демона BIND, иначе он не сможет создать файл /etc/namedb/master/example.com.jnl

Всё, можно запускать скрипт клиента и через несколько секунд пинги на examle.com поуйдут прямиком на ваш IP ^_^. Ещё можно проверить так
Код:
# nslookup example.com
Если всё у вас получилось, то можно забыть то слово которое запоминали вначале :)