DNS + DHCP

Генерируем ключ:

# dnssec-keygen -a HMAC_MD5 -b 128 -n USER DHCP_UPDATER
# ll K*
-rw-------  1 root  wheel    54B  5 дек 16:07 Kdhcp_updater.+157+28324.key
-rw-------  1 root  wheel   165B  5 дек 16:07 Kdhcp_updater.+157+28324.private
# cat Kdhcp_updater.+157+28324.key 
DHCP_UPDATER. IN KEY 0 3 157 TkFlLh/62W/JXFhrdJknzA==
# cat Kdhcp_updater.+157+28324.private 
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: TkFlLh/62W/JXFhrdJknzA==
Bits: AAA=
Created: 20131205050716
Publish: 20131205050716
Activate: 20131205050716

Что то сгенерировалось.

Теперь правим dhcpd.conf

# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#

# option definitions common to all supported networks...
option domain-name "pu51.alx";
option domain-name-servers 192.168.0.254;
option routers 192.168.0.254;
option broadcast-address 192.168.0.255;
option netbios-name-servers 192.168.0.254;
option netbios-node-type 8;
option ntp-servers 192.168.0.254;

option local-pac-server code 252 = text;
option local-pac-server "http://wpad.pu51.alx/wpad.dat";

default-lease-time 432000;
max-lease-time 432000;

ddns-updates on;
update-static-leases on;
ddns-domainname "pu51.alx";
# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;
ddns-update-style interim;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# Наш ключ
key DHCP_UPDATER {
    algorithm hmac-md5;
    secret "TkFlLh/62W/JXFhrdJknzA==";
};

zone pu51.alx. {
    primary 127.0.0.1;
    key DHCP_UPDATER;
}

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

###
### do windows-style proxy autoconfig:
### option local-proxy-config code 252 = text;
### ...
### subnet 192.168.0.0 netmask 255.255.255.0 {
###    range 192.168.0.20 192.168.0.30;
###    ...
###    option local-proxy-config "http://www.example.org/proxy.pac";
### }
###

subnet 192.168.0.0 netmask 255.255.255.0 {
#    range 192.168.0.200 192.168.0.210;
}

###################
#
# SERVER
#
host p92 {
    hardware ethernet 60:a4:4c:cd:45:ec;
    fixed-address 192.168.0.1;
}

Тепрь named.conf Начало конфига пропущу :) оно не интересно и стандартно. Обратите внимание, где лежат зоны динамического обновления… Они лежат там, где надо: в каталоге dynamic Именно в этот каталог демон named имеет разрешение на запись.

# Наш ключ
key "DHCP_UPDATER" {
    algorithm hmac-md5;
    secret "TkFlLh/62W/JXFhrdJknzA==";
};

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

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


key "rndc-key" {
    algorithm hmac-md5;
    secret "9TrwQ0RDBGuEUgyU1vFtAQ==";
};

controls {
    inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; };
};

logging {
    channel update_debug {
        file "/var/log/named-update.log";
        severity debug 3;
        print-category yes;
        print-severity yes;
        print-time yes;
    };
    channel security_info {
        file "/var/log/named-auth.log";
        severity info;
        print-category yes;
        print-severity yes;
        print-time yes;
    };
    category update { update_debug; };
    category security { security_info; };
};

Заглянем в каталог dynamic:

# ll dynamic/
total 24
-rw-r--r--  1 bind  wheel   2,0k 19 дек 12:09 pu51.alx
-rw-r--r--  1 bind  wheel   6,4k 19 дек 11:55 pu51.alx.jnl
-rw-r--r--  1 bind  wheel     1k 20 дек 10:04 pu51.alx.rev
-rw-r--r--  1 bind  wheel     7k 20 дек 09:51 pu51.alx.rev.jnl

Видим, что в каталоге появились файлы журнала: .jnl - у нас все работает. Кроме того, если мы заглянем в файлик pu51.alx то увидим там динамически добавленные записи.