Есть несколько DHCP серверов для U*X-подобных операционных систем, как коммерческих, так и бесплатных. Один из наиболее популярных DHCP серверов ‐ Paul Vixie/ISC DHCPd. На данный момент его последняя версия 2.0 (предлагаемая большинству пользователей), а версия 3.0 в стадии бэта-тестирования. Вы можете их получить с
Некоторые дистрибутивы предоставляют бинарные пакеты dhcpd, так что если вы устанавливаете его таким способом, вы можете пропустить следующую секцию.
После того как вы скачали пакет, распакуйте его. Затем войдите в каталог дистрибутива и наберите: ./configure
Для настройки потребуется немного времени. После этого наберите: make и make install.
После установки наберите ifconfig -a. Вы должны увидеть нечто подобное:
eth0 Link encap:10Mbps Ethernet HWaddr 00:C0:4F:D3:C4:62 inet addr:183.217.19.43 Bcast:183.217.19.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2875542 errors:0 dropped:0 overruns:0 TX packets:218647 errors:0 dropped:0 overruns:0 Interrupt:11 Base address:0x210 |
Если вы не увидите MULTICAST, вам следует переконфигурировать ядро для добавления multicast поддержки. На большинстве систем вам это не потребуется.
Следующий шаг добавить маршрут для 255.255.255.255. Цитата из DHCPd README:
"Для корректной работы dhcpd с picky DHCP клиентами (например, Windows 95), нужно иметь возможность посылать пакеты с IP адресом назначения 255.255.255.255. К несчастью, Linux настаивает на замене 255.255.255.255 на локальный широковещательный адрес подсети (здесь 192.5.5.223). Это приводит к нарушению DHCP протокола, и в то время как многие DHCP клиенты не замечают этой проблемы, некоторые (такие как все Microsoft DHCP клиенты) замечают. Клиенты с этой проблемой как будто не видят DHCPOFFER сообщений с сервера."
Наберите: route add -host 255.255.255.255 dev eth0
Если вы получаете сообщение "255.255.255.255: Unknown host", вам следует попробовать добавить следующий элемент в ваш файл /etc/hosts :
255.255.255.255 all-ones |
Затем, попробуйте:
route add -host all-ones dev eth0 |
или
route add 255.255.255.0 dev eth0 |
eth0 ‐ нужно заменить именем используемого вами сетевого интерфейса.
Теперь вам нужно настроить DHCPd. Для этого вам необходимо создать и отредактировать файл /etc/dhcpd.conf. Для настройки dhcpd есть графическая утилита для KDE ( http://www.kde.org/ ) называемая kcmdhcpd, которая очень подобна DHCP конфигуратору в Windows NT. После выхода KDE 2.0 она должны идти в стандартной поставке, или вы можете загрузить ее прямо с:
ftp://ftp.us.kde.org/pub/kde/unstable/apps/network/
Если вы хотите настраивать вручную - читайте нижеприведенные инструкции.
Скорее всего, вы захотите назначать IP адреса случайным образом. Это можно сделать такими настройками:
# Простой /etc/dhcpd.conf # (добавьте тут свои комментарии) default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.254; option domain-name-servers 192.168.1.1, 192.168.1.2; option domain-name "mydomain.org"; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.100; range 192.168.1.150 192.168.1.200; } |
DHCP сервер будет выдавать клиентам IP адреса в диапазоне 192.168.1.10-192.168.1.100 или 192.168.1.150-192.168.1.200. Если клиент не запрашивает указанный временной диапазон, выделяемый адрес арендуется на 600 секунд. Иначе максимально-допустимое время аренды будет 7200 секунд. Также сервер "советует" клиенту использовать маску подсети 255.255.255.0, широковещательный адрес 192.168.1.255, адрес шлюза 192.168.1.254 и DNS сервера 192.168.1.1 и 192.168.1.2.
Если вы хотите указать WINS сервер для ваших Windows клиентов, вам следует включить опцию netbios-name-servers, например
option netbios-name-servers 192.168.1.1; |
Также вы можете назначать клиентам определенные IP адреса в зависимости от их ethernet адреса, например
host haagen { hardware ethernet 08:00:2b:4c:59:23; fixed-address 192.168.1.222; } |
Клиенту с ethernet адресом 08:00:2b:4c:59:23 будет назначен IP адрес 192.168.1.222.
Вы можете пользоваться смешанной схемой назначения адресов, некоторым клиентам давать "статические" IP адреса (например, серверам), а другим распределять динамические IP (например, мобильным пользователям с ноутбуками). Также есть большое количество прочих опций, например адрес nis сервера, адрес сервера времени и т.д., если вам требуется какая-либо из этих опций ‐ прочтите dhcpd.conf man страницу.
Пред запуском сервера нужно сделать одну вещь. В большинстве случаев установка DHCP не создает файл dhcpd.leases. Этот файл используется DHCPd для размещения информации о текущих арендованных адресах. Его формат ‐ обычный текст, так что вы сможете его просматривать в процессе работы DHCPd. Для его создания dhcpd.leases наберите:
touch /var/state/dhcp/dhcpd.leases |
Будет создан пустой файл (размер файла = 0). Некоторые старые версии dhcpd 2.0 помещают файл в /etc/dhcpd.leases. Вам не требуется делать никаких изменений в арендном файле, он будет контролироваться dhcpd. Если вы получите сообщение о том, что файл уже существует, просто проигнорируете его и переходите к следующему шагу.
Теперь вы можете запустить DHCP сервер. Просто наберите (или включите в загрузочные скрипты)
/usr/sbin/dhcpd |
Это приведет к запуску dhcpd на устройстве eth0. Если вы хотите запускать его на другом устройстве, просто укажите его в командной строке, например
/usr/sbin/dhcpd eth1 |
Для проверки нормальной работы вам следует сначала включить режим отладки и запустить сервер не в фоновом режиме. Вы можете это сделать так
/usr/sbin/dhcpd -d -f |
Затем загрузите один из ваших клиентов и проверьте консоль вашего сервера. Вы увидите некоторое количество отладочных сообщений. Если все работает нормально ‐ вы закончили. Выйдите из dhcpd и запустите его без ключа -d -f и аргументов. Если вы желаете загружать dhcpd в процессе загрузки, включите dhcpd например в
/etc/rc.d/rc.local |
В Апрельском выпуске Linux Magazine была очень хорошая статься под названием Network Nirvana: Как сделать настройку сети простой как DHCP, в которой обсуждается установка DHCP.