DHCP Server, FreeBSD

Dec 05, 2010 04:21

Назначение адресов - определённого рода головная боль для администратора, бла-бла-бла. В общем... Ниже рассказано, о том, как запустить DHCP сервер на FreeBSD. Из всего спектра предлагаемого программного обеспечения, я лично выбрал isc-dhcp.

Для работы isc-dhcp необходимо ядро, собранное с поддержкой bpf (berkley packet filter). В ядро GENERIC по умолчанию (никто не мешает Вам собрать своё ядро с названием GENERIC) включена поддержка bpf. Чтобы это проверить, необходимо открыть конфигурационный файл вашего ядра и убедиться, что строчка device bpf там присутствует и не закомментирована. Быстро это можно сделать следующим образом:

server# grep -i "bpf" /usr/src/sys/`uname -p`/conf/`uname -i`
# The `bpf' device enables the Berkeley Packet Filter.
# Note that 'bpf' is required for DHCP.
device bpf # Berkeley packet filter

Далее устанавливаем isc-dhcp-server. Устанавливать будем из коллекции портов, поэтому рекомендуется сначала её актуализировать. После этого, чтобы посмотреть, какие версии isc-dhcp есть в портах и выбрать последнюю - ищём в коллекции:

server# cd /usr/ports/
server# make search key=isc-dhcp | grep Path
Path: /usr/ports/misc/instant-server
Path: /usr/ports/net/isc-dhcp3-devel
Path: /usr/ports/net/isc-dhcp31-client
Path: /usr/ports/net/isc-dhcp31-relay
Path: /usr/ports/net/isc-dhcp31-server
Path: /usr/ports/net/isc-dhcp41-client
Path: /usr/ports/net/isc-dhcp41-relay
Path: /usr/ports/net/isc-dhcp41-server

В нашем случае будем устанавливать порт /usr/ports/net/isc-dhcp41-server, для этого, нужно ввести следующие команды:

server# cd /usr/ports/net/isc-dhcp41-server/
server# make install clean

И откинуться на спинку кресла, пока не будет установлен сам isc-dhcp и все необходимые для него зависимости. Система, руководствуясь портами сама скачает исходный код со страницы производителя, необходимым образом его модифицирует, проверит целостность, скомпилирует и соберёт. Вам остаётся за этим лишь наблюдать.

После установки isc-dhcpd его необходимо:
1. сконфигурировать
2. запустить
3. настроить запуск вместе со стартом сервера.

Для задания поведения DHCP сервера (какие настройки кому выдавать) необходимо создать конфигурационный файл, в котором это описано. По соглашению FreeBSD установленное дополнительно ПО хранит свои конфигурационные файлы в /usr/local/etc (стоит иметь ввиду, что система никоим образом не запрещает вам хранить ваши конфигурационные файлы в любом другом месте), поэтому будем считать конфигурационным файлом isc-dhcpd файл /usr/local/etc/dhcpd.conf.

Конфигурационный файл являет собой текстовый файл. Текст, помещённый после решетки (знак #) считается комментарием и игнорируется. Конфигурационный файл состоит из параметров и определений. Первые нужны для задания определённого поведения сервера, вторые - для описания топологии сети и клиентов, подключённых к ней. С помощью параметров задаются такие опции как
шлюз по умолчанию или DNS-сервер, сообщаемый клиенту.

Определения бывают нескольких видов, рассмотрим subnet и host. subnet задаёт описание подсети, обслуживаемой DHCP-сервером. Параметр range задает диапазон адресов, который может назначать сервер своим клиентам в данной подсети. Важно, что для каждой обслуживаемой подсети, ДОЛЖНО быть определение subnet в конфигурационном файле. Например следующая конструкция определяет, что в сети 192.168.2.0 сервер может назначать своим клиентам адреса со 192.168.2.100 по 192.168.2.200.

subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.200;
}

Определение host задаёт параметры одного клиента, который может запросить у сервера настройки. Внутри определения host допускается указывать в частности аппаратный адрес (MAC) клиента и IP-адрес, подлежащий выдачи данному клиенту. Следующая конструкция предписывает выдавать клиенту с MAC-адресом 08:00:27:6e:b2:6f фиксированный адрес 192.168.2.201.

host static-1 {
hardware ethernet 08:00:27:6e:b2:6f;
fixed-address 192.168.2.201;
}

Фиксированные адреса из определений host должны быть из сетей описанных определениями subnet, но не должны входить в ни в один диапазон range. Последний при описании подсети можно не указывать, таким образом dhcp-сервер будет обслуживать только клиентов описанных в определениях host.

Полное руководство по составлению конфигурационного файла isc-dhcp можно прочитать на странице dhcpd,conf(5) командой man 5 dhcpd.conf.

Поместим в конфигурационный файл следующее:

option domain-name "server.local";
option domain-name-servers 192.168.1.1;
option routers 192.168.2.1;

subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.200;
}

Такой файл предписывает isc-dhcp обслуживать сеть 192.168.2.0/24 и выдавать в ней адреса из диапазона 192.168.2.100-192.168.2.200. В качестве основного шлюза будет выдаваться адрес 192.168.2.1, а DSN-сервера - 192.168.1.1. Вот как выглядел бы вывод команды ipconfig /all машины под управлением Windows XP, которая получила IP адрес от сервера с указанной выше конфигурацией если бы он уже был запущен:

C:\Documents and Settings\Пользователь>ipconfig /all

Настройка протокола IP для Windows

Имя компьютера . . . . . . . . . : client
Основной DNS-суффикс . . . . . . :
Тип узла. . . . . . . . . . . . . : неизвестный
IP-маршрутизация включена . . . . : нет
WINS-прокси включен . . . . . . . : нет
Порядок просмотра суффиксов DNS . : server.local

Подключение по локальной сети - Ethernet адаптер:

DNS-суффикс этого подключения . . : server.local
Описание . . . . . . . . . . . . : AMD PCNET семейство PCI Ethernet адаптеров
Физический адрес. . . . . . . . . : 08-00-27-6E-B2-6F
Dhcp включен. . . . . . . . . . . : да
Автонастройка включена . . . . . : да
IP-адрес . . . . . . . . . . . . : 192.168.2.100
Маска подсети . . . . . . . . . . : 255.255.255.0
Основной шлюз . . . . . . . . . . : 192.168.2.1
DHCP-сервер . . . . . . . . . . . : 192.168.2.1
DNS-серверы . . . . . . . . . . . : 192.168.1.1
Аренда получена . . . . . . . . . : 5 декабря 2010 г. 2:30:01
Аренда истекает . . . . . . . . . : 5 декабря 2010 г. 14:30:01

Если необходимо, чтобы определённому MAC-адресу выдавался постоянно один и тот-же IP-адрес, то нужно дополнить конфигурационный файл следующими строками:

host static-1 {
hardware ethernet 08:00:27:6e:b2:6f;
fixed-address 192.168.2.201;
}

В таком случае, компьютеру с MAC-адресом 08:00:27:6e:b2:6f будет всегда выдаваться IP-адрес 192.168.2.201. Данный IP-адрес не должен присутствовать ни в одном из диапазонов range в описании подсети subnet.

Для автозапуска isc-dhcp необходимо добавить в файл /etc/rc.conf следующие строки:

dhcpd_enable="YES"
dhcpd_options="/usr/local/etc/dhcpd.conf"
dhcpd_ifaces="em1"

Это строки соответственно задают необходимость запуска dhcpd, передают конфигурационный файл и интерфейс, на котором DHCP-сервер будет работать. Под и нтерфейсом в данном случае понимается сетевой адаптер, перечень, настройки и состояние которых можно посмотреть командой ifconfig.
Запуск сервера можно произвести либо перезагрузкой машины (командой shutdown -r now) либо выполнением rc-скрипта - /usr/local/etc/rc.d/isc-dhcpd start.

server# /usr/local/etc/rc.d/isc-dhcpd start
Starting dhcpd.
Internet Systems Consortium DHCP Server 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Wrote 1 leases to leases file.
Listening on BPF/em1/08:00:27:a7:5a:59/192.168.2.0/24
Sending on BPF/em1/08:00:27:a7:5a:59/192.168.2.0/24
Sending on Socket/fallback/fallback-net

Сервер запущен.

dhcp, freebsd

Previous post Next post
Up