LinuxForum.Fans
Тема

[HOWTO] Настройка DDNS+DHCP в CentOS

Автор: XliN 9 сообщений 8350 просмотров
#127149

И так. Это моя вторая инструкция по администрированию CentOS. Первую Вы можете прочитать на нашем WIKI в разделе Администрирование

Развиваемся дорогие товарищи. :D Сразу говорю, писатель из меня не очень, так что не ругайте слишком сильно. Главное же результат wink

Задача:

  • Установить сервер DNS в chroot окружении. Так же он должен автоматически добавлять A и TXT записи от новых компьютеров
  • Установить DHCP сервер для динамической раздачи IP адреса всем компьютерам в нашей сети с привязкой к DNS
  • Настроить не просто кеширующий DNS, а как primary DNS

В качестве DNS сервера был выбран bind9, как наиболее распространенный. Вся установка будет происходить в консоле, т.к. это сервер и всякие DE и GUI нам не понадобятся.

Начнем с настройки сетевого интерфейса нашей карточки. Открываем конфигурационный файл с помощью вашего любимого редактора.
[console]vim /etc/sysconfig/network-settings/ifcfg-eth0[/console]
Правим все значения как вам нужно.

DEVICE=eth0
IPADDR=192.168.1.150
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
ONBOOT=yes
DHCP_HOSTNAME=master

В данном примере видно что сеть у нас 192.168.1.0/24. Сервер у нас со статическим IP адресом 192.168.1.150 и именем хоста MASTER. Так же видно что GATEWAY(шлюз) 192.168.1.1 - это тот компьютер с которого идет раздача интернета.

Прошу заметить, без параметра DHCP_HOSTNAME могут быть проблемы, так что прошу его не пропускать.

Устанавливаем сам bind, если он еще не установлен.
[console]yum -y install bind bind-chroot caching-nameserver[/console]

[console][root@master ~]# rpm -q bind bind-chroot
bind-9.7.2-1.P3.el5
bind-chroot-9.7.2-1.P3.el5[/console]

Ну и собственно переходим к правке главного конфигурационного файла named.conf.
[console]vim /var/named/chroot/etc/named.conf[/console]

Показать
options {
listen-on {localhost; 192.168.1.150; };
directory "/var/named/";
dump-file "data/cache_dump.db";
statistics-file "data/named_stats.txt";
memstatistics-file "data/named_mem_stats.txt";
allow-transfer {192.168.1.150; };
allow-query {trusted-networks; };
allow-recursion {trusted-networks; };
forwarders {192.168.1.1; };
};
logging {
channel default_ch {
file "data/named-base.log";
severity info;
print-time yes;
print-category yes;
};

channel security_ch {
file "data/named-security.log";
severity info;
print-time yes;
print-category yes;
};
category default { default_ch; };
category security { security_ch; };

};

acl "trusted-networks" {localhost; 192.168.1.0/24; };

zone "saikov.ru" IN {
type master;
file "saikov.ru";
allow-update { key rndckey; };
};

zone "168.192.in-addr.arpa" {
type master;
file "168.192.rev";
allow-update { key rndckey; };
};

include "/etc/named.rfc1912.zones";
include "/etc/rndc.key";

Давайте разберем его более подробно.
Во первых, первая проблема возникла из-за прав на этот файл. Когда Вы его создадите, проследите что бы владельцем был пользователь named
[console][root@master etc]# ls -l named.conf
-rw-r----- 1 named named 1053 Фев 7 19:06 named.conf[/console]

options - секция, где описываются глобальные настройки. Состоит она из нескольких параметров. Давайте их разберем.

listen-on - указываем IP и порты на котором named будет работать
directory - путь к каталогу, где размещены все необходимые файлы для работы named
dump-file - здесь указываем путь к кешу
statistics-file - опция указывающая расположение файла статистики
memstatistics-file - опция указывающая расположение файла статистик использования памяти
allow-transfer - указываем IP, которым разрешено передавать зону
allow-query - указываем IP с которыми DNS будет работать
allow-recursion - указываем IP, рекурсивные запросы которых будем обслуживать
forwarders - если наш сервер не сможет ответить на запрос, то он перенаправит их на указанные DNS в этом параметре.

Опять же. Не забывайте проверять права на файлы. Как указано выше, они лежат у нас в /var/named/chroot/var/named/data

[console][root@master ~]# ll /var/named/chroot/var/named/data/
итого 96
-rw-r--r-- 1 named named 81286 Фев 10 14:54 named-base.log
-rw-r--r-- 1 named named 5934 Фев 7 21:04 named_mem_stats.txt
-rw-r--r-- 1 named named 685 Фев 7 18:22 named-security.log[/console]

logging - секция отвечающая за логирование нашего DNS сервера. Она у меня разбита, как видно из конфигурационного файла, на две части.

Первая отвечает за стандартные (default) логи и пишет все в /var/named/chroot/var/named/data/named-base.log
Вторая отвечает за логи безопасности и пишет все в /var/named/chroot/var/named/data/named-security.log

Так же имеются еще три одинаковых параметра

severity info; - работать в информационном уровне важности
print-time yes; - указывать в логах время
print-category yes; - разрешить регистрировать категории

Делаем привязку к нашим двум каналам, указывая что default будет идти в канал default_ch, а security в канал security_сh

category default { default_ch; };
category security { security_ch; };

Создаем Access control list и водим переменную в которой пишем список наших сетей. Эта переменная используется в allow-query и allow-recursion. Это нужно для упрощения настройки. Если поменяются IP адреса, то можно будет поменять только тут, а не во всем конфигурационном файле.

acl "trusted-networks" {localhost; 192.168.1.0/24; };

Дальше все понятно. Указываем прямую и обратную зону нашего домена.

zone "saikov.ru" IN {
type master;
file "saikov.ru";
allow-update { key rndckey; };
};

zone "168.192.in-addr.arpa" {
type master;
file "168.192.rev";
allow-update { key rndckey; };
};

type master; - говорим что он является основным DNS (master)
file "saikov.ru"; - файл где описана прямая зона домена saikov.ru
allow-update { key rndckey; }; - работа с ключом

Точно так же и для обратной зоны. Только файл описывающий обратную зону называется 168.192.rev

Файлы зоны лежат в /var/named/chroot/var/named/, права на них named.named

Ну и последними двумя строчками подгружаем ключик и локальные зоны. Такие как 127.0.0.1, localhost и т.д. Он создается сам, после установки BIND

include "/etc/named.rfc1912.zones";
include "/etc/rndc.key";
Показать
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};

zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};

zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};

Продолжение следует......

#132618

Статья останется пока не законченная, ввиду некоторых осложнений и нюансов в настройке DNS. Сначала разберусь сам, а потом допишу инструкцию.

#216220

Непонятно, каков смысл в этой статье, когда на оффсайте Red Hat наверняка есть документация по настройке bind.
Или нет? ))
Судя по мегатоннам блогов по настройке bind на оффсайтах процветает академизм в написании док. Или как еще объяснить, что каждый первый желает написать свой, неповторимый блог по настройке того сего.

#216222
EsTaF написал:
Непонятно, каков смысл в этой статье, когда на оффсайте Red Hat наверняка есть документация по настройке bind.
Или нет? ))
Судя по мегатоннам блогов по настройке bind на оффсайтах процветает академизм в написании док. Или как еще объяснить, что каждый первый желает написать свой, неповторимый блог по настройке того сего.

Тут смысл не токо в BIND но ещё и в DHCP. Я когда настраивал в одной шараге сеть так намучился с DHCP что не какой информации толком нет (даже на офф сайте).

#216448

Статья хорошая и нужная. На русском языке я не находил толковых статей только на вражеском.
А как реализуется связка powerDNS + DHCPd кто нибудь пробовал?

#216518

Кому не надо. Не читайте. Написал чисто для себя. Что бы не делать все опять с нуля.

З.Ы. У меня сейчас все работает. Если нужно. Могу дописать как прикрутить dhcp на основе моих рабочих конфигов и выложить примеры файлов зон.

#216529
--=XliN=-- написал:
З.Ы. У меня сейчас все работает. Если нужно. Могу дописать как прикрутить dhcp на основе моих рабочих конфигов и выложить примеры файлов зон.

было бы не плохо

#216536

Токо надо зделать заметку что bind в chroot

#216668
EsTaF написал:
Или нет? ))

дык дайте ссылку, если есть.
что касается bind'а, то как я погляжу - инструкция вполне универсальная, подойдёт не только для CentOS

Войдите или зарегистрируйтесь, чтобы ответить.