Dynamic DNS своими руками
В одной из предыдущих статей мы рассказали, что есть некий API для программирования DynDNS. В ней же была упомянута возможность программирования стандартного сервера DNS BIND с использованием штатных утилит *nix DNS — nsupdate и TSIG¹.
Наверно большая часть читателей пропустила этот материал — «я же не программист, не программирую я веб-сервисы». Напрасно, опираясь на упомянутую возможность программировать BIND мы расскажем как сделать DDNS своими руками.
Предполагается что наш домен DNS обслуживается нашим собственным сервером DNS и этот сервер BIND (однако знающий человек легко экстраполирует методику на другой сервер). У нас есть несколько географических точек с динамическими адресами которым мы хотели бы назначить имена в нашем домене.
Приступим:
Настроим BIND на использование TSIG. Не имеет смысла останавливаться на этом. Примеров этому множество (например здесь). Внесем в наш DNS записи A (AAA) о наших хостах с динамическим адресами. При этом установим время жизни TTL 30 или 60 секунд. Теперь нам необходимо написать небольшой скрипт. Алгоритм следующий: ♦ Получим текущий адрес Интернет соединения. Например curl checkip.dyndns.com/; ♦ Получим текущий IP назначенный на наш хост в DNS. Например host my_host.acme.com; ♦ Сравним оба адреса; ♦ Если равны, то ничего не делаем; ♦ Если не равны, то готовим командный файл для nsupdate по примеру упомянутой выше статьи; ♦ Выполним nsupdate — заменим адрес в нашем DNS.Вот собственно и все. Осталось «повесить» наш скрипт на cron и выполнять его, скажем раз в пять минут.[hr]
¹ Для тех кого интересует детальная настройка, один из возможных вариантов описан (не мной ;-) здесь.