RFC 2136 Dynamic DNS updates история прикручивания
-
Есть куча удаленных офисов с пфами и динамическими адресами, давно хотел прикрутить динамический днс на свою зону, чтоб всегда удаленные пфы были под рукой.
собственно надо чтоб условно test.ddns.example.ru указывал на ip pfsens-а зона example.ru(ddns.example.ru) у меня
Сделал отдельную зону(унес на тестовый сервер домен 3-го уровня) для динамич адресов ( мне так просто удобней)
Порядок действий:
Настройка DNS сервера (BIND 9.7.0 FreeBSD 8.0-RELEASE-p2 ):named.conf
options { directory "/etc/namedb/writable"; // это нужно чтобы бинд мог писать в рабочую директорию (можно просто унести файл зоны туда куда он может писать при обновлении пишет файл журнала jnl) // выставил соотв права для пользователя bind (иначе будет ругаться потом в логах General: ddns.example.ru.jnl: create: permission denied ) ................................... } include "../dns.keys.conf"; zone "ddns.example.ru" { type master; file "ddns.example.ru"; update-policy { grant test.key name test.ddns.example.ru A; }; };
теперь по порядку:
в начале генерим ключ командойdnssec-keygen -a HMAC-MD5 -b 128 -n HOST test.ddns.example.ru.
получаем на выходе 2 файла примерно такого вида:
Ktest.ddns.example.ru.+157+23443.key
Ktest.ddns.example.ru.+157+23443.private
из них нам нужен только ключ последовательность примерно выглядит так:
cuwRQCab5DhEPHKk0jnuwQ==
есть в обоих файлах
далее
заносим его в файл
dns.keys.confkey test.key { algorithm hmac-md5; secret "cuwRQCab5DhEPHKk0jnuwQ=="; };
Теперь зона :o. в самом файле зоны главное правильно указать SOA запись(у меня ещё A и NS указывют на него же), т.к. pfsense сам узнает SOA для зоны которую выбирает из поля Hostname (Services->Dynamic DNS->RFC 2136 Dynamic DNS updates) и затем туда отправляет обновленя , ну и DNS сервер на pfsense должен быть указан иначе ничего не получится.
update-policy {
grant test.key name test.ddns.example.ru A;
};это в общем-то значит разрешить с ключом test.key обновлять A запись test.ddns.example.ru
Настройка pfsense у меня под рукой был 1.2.2 не эмбедед (согласно написанного выше)
Services->Dynamic DNS->RFC 2136 Dynamic DNS updates
ставим галочку enable
Hostname : test.ddns.example.ru
тут именно имя т.к. он потом судя по всему узнает SOA для ddns.example.ru и кидает туда обновления
TTL: по вкусу
Key name: test.key
Key type : host
Key: cuwRQCab5DhEPHKk0jnuwQ==
жмем save
смотрим логи бинда:
должны увидеть что-то похожее:21-Apr-2010 22:29:56.497 update: client 11.22.33.44#36231: updating zone 'ddns.example.ru/IN': deleting rrset at 'test.ddns.example.ru' A 21-Apr-2010 22:29:56.497 update: client 11.22.33.44#36231: updating zone 'ddns.example.ru/IN': adding an RR at 'test.ddns.example.ru' A
11.22.33.44 ip адрес wan интерфейса pfsens-а
проверяем nslookup-ом, можно сделать rndc freeze ddns.example.ru и посмотреть на файл зоны там будут новые записи, потом главное не забыть сделать rndc thaw ddns.example.ru (пока во фризе обновления не принимаются о чем можно прочитать в логе)
Надеюсь кому-нибудь пригодится.
З.Ы. поправляйте/дополняйте, если где ошибся не серчайте :DЗ.Ы.Ы. на pfsense 1.2.3 появилось заветное поле server где можно просто вписать имя сервера куда отсылать обновления :)