понедельник, 23 августа 2010 г.

dynamic dns

Недавно прочитал статью http://habrahabr.ru/blogs/linux/101380/ и в очередной раз загорелся сделать у себя на домашнем серваке динамическое обновление имени в ДНС в своём домене. А то до сих пор использовал dyndns для этого. Как оказалось, настроить всё довольно просто.
Сначала генерим ключик для общения клиента с ДНС сервером
/usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -n HOST h.olegk.ru
Потом полученный ключ прописываем в настройках ДНС-сервера

key "h.olegk.ru" {
        algorithm       hmac-md5;
        secret          "....";
};
zone "olegk.ru" IN {
        type master;
        file "dynupdated/olegk.ru";
        allow-update { key h.olegk.ru; };
};
И на клиенте (на домашнем сервере) прописываем простейший скрипт, который тупо запускается через некоторые интервалы времени и перезаписывает A-запись домашнего сервака в домене (я поставил каждые 2 минуты - нагрузка пока позволяет :)).
#!/bin/sh
IFACE="eth2"
TTL=60
SERVER=ns1.olegk.ru
HOSTNAME=h.olegk.ru
ZONE=olegk.ru
KEYFILE=/etc/namedb/Kh.olegk.ru.+157+63926.private

new_ip_address=`/sbin/ifconfig $IFACE | grep "inet addr:" | awk '{print $2}' | awk -F ":" '{print $2}'`
new_ip_address=${new_ip_address/ /}

nsupdate -v -k $KEYFILE << EOF
server $SERVER
zone $ZONE
update delete $HOSTNAME A
update add $HOSTNAME $TTL A $new_ip_address
send
EOF
До кучи настроил потом еще и запись dhcp-сервером всех узлов домашней сетки в отдельную DNS-зону, чтобы можно было не запоминать внутренний IP какого-нибудь домашнего второстепенного сервака (например того же ноута с убунтой, который заливает мне фотки в пикасу или мониторит квартиру камерой). Для этого потребовалось всего лишь добавить в настройки dhcp-сервера
ddns-update-style interim;
ignore client-updates;
update-static-leases true;

key "h.olegk.ru" {
        algorithm       hmac-md5;
        secret          "...";
}

zone net.olegk.ru. {
        primary ns1.olegk.ru;
        key h.olegk.ru;
}
Вот так всё просто. Красота!


P.S.: как в блоггер вставлять куски кода, чтобы было красиво???

Комментариев нет:

Отправить комментарий