Для начала, надо найти последнюю версию DHCP сервера.Заходим на http://www.freshports.org и справа, в поле поиска, вводим «dhcp«. Помимо всего прочего, тут нашелся и искомый (смотрите версию, желательно ставить последнюю):
- isc-dhcp42-server 4.2.3_2 net
=7
- The ISC Dynamic Host Configuration Protocol server
Maintained by: [email protected]
Port Added: 07 Jul 2011 19:45:39
License: ISCL
Обновим порты:
# portsnap fetch update
Найдем его в портах на сервере и приступим к установке:
# cd /usr/ports/net/isc-dhcp42-server
# make install clean
При конфигурировании уберем CHROOT, если надо — добавим LDAP:
После установки читаем сообщения с подсказками:
**** This port installs the dhcp daemon, but doesn’t invoke dhcpd by default.
If you want to invoke dhcpd at startup, add these lines to /etc/rc.conf:
dhcpd_enable=»YES» # dhcpd enabled?
dhcpd_flags=»-q» # command option(s)
dhcpd_conf=»/usr/local/etc/dhcpd.conf» # configuration file
dhcpd_ifaces=»» # ethernet interface(s)
dhcpd_withumask=»022″ # file creation mask
**** If compiled with paranoia support (the default), the following rc.conf
options are also supported:
dhcpd_chuser_enable=»YES» # runs w/o privileges?
dhcpd_withuser=»dhcpd» # user name to run as
dhcpd_withgroup=»dhcpd» # group name to run as
dhcpd_chroot_enable=»YES» # runs chrooted?
dhcpd_devfs_enable=»YES» # use devfs if available?
dhcpd_rootdir=»/var/db/dhcpd» # directory to run in
dhcpd_includedir=»<some_dir>» # directory with config-files to include
Отредактируем файл /etc/rc.conf:
dhcpd_enable=»YES»
dhcpd_conf=»/usr/local/etc/dhcpd.conf»
dhcpd_ifaces=»vr0″
dhcpd_withuser=»dhcpd»
dhcpd_withgroup=»dhcpd»
Создадим каталог:
# mkdir /var/db/dhcpd
Назначим пользователя:
# chown dhcpd /var/db/dhcpd
Отредактируйте /usr/local/etc/dhcpd.conf под ваши требования, самая простая конфигурация выглядит так:
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#
# option definitions common to all supported networks…
option domain-name «setevoy.dcv»;
option domain-name-servers 8.8.8.8;
default-lease-time 600;
max-lease-time 7200;
# Use this to enble / disable dynamic dns updates globally.
ddns-update-style none;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
# This is a very basic subnet declaration.
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.2 10.0.0.255;
option routers 10.0.0.1;
}
#fixed address for test
host for_test {
hardware ethernet f0:de:f1:8f:76:1b;
fixed-address 10.0.0.2;
}
Перезагрузим сервер, и проверим запустился ли dhcpd:
# ps aux | grep dhcpd
root 1332 0.0 0.1 3500 1236 0 S+ 12:31AM 0:00.01 grep dhcpd
Не запустился.
Смотрим /var/log/messages:
Feb 26 00:25:45 takashi setevoy: /usr/local/etc/rc.d/isc-dhcpd: ERROR: unable to copy /etc/localtime to /var/db/dhcpd/etc/localtime — not a file or a directory
Такого файла или каталога нет вообще:
# less /etc/localtime
/etc/localtime: No such file or directory
# cd /etc/localtime
bash: cd: /etc/localtime: No such file or directory
ОК, создадим его вручную:
# touch /etc/localtime
И пробуем запустить демон:
# /usr/local/etc/rc.d/isc-dhcpd start
Starting dhcpd.
Internet Systems Consortium DHCP Server 4.2.3-P2
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Warning: subnet 10.0.0.0/24 overlaps subnet 10.0.0.0/24
Wrote 0 class decls to leases file.
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 0 leases to leases file.
Listening on BPF/vr0/00:40:63:ec:73:1a/10.0.0.0/24
Sending on BPF/vr0/00:40:63:ec:73:1a/10.0.0.0/24
Sending on Socket/fallback/fallback-net
Запустился, проверим:
# ps aux | grep dhcpd
dhcpd 1435 0.0 0.6 8412 6016 ?? Is 12:33AM 0:00.00 /usr/local/sbin/dhcpd -cf /usr/local/etc/dhcpd.conf -lf /var/db/dhcpd/dhcpd.leases -pf /var/
root 1437 0.0 0.1 3500 1236 0 S+ 12:33AM 0:00.01 grep dhcpd
Что бы включить логирование, проверьте и при необходимости раскомментируйте в файле конфигурации DHCP /usr/local/etc/dhcpd.conf строку:
log-facility local7;
В файл конфигурации демон syslogd /etc/syslog.conf добавьте:
local7.* /var/log/dhcpd.log
Создайте файл лога:
# touch /var/log/dhcpd.log
Добавьте правило в файл конфигурации ротации логов /etc/newsyslog.conf:
/var/log/dhcpd.log 600 7 100 @T00 JN
Теперь перезапустите syslogd:
# /etc/rc.d/syslogd restart
Stopping syslogd.
Starting syslogd.
Подключитесь ещё раз dhcp-клиентом и посмотрите логи:
Feb 26 10:03:25 takashi dhcpd: DHCPREQUEST for 10.0.0.2 from f0:de:f1:8f:76:1b (setevoy_laptop) via vr0
Feb 26 10:03:25 takashi dhcpd: DHCPACK on 10.0.0.2 to f0:de:f1:8f:76:1b (setevoy_laptop) via vr0
Feb 26 10:04:36 takashi dhcpd: DHCPINFORM from 10.0.0.2 via vr0: not authoritative for subnet 10.0.0.0
Feb 26 10:04:40 takashi dhcpd: DHCPINFORM from 10.0.0.2 via vr0: not authoritative for subnet 10.0.0.0
Статьи по теме:
WIKI — DHCP
http://muff.kiev.ua
http://itadept.ru
http://www.sergeysl.ru