Проект переехал на новый домен!  [[ перейти ]]


DHCP + DDNS ( dhcp + dynamic dns)

#uname -a
FreeBSD 6.2-RELEASE : Tue Oct  9 15:14:28 MSD 2007 KERNEL i386
ln -s /usr/local/etc/rc.d

Для корректной работы DHCP мы делаем следущее:
[1]. Пересобираем ядро с поддержкой:
################################################################
# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device          bpf             # Berkeley packet filter
################################################################
cd /usr/src/sys/i386/conf
cp GENERIC DD
ee DD
config DD
cd ../compile/DD
clean depend && make depend
make install clean
reboot

[2].Собрать и установить из портов:
cd /usr/ports/net/isc-dhcp3-server
make install clean
cd /usr/local/etc
cp dhcpd.conf.sample dhcpd.conf
#############
ee dhcpd.conf
###################################################################
option domain-name "domain.ru";
option domain-name-servers pdc.domain.ru,test.domain.ru;
default-lease-time 600;
max-lease-time 7200;
authoritative;
ddns-update-style ad-hoc;
update-static-leases on;
allow client-updates;
ddns-domainname "domain.ru";
use-host-decl-names true;
log-facility local7;

#Об этом мы смотрим ниже
key DHCP_UPDATE {
    algorithm hmac-md5;
    secret "8umrpmUeDaWYUAfex1ralg==";
}

#Прямая зона которую будем обновлять
zone domain.ru. {
     primary 192.168.1.1;
     key DHCP_UPDATE;
}

#Обратная зона которую будем обновлять
zone 1.168.192.in-addr.arpa. {
     primary 192.168.1.1;
     key DHCP_UPDATE;
}

#Настройки самого DHCP что и кому будем выдавать
subnet 192.168.5.0 netmask 255.255.255.0 {
  range 192.168.5.2 192.168.5.254;
  option domain-name-servers pdc.domain.ru,test.domain.ru;
  option domain-name "domain.ru";
  option netbios-name-servers 192.168.1.1;
  option netbios-dd-server 192.168.1.1;
  option netbios-node-type 8;
  option broadcast-address 192.168.1.255;
  #option routers 192.168.1.1;
  default-lease-time 600;
  max-lease-time 7200;
}

#Жестко прописанный хост
host test.domain.ru {
  hardware ethernet 00:0d:61:3f:58:8d;
  fixed-address 192.168.1.2;
}
###################################################################
echo 'dhcpd_enable="yes"' >> /etc/rc.conf
echo 'dhcpd_ifaces="fxp0"' >> /etc/rc.conf
reboot

Эта часть в файле dhcpd.conf заполняется только после установки 
пакета bind (я выбрал BIND-9.3)
---------------------------------------
key DHCP_UPDATE {
    algorithm hmac-md5;
    secret "8umrpmUeDaWYUAfex1ralg==";
}

zone domain.ru. {
     primary 192.168.1.1;
     key DHCP_UPDATE;
}

zone 1.168.192.in-addr.arpa. {
     primary 192.168.1.1;
     key DHCP_UPDATE;
}
---------------------------------------
так как секретный ключ генерируется утилитой которая входит
в состав этого пакета. 
cd /usr/local/etc
запуск генерации ключа происходит так:
####################################################
dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATE
####################################################
далее просмотр ключа
################################
cat Kdhcp_updater.+157+22289.key
################################
и вносим последние штрихи в конфиг 
ee /usr/local/etc/dhcpd.conf
cd /rc.d
isc-dhcpd restart

3. Можно использовать уже установленый системой bind
(я установил из портов обновлёную версию 9.3)
cd /usr/ports/dns/bind9
make install clean
rehash
cd /etc/namedb/
############
ee rndc.conf
##########################################
options {
        default-server  localhost;
        default-key     "rndc.key";
};

server localhost {
        key     "rndc.key";
};

key "rndc.key" {
        algorithm hmac-md5;
        secret "TH+fqSnMEU1z5y/79pqWnw==";
};
##########################################

Эта часть образуется таким образом:
//////////////////////////////////////////
key "rndc.key" {
        algorithm hmac-md5;
        secret "TH+fqSnMEU1z5y/79pqWnw==";
};
//////////////////////////////////////////

Запускаем 
###############
rndc-confgen -a
###############
она ложит ключ в /etc/namedb/

и ниже в в named.conf нужно 
сослатся на этот ключ
///////////////////////////////
include "/etc/namedb/rndc.key";
///////////////////////////////
Я его указал в самом конце...

#############
ee named.conf
###############################################################
#Расположение файлов
options {
        directory       "/etc/namedb";
        pid-file        "/var/run/named/pid";
        dump-file       "/etc/namedb/dump/named_dump.db";
        statistics-file "/etc/namedb/stats/named.stats";

#IP нашего нового резолвера
        listen-on       { 127.0.0.1; 192.168.1.1; };

#и его порт 
#(any) - означает все интерфейсы
        listen-on port 53 { any; };

#Разрешения из моей сетки
        allow-recursion { 192.168.1/24; };
        allow-query { 192.168.1/24; };
        version "Bind 9.3";
        max-cache-size 100M;

#Указываем наши DNS сервера пересылки
#если имя хоста неизвестно. 
        forwarders {
                212.22.33.65;
        };
};

/*##############Не работает############
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;
};
*/####################################

#Объявление зон 
#Главная
zone "." {
        type hint;
        file "named.root";
};

#Обратная
zone "0.0.127.IN-ADDR.ARPA" {
        type master;
        file "master/localhost.rev";
};

#Наш ключ из DHCP для обновления зон
key DHCP_UPDATE {
    algorithm hmac-md5;
    secret "8umrpmUeDaWYUAfex1ralg==";
};

category update { update_debug; };
category security { security_info; };
};

#Обновляемая прямая зона
zone "domain.ru" {
        type master;
        file "db.domain.ru";
        allow-update { key DHCP_UPDATER; 192.168.1.1; };
};

#Обновляемая обратная зона
zone "1.168.192.in-addr.arpa" {
        type master;
        file "db.192.168.1";
        allow-update { key DHCP_UPDATER; 192.168.1.1; };
};

#Вложение ключа rndc
include "/etc/namedb/rndc.key";
###############################################################
echo 'named_enable="yes"' >> /etc/rc.conf
echo 'named_flags=" -c /etc/namedb/named.conf"' >> /etc/rc.conf
reboot


#############
# Файлы зон #
#############

Их нужно заполнить обязательно!!!

[1]. Прямая:
ee db.domain.ru:
#########################################################################
$TTL 86400
@         IN SOA  pdc.domain.ru. admin.pdc.domain.ru. ( 318 1D 1H 1W 1H )
          IN NS pdc.domain.ru.
localhost A 127.0.0.1
#########################################################################

[2]. Обратная:
ee db.192.168.1:
#######################################################################################
$TTL 86400
1.168.192.in-addr.arpa. IN SOA  pdc.domain.ru. admin.pdc.domain.ru. ( 318 1D 1H 1W 1H )
                        IN NS pdc.domain.ru.
1                       PTR localhost.
#######################################################################################

Записи в DNS: 
SOA - начало зоны ответственности, 
NS - авторитативный сервер имен, 
A - адрес хоста, 
MX - почта, 
PTR - указатель на доменное имя (используется в обратных зонах DNS).

pdc.domain.ru - доменное имя зоны
pdc.domain.ru - авторитетный сервер имён в данной зоне (так как находится на том же CPU pdc)
admin.pdc.domain.ru. - человек, отвечающий за эту зону, адрес электронной почты с символом ''@'' замененным на точку. 
(admin@pdc.domain.ru. -> становится admin.pdc.domain.ru.)

Момент запуска демона named!
Я исправил одну строку и указал чтобы named загружался от root'а

Логи смотрим тут:
tail -f /var/log/messages

ee /etc/reslov.conf
########################
domain domain.ru
nameserver 127.0.0.1
nameserver 192.168.1.1
#nameserver 192.168.1.2
########################

проверка DNS 
dig @127.0.0.1 mail.ru

Дальше берём в руки любимый бубен и
#reboot