Документация по ОС FreeBSD
Воскресенье, 07.12.2025, 21:00
Главная
Регистрация
Вход
Приветствую Вас
Гость
|
RSS
Меню сайта
Главная страница
Новости в мире Unix
NEW
Каталог файлов
NEW
Установка и настройка
Ports & Packages
cvs
Безопасность
Работа с железом
X Window
Multimedia
Man pages
Net
Apache
DNS
FTP
Mail
Samba
Squid
SSH
VPN
РРР
Shell
IPFW
Tips'n'tricks
RFC
Книги по FreeBSD
Темы экзамена BSDA
Гостевая книга
Форум на bsdportal.ru
Каталог сайтов
Самый свежий софт
Каталог ссылок
Категории каталога
Apache
[58]
DNS
[25]
FTP
[27]
Mail
[74]
Samba
[24]
Squid
[46]
SSH
[23]
VPN
[35]
РРР
[20]
Net
[173]
Главная
»
Статьи
»
Сеть
»
Net
ISC-DHCP [2011]
DHCP
- это расширение протокола BOOTP, который был придуман для того, чтобы бездисковые станции UNIX могли загружаться по сети. Подсистема BOOTP предоставляет клиентам IP-адреса, сетевые маски, стандартные шлюзы, а так же информацию, касающуюся начальной загрузки через TFTP. Протокол DHCP не ограничивается этими параметрами, вводя понятие аренды. Хватит пока теории - на практике любому сетевику средних и больших сетей необходима управляемая сетевая структура которая, будет динамично управляться и обновляться при необходимости. Для этого мы и используем протокол DHCP.
Воспользуемся эталонным ПО в реализации DHCP - демон организации Internet Systems Consortium. Мы опишем конфигурацию обеспечивающую, динамическое распределение указанного диапазона IP-адресов, фиксирование IP-адресов за сетевым устройствами, а также передачу клиентам разнообразных параметров необходимых, для работы в сети TCP/IP. А так же реализуем дополнительные трюки, к примеру - запуск в нескольких подсетях, ограничивание неизвестных клиентов, и, живя в эпоху сетевых дикарей, мы будем повышать безопасность демона путем запуска в песочнице (изменение корневого каталога chroot) и работой от имени непривилегированного пользователя. Но и на старуху бывает порнуха - предохраняйтесь и обновляетесь. =)
Установка
Установка проста, но не забывайте сначала обновить систему портов. Найдем необходимый нам порт.
# cd /usr/ports/
# make search name=isc-dhcp41-server
Port: isc-dhcp41-server-4.1.e,2
Path: /usr/ports/net/isc-dhcp41-server
Info: The ISC Dynamic Host Configuration Protocol server
Maint: douglas@douglasthrift.net
B-deps:
R-deps:
WWW: http://www.isc.org/products/DHCP/
Начнем установку и не забудем, что мы параноики и включим поддержку песочницы.
# cd /usr/ports/net/isc-dhcp41-server
# make config
Options for isc-dhcp41-server 4.1.e,2
[X] DHCP_PARANOIA Enable support for chroot
[ ] DHCP_LDAP Experimental LDAP backend support
[ ] DHCP_LDAP_SSL Support LDAP connection over SSL/TLS
# make install clean
~~~
This port has installed the following files which may act as network
servers and may therefore pose a remote security risk to the system.
/usr/local/sbin/dhcpd
/usr/local/bin/omshell
This port has installed the following startup scripts which may cause
these network services to be started at boot time.
/usr/local/etc/rc.d/isc-dhcpd
/usr/local/etc/rc.d/isc-dhcpd6
If there are vulnerabilities in these programs there may be a security
risk to the system. FreeBSD makes no guarantee about the security of
ports included in the Ports Collection. Please type 'make deinstall'
to deinstall the port if this is a concern.
For more information, and contact details about the security
status of this software, see the following webpage:
http://www.isc.org/products/DHCP/
===> Cleaning for isc-dhcp41-server-4.1.e,2
Конфигурация
На данном этапе необходимо откорректировать и дополнить конфигурационный файл демона своими параметрами.
# cd /usr/local/etc/
# chmod u+w dhcpd.conf
# cat dhcpd.conf
Этот конфиг разрабатывался с учетом смешанной сети (Windows серверы и клиенты) и некоторые параметры netbios и ntp-servers можно закомментировать.
## Глобальные параметры ##
# указываем доменное имя
option domain-name "firma.local";
# имя DNS сервера
option domain-name-servers ns1.firma.local;
# IP DNS сервер (предыдущая строчка взаимозаменяемая)
#option domain-name-servers 192.168.0.1;
# по умолчанию на сколько секунд выдаётся IP-адрес
default-lease-time 600;
# максимальное время на сколько выдаётся IP-адрес
max-lease-time 1200;
# минимальное время на сколько выдаётся IP
#min-lease-time 1000;
# указываем, что не будем обновлять DNS-таблицу
ddns-update-style none;
# указываем, что наш сервер будет единственным авторитетным для наших сетей
authoritative;
# отправка логов DHCP в журнал (необходимо изменить syslog.conf)
log-facility local7;
## Параметры подсети ##
# задаем нашу подсеть и ее маску
subnet 192.168.0.0 netmask 255.255.255.0 {
# диапазон выдачи IP адресов (фиксированные IP адреса серверов
# должны лежат вне этого диапазона)
range 192.168.0.101 192.168.0.230;
# маска подсети
option subnet-mask 255.255.255.0;
# шлюз по умолчанию
option routers 192.168.0.3;
# определяем широковещательный адрес
option broadcast-address 192.168.0.255;
# указываем сервер времени (доп.)
option ntp-servers 192.168.0.1;
# сообщаем клиенту, должен ли тот реализовывать
# широковещательный принцип преобразования адресов
# или обращаться к серверу WINS (доп.)
option netbios-node-type 8;
# адрес сервера для работы с WINS (доп.)
option netbios-name-servers 192.168.0.1;
# параметры для работы с WINS (доп.)
option netbios-dd-server 192.168.0.1;
default-lease-time 6000;
max-lease-time 72000;
min-lease-time 72000;
}
Некоторые параметры глобальных и субсетей можно менять, заменять и дополнять в зависимости от необходимого результата.
А теперь приступим к формированию групп и привязки IP к MAC адресу сетевого устройства.
group {
host PC0054 {
hardware ethernet 00:26:5A:13:E7:5C;
fixed-address 192.168.0.54;
}
host PC0055 {
hardware ethernet 00:24:54:74:36:14;
fixed-address 192.168.0.55;
}
}
group {
host PC0060 {
hardware ethernet 00:17:31:67:E0:29;
fixed-address 192.168.0.60;
}
host PC0061 {
hardware ethernet 00:1C:C0:1B:D1:2B;
fixed-address 192.168.0.61;
}
}
Из этого вам уже понятно, что мы сформировали две группы (для удобства работы и можно добавлять больше групп или вообще без них работать)
host - имя сетевого устройства
hardware ethernet - его MAC адрес
fixed-address - привязанный за ним IP адрес
Запуск и работа в chroot
rc.conf
Для автоматического запуска при перезагрузке сервера внесем в /etc/rc.conf опции и укажем специфичные параметры, такие как: запуск в песочнице, нужный сетевой интерфейс, путь до конфигурационного файла, необходимого пользователя и тп.
# cat /etc/rc.conf |grep dhcpd
dhcpd_enable="YES" # включить dhcpd сервер?
dhcpd_flags="-q" # командные опции (вкл. тихая работа)
dhcpd_conf="/usr/local/etc/dhcpd.conf" # конфигурационный файл
dhcpd_ifaces="em0" # сетевой интерфейс
dhcpd_withumask="022" # маска создаваемых файлов
dhcpd_chuser_enable="YES" # работать без привелегий?
dhcpd_withuser="dhcpd" # имя пользователя для запуска
dhcpd_withgroup="dhcpd" # группа для запуска
dhcpd_chroot_enable="YES" # запускать в песочнице?
dhcpd_devfs_enable="YES" # использовать devfs если есть?
#dhcpd_makedev_enable="YES" # использовать MAKEDEV?
dhcpd_rootdir="/var/db/dhcpd" # каталог работы
dhcpd_includedir="/usr/local/etc" # включить каталог с конфигурационными файлами
dhcpd_flags="-early_chroot" # необходимо для полного корня
Для включения вывода сообщений DHCP-сервера на консоль следует изменить определение переменной dhcpd_flags в файле /etc/rc.conf:
#cat /etc/rc.conf |grep dhcpg_flags
dhcpg_flags="-4"
Запуск
Запустим демон.
# /usr/local/etc/rc.d/isc-dhcpd start
Starting dhcpd.
Internet Systems Consortium DHCP Server 4.1-ESV-R2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit _https://www.isc.org/software/dhcp/
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 31 leases to leases file.
Listening on BPF/em0/00:16:76:32:c8:a1/192.168.0.0/24
Sending on BPF/em0/00:16:76:32:c8:a1/192.168.0.0/24
Sending on Socket/fallback/fallback-net
Посмотрим, создалась ли ФС с песочницей для dhcpd.
#df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 989M 442M 468M 49% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/mirror/gm0s1g 67G 14G 48G 22% /ftp
/dev/mirror/gm0s1d 19G 15G 2.9G 84% /usr
/dev/mirror/gm0s1e 19G 3.1G 15G 17% /var
tmpfs 2.3G 52K 2.3G 0% /tmp
devfs 1.0K 1.0K 0B 100% /var/db/dhcpd/dev
Созданная структура песочницы - ОС в миниатюре, и в ней есть всё, что необходимо для запуска этого демона.
# ls /var/db/dhcpd/
dev etc usr var
Запущен ли демон.
# ps -ax | grep dhcp
975 ?? Ss 0:00,01 /usr/local/sbin/dhcpd -q -cf /usr/local/etc/dhcpd.conf -lf
/var/db/dhcpd/dhcpd.
1759 0 S+ 0:00,00 grep dhcp
Остановить демон и запустить можно так.
# /usr/local/etc/rc.d/isc-dhcpd stop
Stopping dhcpd.
# /usr/local/etc/rc.d/isc-dhcpd start
Starting dhcpd.
Или так.
# kill `cat /var/db/dhcpd/var/run/dhcpd/dhcpd.pid`
# /usr/local/etc/rc.d/isc-dhcpd start
Starting dhcpd.
Для перечитывания конфигурационного файла можно просто перезапустить демон
# /usr/local/etc/rc.d/isc-dhcpd restart
Сложные вопросы конфигурации
Работа в двух подсетях
Иногда случается, что в одном физическом сегменте сосуществуют несколько IP подсетей. Например, в организации существует требование использовать 8-битные маски подсетей, но сеть разрослась до размеров, превышающих 254 хоста, в этом случае необходимо использовать две подсети с 8-битными масками. В этом случае секции subnet, описывающие две эти подсети, могут быть заключены в секцию shared-network.
Добавляем после указанных глобальных параметров:
# Указываем, что будем использовать разные подсети с названием <strong>mynet</strong>.
shared-network mynet {
### Локальные параметры подсети 192.168.1.0/24: ###
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.200;
option broadcast-address 192.168.1.255;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.1.1;
option routers 192.168.1.2;
}
### Локальные параметры подсети 192.168.2.0/24: ###
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.10 192.168.2.200;
option broadcast-address 192.168.2.255;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.2.1;
option routers 192.168.2.2;
}
host DC23 {
hardware ethernet 6c:f0:49:e3:92:9d;
fixed-address 192.168.1.11;
}
host RM54 {
hardware ethernet 0:13:8f:24:a4:d9;
fixed-address 192.168.2.22;
}
}
В /etc/rc.conf не забудем внести нужные нам интерфейсы для прослушки - это нужно при использовании к примеру разных сетевых карт.
# cat /etc/rc.conf |grep dhcpd_ifaces
dhcpd_ifaces="em0 em1" # доп. сетевой интерфейс через пробел
Если у вас alias на сетевой карте - ничего менять не нужно.
Разрешить или запретить неизвестных клиентов
Иногда необходимо ограничивать работу неизвестных клиентов, о которых нет упоминания в dhcp.conf, или использовать разные конфигурации сетей в зависимости от клиента - это делается двумя параметрами.
deny unknown-clients - запретить неизвестных клиентов
allow unknown-clients - разрешить неизвестных клиентов
shared-network "net” {
# подсеть для известных клиентов
subnet 192.168.1.0 netmask 255.255.255.0
pool {
range 192.168.1.10 192.168.1.200;
option routers 192.168.1.2;
deny unknown-clients;
}
}
# подсеть для не известных клиентов
subnet 192.168.2.0 netmask 255.255.255.0
pool {
range 192.168.2.190 192.168.2.200;
allow unknown-clients;
}
}
}
В данном примере в подсети №1 мы запрещаем получать настройки неизвестным клиентам и разрешаем их работу в подсети №2.
IPv6
И так эта версия протокола накладывает свои ограничения на работу DHCP во-первых вы должны сконфигурировать свою сетевую карту на работу с IP6, во-вторых, создать отдельный конфигурационный файл dhcp6.conf, а в в-третьих, запустить отдельный демон для IP6. Небольшой FAQ.
Я пока пропущу данный раздел за ненадобностью мне.
Логи
Обязательно включим логгирование - без этого бывает очень тяжело разобраться в появившейся проблеме. Укажем демону syslogd, чтобы он записывал сообщения DHCP-сервера в лог /var/log/dhcpd.log. Необходимо добавить в /etc/syslog.conf строку:
# cat /etc/syslog.conf |grep dhcp
#local7.* /var/log/dhcpd.log
!dhcpd
*.* /var/log/dhcpd.log
# /etc/rc.d/syslogd restart
Создадим лог и дадим права для записи.
# touch /var/log/dhcpd.log
# chown dhcpd:dhcpd /var/log/dhcpd.log
# ll /var/log/dhcpd.log
-rw-r--r-- 1 dhcpd dhcpd 0B 22 апр 21:41 /var/log/dhcpd.log
FAQ
В:
Где DHCP хранит списки выданных адресов?
О:
У DHCP есть файл базы данных по арендуемым параметрам называемый dhcp.leases также демон периодически делает резервную копию этого файла dhcp.leases~. И при проблемах с основным файлом вы можете его заменить резервным.
Источник:
http://www.ignix.ru/book/freebsd/network/isc_dhcp
Категория:
Net
| Добавил:
oleg
(29.04.2011) | Автор:
Raven2000
Просмотров:
1106
| Рейтинг:
0.0
/
0
|
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Всего комментариев:
0
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация
|
Вход
]
Форма входа
Друзья сайта
Google+
Copyright MyCorp © 2025