Библиотека сайта rus-linux.net
Сетевые серверы: DHCP
Обзор
DHCPD должны использовать все сетевые администраторы. Это позволяет Вам предоставлять клиентам информацию относительно их сетевых параметров настройки. Это также позволяет Вам легко реконфигурировать машины пользователей (чтобы , скажем, переместить с 10.0.1.0 на 10.0.2.0, или задать новый набор DNS-серверов). В конечном счете DHCP сильно облегчит Вам жизнь. Я выполнял его только с 8 машинами пользователей и нашел, что жизнь будет намного проще. DHCPD поддерживается ISC и есть на http://www.isc.org/dhcp.html.
Следует использовать DHCPD версии 2.x (3.x пока на тестировании), эта версия получила много новых свойств, и проще в установке и работе. Конечно, стоит закрыть firewallом DHCPD от Internet. Трафик DHCP должен быть только на локальных сегментах, возможно посланных на DHCP-сервер в другом сегменте, но единственный трафик DHCP из Internet означает атаку/DOS (они могли бы резервировать все Ваши IP, таким образом оставляя Вашу реальную клиентуру ни с чем). Если Вы передаете трафик DHCP через Internet, НЕ ДЕЛАЙТЕ ТАК! Это действительно плохая идея по ряду причин (прежде всего эффективность и надежность, но также и защита).
Я рекомендую, чтобы DHCPD-сервер был только сервером DHCP, блокированным где-нибудь (если Вы полагаетесь на DHCP в своей сети, и сервер DHCP засбоит, сеть окажется в серьезной проблеме). Если Вы должны охватить подсети (то есть, Вы имеете много сегментов ethernet, только один из которых имеет сервер DHCP, физически связанный с ним) реле DHCP (NT имеет его встроенным, программное обеспечение DHCP для Linux имеет эту возможность). Имеются также несколько известных проблем с NT и DHCP, NT RAS имеет довольно противную привычку забивать IP-адреса подобно сумасшедшему (я видел, как NT-сервер захватывает 64 адреса и хранит их неопределенными), потому что он пробует резервировать IP для клиентуры, которая будет работать. Это не может походить на реальную проблему, но это может привести (и приводит) к исчерпанию адресов. Или направьте RAS NT подальше, или поместите его в свою подсеть.
DHCPD определенно должен быть firewalled от внешних хостов. DHCP выполняется на порте 67, использует протокол udp, потому что количества данных маленькие, а быстрый ответ важен.
ipfwadm -I -a accept -P udp -S 10.0.0.0/8 -D 0.0.0.0/0 67 ipfwadm -I -a accept -P udp -S some.trusted.host -D 0.0.0.0/0 67 ipfwadm -I -a deny -P udp -S 0.0.0.0/0 -D 0.0.0.0/0 67
или
ipchains -A input -p udp -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 67 ipchains -A input -p udp -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 67 ipchains -A input -p udp -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 67
DHCP-серверы
ISC DHCPD
Chroot'ing DHCPD
DHCPD состоит из 2 основных выполнимых программ:
╥ dhcpd: собственно DHCP
╥ dhcrelay: DHCP-реле (чтобы передавать запросы на центральный DHCP-сервер).
DHCPD требует 2 библиотеки:
╥ /lib/ld-linux.so.2
╥ /lib/libc.so.6
Файл настройки:
╥ /etc/dhcpd.conf: расположение загрузочных файлов, настройки и прочее.
Еще несколько дополнительных файлов:
╥ /etc/dhcpd.leases: список активных соединений
╥ файл запуска, настройте по своему вкусу.
Самый простой путь к установке dhcpd chroot'ed в том, чтобы просто установить dhcpd (последний предпочтительно) и поправить необходимые файлы. Хорошая идея состоит в том, чтобы создать каталог (например, /chroot/dhcpd), предпочтительно на отдельной файловой системе, и затем создать структуру файлов для dhcpd в нем. Ниже приведен такой пример. Замените в нем /chroot/dhcpd на выбранный Вами каталог.
# Install bind so we have the appropriate files # rpm -i dhcpd-2.0b1pl0-1.i386.rpm # # Create the directory structure # cd /chroot/dhcpd/ # or wherever mkdir ./etc mkdir ./usr/sbin mkdir ./usr mkdir ./var/dhcpd mkdir ./var mkdir ./lib # # Start populating the files # cp /usr/sbin/dhcpd ./usr/sbin/dhcpd cp /etc/dhcpd.conf ./etc/dhcpd.conf cp /etc/rc.d/init.d/dhcpd ./etc/dhcpd.init cp /etc/rc.d/init.d/functions ./etc/functions # # Now to get the latest libraries, change as appropriate # cp /lib/ld-linux.ld-linux.so.2 ./lib/ cp /lib/libc.so.6 ./lib/ # # And create the necessary symbolic links so that they behave # Remember that dhcpd thinks /chroot/dhcpd/ is /, so use relative links
Затем измените или создайте свой скрипт запуска.
Как только это будет выполнено, просто удалите первоначальный файл запуска и создайте ссылку с него на новый, и dhcpd будет вести себя 'обычно' (будет автоматически загружен при начальной загрузке системы), в то время как фактически он отделяется от Вашей системы. Можно (но не обязательно) заменить 'оригинал' DHCPD ссылками.
Если Вы сделали все правильно, Вы должны иметь /chroot/dhcpd (млм другой каталог), который содержит все требуемое, чтобы выполнить dhcpd. ps -xau должен показать нечто вроде:
USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND root 6872 0.0 1.7 900 532 p0 S 02:32 0:00 ./usr/sbin/dhcpd -d -q root 6873 0.0 0.9 736 288 p0 S 02:32 0:00 tee ./etc/dhcpd.log
Сервер Moreton Bay DHCP
http://www.moretonbay.com/dhcpd
Written by Kurt Seifried