DHCP сервер и его настройка.

Все сказаное относиться к Red Hat и его клонам.

В начале немного теории. Сервис DHCP предназначен для динамического предоставления IP адресов клиентам. DHCP сервис также сообщает адреса шлюзов, маску подсети, доменное имя сервера DNS и некоторые другие параметры. Кроме того этот сервис может работать под протоколами ARP и BOOTP. Эти протоколы являются более старыми и менее устойчивы. несмотря на это они по прежнему используются некоторыми устройствами. Пожалуй главным отличием DHCP и BOOTP является то, что в BOOTP время аренды адреса по умолчанию равно бесконечности.

Какже происходит ваделение IP адреса DHCP сервером. Поясним это при помощи небольшой схемы.

Распишем стадии процесса выделения IP адреса.

1. - DHCP клиент посылает шировещательный запрос DCHPISCOVER который принимают все DHCP сервера.

2. Все DHCP сервера посылают ответ DHCPOFFER клиенту запросившему сервис DHCP

3. Клиент рассматривает DHCPOFFER в порядке их поступления и ненужные отклоняет (например не втой сети) посылкой DHCPDECLINE. Либо подтверждает посылкой DHCPREQUEST (одному да другим отказ)

4. Посылка DHCPDECLINE

5.Посылка DHCPREQUEST

6. Тот сервер услуги которого приняты посылает DHCPPACK

7. Информация прнимается и обработывается клиентом.

Теория вопроса рассмотрена теперь перейдем к практике настройки. Как правило пакет DHPC сервера входит в поставку Linux. Но могут бытьи и исключения. Например у меня ASPLinux 7.1 Delux. И в поставку не входил DHCP сервер.

Не отчаевайтесь вы всега можите скачать его с http://www.isc.org/products/DHCP/ Тем более, чтоверси будет новее. А это немаловажно. Ведь до версии 3.0 DHCP сервер не поддерживал автоматических изменений в записях сервера DNS (относится только к некомерческим пакетам). А начиная с версии 3.0 такая подддержка включена. Объем дистрибутива состовляет порядка 1Мб.

Итак вы скачали пакет и теперь его надо распокавать его и установить. Для этого выполняются следующие действия:

1. Создайте специальный каталог куда скопируйте архив.

2. Распакуем для чего войдя в каталог наберем:

tar xvfz dhcp-3.0pll.tar.gz

3. Перейдем во вновь созданный програмой распаковки каталог

4. Набираем: ./configure

5.Собираем пакет командой: make

6. Инсталируем пакет командой: make install

На данном этапе пакет инсталирован, так что те каталоги которые мы создоывли для инсталяции можно удалять. Осталость сконфигурировать файлы конфигураций. И что, наверное гораздо сложнее настройть автоматический запуск этого сервера.

Настройка конфигурационного файла DHCP

Основной файл конфигурации это как правило etc/dhcp.conf , уже выделенные адреса записываются в dhcp.lases. Еще одной серьезной проблеммой DHCP является то что до версии 9.0 небыло согласованной работы DHCP и DNS серверов. То есть DNS сервер не знал какому компу какой адрес достался. Обходилась эта проблемма просто: DHCP сервер настраивался так, что IP адреса выделялись по Ethernet адресам сетевых катр. Поскольку всейчас эта проблемма решена, то мы оставим этот вопрос без рассмотрения.

Структуру файла dhcp.conf лучше пояснить на конкретном примере с коментариями.
-----------------------------------------------------------------------------------------------------
#Cекция глобальных параметров
option domain-name "example.org"; # Задали имя нашего домена
option domain-name-servers "dns.example.org"; # Указали где искать DNS сервер
option subnet-mask 255.255.255.0; # Указали маску подсети
option boardcast-address 192.168.1.1; # Используется если на сервере > 1 сетевой карты
option routes 192.168.1.2; # Указали адрес маршрутизатора
ddns-update-style ad-hoc; # Указали стиль обновления баз данных DNS
default-lease-time 600; # Время лизинга IP адреса по умолчанию
max-liase-time 7200; #Максимально время лизинга.

#Теперь опишим какую либо сеть
subnet 192.168.1.0 netmask 255.255.255.0 { # Описали сеть
range 192.168.1.2 192.168.1.26; # указали диапазо допустимых для лизинга адресов
option routes 192.168.1.20;} # Указали маршрутизатор для данной сети
------------------------------------------------------------------------------------------------------------

Вот и все что необходимо для конфигурирования DHCP сервера. Теперь надо настроить его автоматический запуск. Делать мы это будем при помощи демона inetd. Делается это в 3 этапа

  • написания сченария запуска по типовому образцу
  • настройка запуска на разных уровнях работы
  • перезагрузка системы

    Начнем по порядку. Как написать сценарий мы покажем на примере уже готового сценария с коментариями.

Написание скрипта запуска

--------------------------------------------------------------------------------
#! /bin/bash
#
# DHCPD Этот скрипт запускает или останавливает DHCP Server.
#
# chkconfig: 345 79 21
# description: dhcpd (DHCP)
# autor: freeman
#
#Проверим наличие необходимых библиотек и запуск сети
/etc/rc.d/init.d/functions
/etc/sysconfig/network
[ "${NETWORKING}" = "no" ] && exit 0RETVAL=0
# Определим паременнную
prog="dhcpd"
# Собственно тело скрипта

start() {
# процедура запуска.
echo -n $"Запуск $prog: "
# daemon dhcpd -u dhcpd
daemon /usr/sbin/dhcpd
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/dhcpd
echo
return $RETVAL
}

stop() {
# Процедура остановки
echo -n $"Останавливается $prog: "
# killproc dhcpd
killproc /usr/sbin/dhcpd
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dhcpd
echo
return $RETVAL
}

#Процедура перезапуска
restart() {
stop
start
}

# Выбор необходимой процедуры из start-stop-restart-reload-status
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
restart
;;
status)
status /usr/sbin/dhcpd
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
exit $?
------------------------------------------------------------------------------------------

Когда сценарий написан то надо настроить запуск DHCP сервера на определенных уровнях работы. Очевидно, что сервис должен работать на уровнях, 3, 4 и 5,(так как только на этих уровнях работает сеть) а на остальных должен быть убит.

Настроить запуск на данном уровне можно запустив програму setup и войдя в меню system services, теперь необходимо отметить сервис DHCP звездочкой и онбудет запускаться. Выходим из setup. Входим в коталог etc/rc.d/rc#.d, где # - соответствующий уровень работы. там вы увидете файл @S79DHCP который является ссылко на сценарий созданный нами. Буква S говорит о том , что надо запустить сценарий, а цифра 79 определяет порядок запуска. (Заметим что запуск DHCP должен быть после запуска сети).

Нам осталось скопировать этот файл во се каталоги rc#.d меняя или не меняя S на К в зависимости от того запустиь или убить нам надо сервис на данном уровне работы. Также мы заменяем цифру в случае если убиваем, она должна быть равна 100 - 79 = 21.

Перезагружаем компьютер и проверяем работу сервера DHCP выполнив команду из комплекса программ поставляемых с DHCP сервером: dhclient Если по экрану побежали запросы и ответы из теории которуюю мы рассмотрели выше то все сделано правильно.

Теперь осталось только настроить клиентов и дело сделано.

Использованные источники
1Использование Linux 6-е издание Девид Бендел, Роберт Нейпир;
2. Материалы форума www.Linux.ru
3. Материалы сайта http://www.isc.org/products/DHCP/
4. "Как написать скрипт загрузки" http://linuxportal.ru/forums/index.php/f/48/

Автор:Алекс

 
Для связи:linux-75@narod.ru
 
Hosted by uCoz