DNS+DHCP сервер на Ubuntu

Все установки пакетов и редактирование файлов конфигурации производятся с правами суперпользователя.

Права суперпользователя действуют до следующей перезагрузки.

1. Начальные настройки сети.

Диапазон: 192.168.0.1/255.255.255.0
Диапазон DHCP: 192.168.0.101 — 192.168.0.199
Основной шлюз: 192.168.0.1
Внешние DNS-сервера: 8.8.8.8, 8.8.4.4, 204.194.232.200, 204.194.234.200
Имя нашего сервера: ns1
Статический IP-адрес сервера: 192.168.0.2
Имя домена: team.local

2. Установка bind9 и dhcp3-server

Команды для установки:

3. Создание секретного ключа

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

После завершения команды в текущем каталоге появятся два файла один с расширением .key , другой .private .
В тексте этих файлов содержится секретный ключ вида:

Он нам и понадобиться в дальнейшем.

4. Настройка сетевого соединения со статическим IP

Внесите изменения в файл /etc/network/interfaces. Статический, жестко прописанный адрес, необходим хотя бы для того, чтобы сервис dhcp стартовал при перезапуске сервера. Иначе, не увидев поднятых интерфейсов во время перезапуска, dhcp не запустится.

Адрес DNS сервера можно задать в файле /etc/network/interfaces , но вообще управление адресами DNS серверов в Ubuntu осуществляется через файл /etc/resolv.conf. Важно не забыть его поправить. Он должен иметь вид:

Перезапускаем службу networking

5. Настраиваем BIND9

Файлы конфигурации лежат в каталоге: /etc/bind
Нам нужно отредактировать два файла: named.conf.options и named.conf.local
Правим named.conf.options:

Этим мы указываем серверу куда передавать неизвестные нам имена «на опознание» и по каким адресам «слушать» DNS-запросы клиентов нашей сети.
Файл named.conf.local правится далее по тексту.

6. Создание прямой и обратной зоны для сети

Создаём файлы прямой и обратной зоны для нашей локальной сети.
Файлы наших локальных зон должны лежать в директории: /var/lib/bind.
Если поместить эти файлы в папку /etc/bind, где уже лежат файлы описания корневых зон,то обновление записей для локальных зон производиться не будет, так-как локальная группа [bind] по умолчанию не имеет права на запись в эту директорию.
Итак, в папке /var/lib/bind создаём файл для прямой зоны, назовём его например: forward.bind. Файл используется DNS-сервером для преобразования имени компьютеров локальной сети в ip-адрес.
forward.bind

В последних строчках содержаться записи о серверах и устройствах нашей локальной сети, имеющих статические адреса, но впрочем обязательно нужно прописать только DNS-сервер. Заранее скажу, что аккуратно оформлять все не обязательно т.к. сервис DHCP все равно все перестроит.
Создаём файл для обратной зоны, назовём его : reverse.bind. Файл используется DNS-сервером для преобразования ip-адреса компьютеров локальной сети в доменное имя.
reverse.bind

Последние строки, так-же содержат данные о серверах и устройствах нашей локальной сети, для которых выделены статические адреса.

7. Правка name.conf.local

Возвращаемся в директорию /etc/bind и правим файл name.conf.local
name.conf.local

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

Если при перезагрузки bind9 не ругается — проверяем работу нашего DNS-сервера:

В ответ получаем:

Далее проверим как наш сервер преобразует своё локальное имя:

В ответ должны получить:

Если что-то не так проверяем фаил forward.bind Проверим обратное преобразование:

В ответ получаем нечто такое:

Соответственно если доменное имя сервера не определилось, проверяем файл reverse.bind. Ну и все проблемы будут отражены в логе системы /var/log/syslog.

8. Настройки DHCP сервера

Теперь dhcp3-server именуется в ubuntu isc-dhcp-server, поэтому обратите внимание на название папок и файлов.

Приступаем к настройке. Нам нужен фаил: dhcpd.conf который лежит в /etc/dhcp
На самом деле все из него можно удалить и заменить примерно таким содержимым:

Вот где нам ещё раз понадобился секретный ключ, который мы создавали.
Далее добавлены строки для раздачи адресов и параметров сети клиентам нашего DHCP-сервера:

Если в локальной сети есть сетевой принтер или сетевое многофункциональное устройство, по опыту работы их желательно сажать на статические адреса или сервер DHCP может выдавать им постоянные ip-адрес зарезервированный под них из выделенного диапазона. Для этого необходимо знать их сетевые имена и MAC-адрес.
Добавляем в файл dhcpd.conf строку к примеру для компьютера crow:

Эти имена также необходимо прописывать в файлы forward.bind и reverse.bind, как и для статических адресов.

9. Настройка IP адреса DHCP сервера

Не забудьте указать сетевую карту сервера, с которой он будет раздавать клиентам ip-адреса. Файл где прописывается интерфейс DHCP-сервера в Ubuntu/Debian лежит в: /etc/default/isc-dhcp-server
Там нужно указать сетевой интерфейс, в нашем случае: eth0

10. Перезапускаем, проверяем.

Перезапускаем наш DHCP-сервер.

Если при перезагрузке никто не ругается, то можно включать клиентские компьютеры.
При правильной работе в директории /var/lib/bind должны появиться файлы:
forward.bind.jnl и reverse.bind.jnl а в файлах forward.bind и reverse.bind появиться строчка с ip-адресом и именем клиентского.
В директории /var/lib/dhcp появиться файл: dhcpd.leases с параметрами ip клиента. Для проверки с Windows-клиента можно дать команду из командной строки:

В ответ должна пойти трассировка до ns1.team.local[192.168.0.2]
Также, обратите внимание, что если прописать в Windows «Основной DNS-суффикс этого компьютера» (Это по кнопке «Дополнительно» в окне «Изменение имени компьютера» — в нашем случае «team.local»), то прямая зона обновляться не будет, ругаясь на ошибку авторизации. Обратная будет обновляться. Как это побороть — не знаю. Проще не прописывать суффикс.
Ну вот и вся настройка. При редактировании файлов конфигурации будьте внимательны, из-за одного пропущенного или лишнего символа, можно потерять пол дня.

11. Итог

После настройки всего будут изменены файлы:
/etc/network/interfaces
/etc/bind/named.conf.local
/etc/bind/named.conf.options
/etc/resolv.conf
/var/lib/bind/forward.bind
/var/lib/bind/reverse.bind
/etc/dhcp/dhcpd.conf
/etc/default/isc-dhcp-server
...

Неправленый мной оригинал статьи: http://fgh151.blog.ru/97522339.html