Настройка связки DNS+DHCP_UPDATER

  • user warning: Duplicate entry '30188485' for key 'PRIMARY' query: INSERT INTO accesslog (title, path, url, hostname, uid, sid, timer, timestamp) values('Nagios - проверка статуса порта коммутатора используя check_snmp', 'node/545', 'http://muff.kiev.ua/content/nagios-proverka-statusa-porta-kommutatora-ispolzuya-checksnmp', '216.73.216.38', 0, '0119d76sshc9e9mdgphjsnroe5', 138, 1767365570) in /usr/local/www/muff.kiev.ua/modules/statistics/statistics.module on line 63.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:6fe2271829abe51fdd25d63f368dd203' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtejustify\">Решил настроить динамическое обновление ДНС по событию - то есть,&nbsp;при выдаче IP-адреса,&nbsp;DHCP будет автоматически добавлять запись в DNS, обновляя как&nbsp;&quot;прямую&quot; так и &quot;обратную&quot; зону.&nbsp;Будем отталкиваться от того, что уже есть настроенные и рабочие сервисы <a href=\"http://muff.kiev.ua/content/bind-9-nastroika-dns-servera\">DNS</a> и <a href=\"http://muff.kiev.ua/content/dhcp-server-v-seti-esli-neokhota-begat-ot-kompyutera-k-kompyuteru\">DHCP</a>,</p>\n<p class=\"rtejustify\">Исходные данные следующие:</p>\n<ul>\n<li><strong>домен:</strong> office.local</li>\n<li><strong>IP-адресация:</strong> 192.168.100.0/24</li>\n</ul>\n<p class=\"rtejustify\">Первый шаг - это генерация ключа обновлений. Поскольку используем BIND версии 9,&nbsp;то команда будет следующей:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER</strong><br />\n Kdhcp_updater.+157+54483</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">(если установлен&nbsp;BIND версии 8, то &nbsp;необходимо воспользоваться командой <strong>dnskeygen -H 128 -u -c -n DHCP_UPDATER</strong>)</p>\n<p class=\"rtejustify\">Посмотрим на результат команды:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># cat Kdhcp_updater.+157+54483.key</strong><br />\n DHCP_UPDATER. IN KEY 0 3 157 evUUzuAFS+xk0178ftrS1g==</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Приступаем к редактированию <strong>dhcpd.conf</strong>. Листинг конфигурационного файла до редактирования:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># cat /usr/local/etc/dhcpd.conf</strong><br />\n option domain-name &quot;office.local&quot;;<br />\n default-lease-time 304400;<br />\n max-lease-time 604800;<br />\n authoritative;<br />\n ddns-update-style none;\n<p>subnet 192.168.100.0 netmask 255.255.255.0 {<br />\n range 192.168.100.1 192.168.100.50;<br />\n option domain-name-servers 192.168.100.55;<br />\n option routers 192.168.100.55; }</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Вставляем в dhcpd.conf следующие блоки:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p>ddns-updates on;<br />\n ddns-update-style interim;<br />\n ddns-domainname &quot;office.local&quot;;<br />\n ddns-rev-domainname &quot;100.168.192.in-addr.arpa&quot;;<br />\n ignore client-updates;<br />\n update-static-leases true;</p>\n<p>key DHCP_UPDATER {<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; algorithm hmac-md5;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; secret evUUzuAFS+xk0178ftrS1g==;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>\n<p>zone office.local. {<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; primary 127.0.0.1;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key DHCP_UPDATER;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>\n<p>zone 192.168.192.in-addr.arpa.{<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; primary 127.0.0.1;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key DHCP_UPDATER;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">В результате должно получиться:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<div><strong># cat /usr/local/etc/dhcpd.conf</strong><br />\n option domain-name &quot;office.local&quot;;<br />\n default-lease-time 304400;<br />\n max-lease-time 604800;<br />\n authoritative;<br />\n ddns-updates on;<br />\n ddns-update-style interim;<br />\n ddns-domainname &quot;office.local&quot;;<br />\n ddns-rev-domainname &quot;100.168.192.in-addr.arpa&quot;;<br />\n ignore client-updates;<br />\n update-static-leases true;</div>\n<div>&nbsp;</div>\n<div>key DHCP_UPDATER {<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; algorithm hmac-md5;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; secret evUUzuAFS+xk0178ftrS1g==;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>\n<div>&nbsp;</div>\n<div>zone office.local. {<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; primary 127.0.0.1;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key DHCP_UPDATER;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>\n<div>&nbsp;</div>\n<div>zone 100.168.192.in-addr.arpa.{<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; primary 127.0.0.1;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key DHCP_UPDATER;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>\n<div>\n subnet 192.168.100.0 netmask 255.255.255.0 {<br />\n range 192.168.100.1 192.168.100.50;<br />\n option domain-name-servers 192.168.100.55;<br />\n option routers 192.168.100.55; }<br />\n &nbsp;</div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Для того, чтобы изменения вступили в силу, перестартовываем DHCP:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># sh /usr/local/etc/rc.d/isc-dhcpd restart</strong><br />\n Stopping dhcpd.<br />\n Starting dhcpd.<br />\n Internet Systems Consortium DHCP Server V3.0.7<br />\n Copyright 2004-2008 Internet Systems Consortium.<br />\n All rights reserved.<br />\n For info, please visit <a href=\"http://www.isc.org/sw/dhcp/\">http://www.isc.org/sw/dhcp/</a><br />\n WARNING: Host declarations are global.&nbsp; They are not limited to the scope you declared them in.<br />\n Wrote 0 deleted host decls to leases file.<br />\n Wrote 0 new dynamic host decls to leases file.<br />\n Wrote 49 leases to leases file.<br />\n Listening on BPF/vr0/00:13:46:64:1d:13/192.168.100/24<br />\n Sending on&nbsp;&nbsp; BPF/vr0/00:13:46:64:1d:13/192.168.100/24<br />\n Sending on&nbsp;&nbsp; Socket/fallback/fallback-net</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Приступаем к DNS. Необходимо отредактировать <strong>named.conf</strong>, внеся в него описания зон <strong>office.local</strong>, <strong>100.168.192.in-addr.arpa</strong> и ключ <strong>DHCP_UPDATER</strong>,&nbsp;тоесть следующий блок:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p>key DHCP_UPDATER {<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; algorithm hmac-md5;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; secret evUUzuAFS+xk0178ftrS1g==;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</p>\n<p>zone &quot;office.local&quot; {<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type master;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file &quot;/dynamic/office.local&quot;;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow-update { key DHCP_UPDATER; };<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; notify no;<br />\n };</p>\n<p>zone &quot;100.168.192.in-addr.arpa&quot; {<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type master;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file &quot;/dynamic/100.168.192.in-addr.arpa&quot;;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow-update { key DHCP_UPDATER; };<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; notify no;<br />\n };</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Создадим каталог dynamic, где будут лежать файлы динамически обновляемых зон:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>mkdir /var/named/dynamic</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Создаем файл <strong>office.local</strong> (прямая зона)&nbsp;следующего содержимого:</p>\n<p class=\"rtejustify\">\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<pre><strong># cat /var/named/dynamic/office.local</strong>\n$TTL 86400 ; 1 day\n@ IN SOA ns.office.local. admin.muff.kiev.ua. (\n 2010090600 ; serial\n 14400 ; refresh (4 hours)\n 7200 ; retry (2 hours)\n 3600000 ; expire (5 weeks 6 days 16 hours)\n 86400 ; minimum (1 day)\n )\n NS ns.office.local.\nns A 192.168.100.55</pre></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p>Создаем файл обратной зоны <strong>100.168.192.in-addr.arpa</strong>:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<pre><strong># cat /var/named/dynamic/100.168.192.in-addr.arpa\n</strong>$TTL 86400 ; 1 day\n@ IN SOA ns.office.local. admin.muff.kiev.ua. (\n 2010090600 ; serial\n 14400 ; refresh (4 hours)\n 7200 ; retry (2 hours)\n 3600000 ; expire (5 weeks 6 days 16 hours)\n 86400 ; minimum (1 day)\n )\n NS ns.office.local.\n55.100.168.192 PTR ns.office.local.</pre></td>\n</tr>\n</tbody>\n</table>\n<p>Для того, чтобы named имел право записи в файлы,&nbsp;сделаем его рекурсивно владельцем каталога:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>chown -R bind:bind /var/named/dynamic/</strong></td>\n</tr>\n</tbody>\n</table>\n<p>Перезапускаем named:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># rndc reload</strong><br />\n server reload successful</td>\n</tr>\n</tbody>\n</table>\n<p>DNS-сервер готов к обновлениям. Для того, чтобы проверить это,&nbsp;создадим файл следующего содержания:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># cat testdns.txt</strong><br />\n key DHCP_UPDATER evUUzuAFS+xk0178ftrS1g==<br />\n zone office.local<br />\n update add virtual 86400 A 192.168.100.200<br />\n send<br />\n zone 100.168.192.in-addr.arpa<br />\n update add 200 86400 PTR test.office.local.<br />\n send</p>\n</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p>Следующей командой проверяем,&nbsp;все ли нормально отрабатывается:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>nsupdate -d testdns.txt</strong></td>\n</tr>\n</tbody>\n</table>\n<p>Команда должна завершиться без ошибок,&nbsp;а в каталоге dynamic должны появиться файлы с расширением <span class=\"Apple-style-span\" style=\"widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium \'Times New Roman\'; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px\"><span class=\"Apple-style-span\" style=\"line-height: 20px; font-family: Verdana, sans-serif; font-size: 13px\">jnl:</span></span></p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<pre><strong># ls -la /var/named/dynamic/</strong>\ntotal 16\ndrwxr-xr-x 2 bind bind 512 6 сен 01:24 .\ndrwxr-xr-x 7 root wheel 512 3 сен 01:21 ..\n-rw-r--r-- 1 bind bind 485 6 сен 01:24 100.168.192.in-addr.arpa\n-rw-r--r-- 1 bind bind 800 6 сен 01:23 100.168.192.in-addr.arpa.jnl\n-rw-r--r-- 1 bind bind 509 6 сен 01:24 office.local\n-rw-r--r-- 1 bind bind 817 6 сен 01:23 office.local.jnl</pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\"><span class=\"Apple-style-span\" style=\"widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium \'Times New Roman\'; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px\"><span class=\"Apple-style-span\" style=\"line-height: 20px; font-family: Verdana, sans-serif; font-size: 13px\">На этом связку DNS и&nbsp;DHCP можно считать оконченной. Теперь ждем, когда клиенты переподключатся, смотрим логи, и наблюдаем, что DNS-записи будут обновляться как в прямой,&nbsp;так и в обратной зоне.</span></span></p>\n', created = 1767365578, expire = 1767451978, headers = '', serialized = 0 WHERE cid = '2:6fe2271829abe51fdd25d63f368dd203' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:bb0fcc077a69538bed574575f5c751ce' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>протестировать обновление через ваш testdns.txt не получилось - получилось через следующие команды</p>\n<p>key DHCP_UPDATER f3jGaV9IqaFVJSpvtlksig==<br />\nupdate add test.kaznmu.local. 600 IN A 10.0.0.100<br />\nsend<br />\nupdate add 100.0.0.10.in-addr.arpa. 600 IN PTR test.kaznmu.local.<br />\nsend<br />\n&nbsp;</p>\n<p>serv# pkg_info | grep bind<br />\nbind96-base-9.6.3.1.ESV.R4.3 The BIND DNS suite with updated DNSSEC and threads<br />\n&nbsp;</p>\n<p>serv# uname -a<br />\nFreeBSD serv.mydomain.kz 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Fri Feb 18 02:24:46 UTC 2011</p>\n<p>&nbsp;</p>\n<p>Так к слову :) </p>\n<p>а за статью спасибо!</p>\n<p>&nbsp;</p>\n', created = 1767365578, expire = 1767451978, headers = '', serialized = 0 WHERE cid = '2:bb0fcc077a69538bed574575f5c751ce' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767365578, expire = 1767451978, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767365578, expire = 1767451978, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

Решил настроить динамическое обновление ДНС по событию - то есть, при выдаче IP-адреса, DHCP будет автоматически добавлять запись в DNS, обновляя как "прямую" так и "обратную" зону. Будем отталкиваться от того, что уже есть настроенные и рабочие сервисы DNS и DHCP,

Исходные данные следующие:

  • домен: office.local
  • IP-адресация: 192.168.100.0/24

Первый шаг - это генерация ключа обновлений. Поскольку используем BIND версии 9, то команда будет следующей:

# dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER
Kdhcp_updater.+157+54483

(если установлен BIND версии 8, то  необходимо воспользоваться командой dnskeygen -H 128 -u -c -n DHCP_UPDATER)

Посмотрим на результат команды:

# cat Kdhcp_updater.+157+54483.key
DHCP_UPDATER. IN KEY 0 3 157 evUUzuAFS+xk0178ftrS1g==

Приступаем к редактированию dhcpd.conf. Листинг конфигурационного файла до редактирования:

# cat /usr/local/etc/dhcpd.conf
option domain-name "office.local";
default-lease-time 304400;
max-lease-time 604800;
authoritative;
ddns-update-style none;

subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.1 192.168.100.50;
option domain-name-servers 192.168.100.55;
option routers 192.168.100.55; }

Вставляем в dhcpd.conf следующие блоки:

ddns-updates on;
ddns-update-style interim;
ddns-domainname "office.local";
ddns-rev-domainname "100.168.192.in-addr.arpa";
ignore client-updates;
update-static-leases true;

key DHCP_UPDATER {
        algorithm hmac-md5;
        secret evUUzuAFS+xk0178ftrS1g==;
        }

zone office.local. {
        primary 127.0.0.1;
        key DHCP_UPDATER;
        }

zone 192.168.192.in-addr.arpa.{
        primary 127.0.0.1;
        key DHCP_UPDATER;
        }

В результате должно получиться:

# cat /usr/local/etc/dhcpd.conf
option domain-name "office.local";
default-lease-time 304400;
max-lease-time 604800;
authoritative;
ddns-updates on;
ddns-update-style interim;
ddns-domainname "office.local";
ddns-rev-domainname "100.168.192.in-addr.arpa";
ignore client-updates;
update-static-leases true;
 
key DHCP_UPDATER {
        algorithm hmac-md5;
        secret evUUzuAFS+xk0178ftrS1g==;
        }
 
zone office.local. {
        primary 127.0.0.1;
        key DHCP_UPDATER;
        }
 
zone 100.168.192.in-addr.arpa.{
        primary 127.0.0.1;
        key DHCP_UPDATER;
        }
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.1 192.168.100.50;
option domain-name-servers 192.168.100.55;
option routers 192.168.100.55; }
 

Для того, чтобы изменения вступили в силу, перестартовываем DHCP:

# sh /usr/local/etc/rc.d/isc-dhcpd restart
Stopping dhcpd.
Starting dhcpd.
Internet Systems Consortium DHCP Server V3.0.7
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
WARNING: Host declarations are global.  They are not limited to the scope you declared them in.
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 49 leases to leases file.
Listening on BPF/vr0/00:13:46:64:1d:13/192.168.100/24
Sending on   BPF/vr0/00:13:46:64:1d:13/192.168.100/24
Sending on   Socket/fallback/fallback-net

Приступаем к DNS. Необходимо отредактировать named.conf, внеся в него описания зон office.local, 100.168.192.in-addr.arpa и ключ DHCP_UPDATER, тоесть следующий блок:

key DHCP_UPDATER {
        algorithm hmac-md5;
        secret evUUzuAFS+xk0178ftrS1g==;
        };

zone "office.local" {
        type master;
        file "/dynamic/office.local";
        allow-update { key DHCP_UPDATER; };
        notify no;
};

zone "100.168.192.in-addr.arpa" {
        type master;
        file "/dynamic/100.168.192.in-addr.arpa";
        allow-update { key DHCP_UPDATER; };
        notify no;
};

Создадим каталог dynamic, где будут лежать файлы динамически обновляемых зон:

# mkdir /var/named/dynamic

Создаем файл office.local (прямая зона) следующего содержимого:

# cat /var/named/dynamic/office.local
$TTL 86400      ; 1 day
@                  IN SOA  ns.office.local. admin.muff.kiev.ua. (
                                2010090600 ; serial
                                14400      ; refresh (4 hours)
                                7200       ; retry (2 hours)
                                3600000    ; expire (5 weeks 6 days 16 hours)
                                86400      ; minimum (1 day)
                                )
                        NS      ns.office.local.
ns                      A       192.168.100.55

Создаем файл обратной зоны 100.168.192.in-addr.arpa:

# cat /var/named/dynamic/100.168.192.in-addr.arpa
$TTL 86400      ; 1 day
@                  IN SOA  ns.office.local. admin.muff.kiev.ua. (
                                2010090600 ; serial
                                14400      ; refresh (4 hours)
                                7200       ; retry (2 hours)
                                3600000    ; expire (5 weeks 6 days 16 hours)
                                86400      ; minimum (1 day)
                                )
                        NS        ns.office.local.
55.100.168.192          PTR       ns.office.local.

Для того, чтобы named имел право записи в файлы, сделаем его рекурсивно владельцем каталога:

# chown -R bind:bind /var/named/dynamic/

Перезапускаем named:

# rndc reload
server reload successful

DNS-сервер готов к обновлениям. Для того, чтобы проверить это, создадим файл следующего содержания:

# cat testdns.txt
key DHCP_UPDATER evUUzuAFS+xk0178ftrS1g==
zone office.local
update add virtual 86400 A 192.168.100.200
send
zone 100.168.192.in-addr.arpa
update add 200 86400 PTR test.office.local.
send

Следующей командой проверяем, все ли нормально отрабатывается:

# nsupdate -d testdns.txt

Команда должна завершиться без ошибок, а в каталоге dynamic должны появиться файлы с расширением jnl:

# ls -la /var/named/dynamic/
total 16
drwxr-xr-x  2 bind  bind   512  6 сен 01:24 .
drwxr-xr-x  7 root  wheel  512  3 сен 01:21 ..
-rw-r--r--  1 bind  bind   485  6 сен 01:24 100.168.192.in-addr.arpa
-rw-r--r--  1 bind  bind   800  6 сен 01:23 100.168.192.in-addr.arpa.jnl
-rw-r--r--  1 bind  bind   509  6 сен 01:24 office.local
-rw-r--r--  1 bind  bind   817  6 сен 01:23 office.local.jnl

На этом связку DNS и DHCP можно считать оконченной. Теперь ждем, когда клиенты переподключатся, смотрим логи, и наблюдаем, что DNS-записи будут обновляться как в прямой, так и в обратной зоне.

Ваша оценка: Нет Средняя: 4.2 (5 голосов)

протестировать обновление

протестировать обновление через ваш testdns.txt не получилось - получилось через следующие команды

key DHCP_UPDATER f3jGaV9IqaFVJSpvtlksig==
update add test.kaznmu.local. 600 IN A 10.0.0.100
send
update add 100.0.0.10.in-addr.arpa. 600 IN PTR test.kaznmu.local.
send
 

serv# pkg_info | grep bind
bind96-base-9.6.3.1.ESV.R4.3 The BIND DNS suite with updated DNSSEC and threads
 

serv# uname -a
FreeBSD serv.mydomain.kz 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Fri Feb 18 02:24:46 UTC 2011

 

Так к слову :)

а за статью спасибо!

 

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература

Кoгда нoрмальный челoвек, уезжая из дoма oдевает на жену пояс верности, веб-дизайнер ставит на нее счётчик...