FreeBSD: DHCP-сервер для локальной сети на базе ISC DHCP Server. Freebsd по dhcp не получает настройки

Рано или поздно любой системный администратор осознает необходимость перевода вверенных ему компьютеров и сетевых устройств на автоматическое получение параметров протокола TCP/IP с помощью DHCP (Dynamic Host Configuration Protocol) . С учетом того, что большинство современных операционных систем имеет в своем составе включенные по умолчанию DHCP-клиенты, не нуждающиеся в дополнительной настройке, процедура внедрения DHCP сводится к установке и настройке DHCP-сервера.

Постановка задачи

Данная статья описывает простую, но достаточную для обслуживания небольших локальных сетей конфигурацию самого популярного DHCP-сервера для операционных систем семейства Linux / Unix от Internet Systems Consortium (далее — DHCP-сервера). Предложенная конфигурация обеспечивает динамическое распределение заданного диапазона IP-адресов, выделение фиксированных IP-адресов нескольким компьютерам (серверам), а также передачу клиентам всех параметров, необходимых для работы в сети TCP/IP. Для повышения безопасности DHCP-сервер запускается в chroot(8) от имени непривилегированных пользователя / группы, а для повышения удобства диагностики и мониторинга он интегрирован со штатными средствами управления логами syslogd(8) и newsyslog(8) .

Исходные данные

Имеется сервер с FreeBSD, подключенный к локальной сети с IP-адресом 192.168.0.0/24 через интерфейс bge1 с IP-адресом 192.168.0.1 . На него будет установлен DHCP-сервер. Имеется несколько десятков компьютеров и сетевых устройств, которым следует выдавать IP-адреса из диапазона 192.168.0.101 — 192.168.0.200 , а также два сервера, которым нужно выдавать фиксированные IP-адреса 192.168.0.2 и 192.168.0.3 . Кроме того, всем DHCP-клиентам необходимо сообщать имя DNS-домена company.local , IP-адреса DNS-серверов 192.168.0.2 и 192.168.0.3 , а также IP-адрес шлюза по умолчанию 192.168.0.1 . DHCP-сервер будет устанавливаться из портов, поэтому я рекомендую обновить их .

Установка и настройка DHCP-сервера

Для обеспечения работоспособности DHCP-сервера требуется поддержка устройств bpf(4) ядром FreeBSD. Стандартное ядро GENERIC поддерживает устройства bpf , а при использовании самосборного ядра придется убедиться в наличии строки device bpf в файле его конфигурации, и, если таковая отсутствует, добавить ее, пересобрать ядро и перезагрузить систему.
Для установки DHCP-сервера из портов следует выполнить команды:

Cd /usr/ports/net/isc-dhcp41-server make config install clean

В окне конфигурации нужно отметить единственную опцию [X] DHCP_PARANOIA Enable support for chroot . Обратите внимание, что при установке DHCP-сервера будут созданы пользователь dhcpd , группа dhcpd и заготовка файла конфигурации /usr/local/etc/dhcpd.conf.sample .
По умолчанию конфигурация DHCP-сервера хранится в файле /usr/local/etc/dhcpd.conf . Я предпочитаю создавать этот файл без использования вышеупомянутой заготовки, содержащей слишком много лишнего. В рассматриваемом случае файл конфигурации должен иметь такой вид:

Option domain-name company.local; option domain-name-servers 192.168.0.2, 192.168.0.3; option routers 192.168.0.1; authoritative; log-facility local7; subnet 192.168.0.0 netmask 255.255.255.0 {range 192.168.0.100 192.168.0.200;} host server2 {hardware ethernet 00:1c:c4:a5:07:ca; fixed-address 192.168.0.2;} host server3 {hardware ethernet d8:d3:85:dc:df:bc; fixed-address 192.168.0.3;}

В данном файле заданы следующие значения параметров: option domain-name... , option domain-name-servers... и option routers... — имя DNS-домена, список IP-адресов и/или DNS-имен DNS-серверов и список IP-адресов и/или DNS-имен шлюзов (учтите, что перечисленные параметры относятся ко всем обслуживаемым подсетям, но их можно переопределить в секциях subnet для индивидуальной настройки отдельных подсетей); authoritative — признак авторитетности DHCP-сервера (авторитетный DHCP-сервер может инициировать прекращение существующих договоров аренды и запускать повторную процедуру получения IP-адресов); log-facility... — раздел системного журнала, в который будут перенаправляться сообщения DHCP-сервера; subnet... — обслуживаемая подсеть с диапазоном динамически выделяемых IP-адресов range... ; host... — узлы с MAС-адресами сетевых карт hardware ethernet , которым необходимо выдавать предопределенные IP-адреса fixed-address (в случае корректно настроенного резольвинга в качестве fixed-address можно использовать не только IP-адреса узлов, но и их DNS-имена).
Более подробная информация о параметрах, которые можно задать в файле конфигурации DHCP-сервера, имеется в dhcpd.conf(5) , а список всех опций DHCP (параметров TCP/IP-сети, которые можно сообщить клиентам) — в dhcp-options(5) .
Для того, чтобы DHCP-сервер автоматически запускался при запуске операционной системы, следует добавить в файл /etc/rc.conf строки:

Dhcpd_enable="YES" dhcpd_flags="-q -4" dhcpd_conf="/usr/local/etc/dhcpd.conf" dhcpd_ifaces="bge1" dhcpd_withumask="022" dhcpd_chuser_enable="YES" dhcpd_withuser="dhcpd" dhcpd_withgroup="dhcpd" dhcpd_chroot_enable="YES" dhcpd_devfs_enable="YES" dhcpd_rootdir="/var/db/dhcpd"

Данные строки запрещают вывод диагностических сообщений на консоль и отключают протокол IPv6 , задают имя файла конфигурации, привязывают DHCP-сервер к интерфейсу bge1 (bge1 нужно заменить на имя используемого интерфейса, а при прослушивании нескольких интерфейсов придется перечислить их имена, используя пробел в качестве разделителя), устанавливают маску создаваемых файлов 022 (запрещают запись всем, кроме владельца), а также обеспечивают запуск в chroot-окружении с корневой папкой /var/db/dhcpd от имени пользователя dhcpd и группы dhcpd .
На этом настройка DHCP-сервера заканчивается. Можно запустить сервер командой /usr/local/etc/rc.d/isc-dhcpd start , а затем запросить его состояние командой /usr/local/etc/rc.d/isc-dhcpd status . Если последняя команда выдаст сообщение dhcpd is running as pid ... , все нормально, если же – dhcpd is not running , придется найти и устранить ошибки в файлах конфигурации.

Анализ состояния DHCP-сервера

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

Dhcpd_flags="-d"

и перезапустить DHCP-сервер командой /usr/local/etc/rc.d/isc-dhcpd restart .
Признаком корректного запуска DHCP-сервера может служить примерно такое сообщение:

Starting dhcpd. Internet Systems Consortium DHCP Server 4.1.2 Copyright 2004-2010 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ 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/bge1/00:1c:c4:fa:7c:73/192.168.0.0/24 Sending on BPF/bge1/00:1c:c4:fa:7c:73/192.168.0.0/24 Sending on Socket/fallback/fallback-net

Выделение динамических IP-адресов DHCP-клиентам сопровождается примерно такими сообщениями:

Dhcpd: DHCPDISCOVER from 90:21:55:bd:0b:36 via bge1 ... dhcpd: DHCPOFFER on 192.168.0.101 to 90:21:55:bd:0b:36 (android_81b37c43c8cbaef2) via bge1 ... dhcpd: DHCPREQUEST for 192.168.0.101 (192.168.0.1) from 90:21:55:bd:0b:36 (android_81b37c43c8cbaef2) via bge1 ... dhcpd: DHCPACK on 192.168.0.101 to 90:21:55:bd:0b:36 (android_81b37c43c8cbaef2) via bge1

а выделение предопределенных IP-адресов по заданным MAC-адресам сетевых карт — примерно такими:

Dhcpd: DHCPDISCOVER from 00:1c:c4:a5:07:ca via bge1 ... dhcpd: DHCPOFFER on 192.168.0.2 to 00:1c:c4:a5:07:ca via bge1 ... dhcpd: Dynamic and static leases present for 192.168.0.2. ... dhcpd: Remove host declaration server2 or remove 192.168.0.2 ... dhcpd: from the dynamic address pool for 192.168.0.0/24 ... dhcpd: DHCPREQUEST for 192.168.0.2 (192.168.0.1) from 00:1c:c4:a5:07:ca via bge1 ... dhcpd: DHCPACK on 192.168.0.2 to 00:1c:c4:a5:07:ca via bge1

Рассмотренный способ наблюдения за состоянием DHCP-сервера прост и понятен (особенно при наличии под рукой документа RFC-2131), но очень неудобен в связи с необходимостью смотреть на консоль, на которую выдается огромное количество «лишней» информации.
Гораздо удобнее обеспечить запись сообщений DHCP-сервера в отдельный лог с помощью штатного демона syslogd. При этом нужно учесть, что из-за работы в chroot-окружении DHCP-сервер не может взаимодействовать с syslogd, сконфигурированным по умолчанию, т.к. сокет последнего находится за пределами chroot-окружения первого. Для исправления данного обстоятельства необходимо заставить syslogd слушать еще один сокет, имеющий имя /var/run/log относительно корневой папки chroot-окружения DHCP-сервера. Для автоматического создания такого сокета в процессе запуска syslogd, следует добавить соответствующий ключ -l к определению переменной syslogd_flags в файле /etc/rc.conf:

Syslogd_flags="... -l /var/db/dhcpd/var/run/log"

Для того, чтобы syslogd записывал сообщения DHCP-сервера в лог /var/log/dhcpd.log , нужно добавить в файл /etc/syslog.conf строку:

Local7.* /var/log/dhcpd.log

Для вступления изменений в силу необходимо создать пустой лог командой touch /var/log/dhcpd.log , а затем перезапустить syslogd командой /etc/rc.d/syslogd restart . Начиная с этого момента, все сообщения DHCP-сервера будут записываться в лог /var/log/dhcpd.log .
Для того, чтобы с течением времени лог DHCP-сервер не разрастался до бесконечности, следует включить его ротацию с помощью штатной утилиты newsyslog. Например, для ежесуточного усечения лога /var/log/dhcpd.log с сохранением семи предыдущих копий, сжатых архиватором bzip2(1) , нужно добавить в файл /etc/newsyslog.conf строку:

/var/log/dhcpd.log 644 7 * @T00 JC

Заключение

Я надеюсь, что не забыл ничего важного, и приведенной информации хватит для корректной настройки и последующей отладки DHCP-сервера от ISC на компьютере с операционной системой FreeBSD.

от

Столкнулся на днях с непонятной ошибкой. Ставлю минимальную версию Freebsd 10.1 на hyperv. После установки указываю через bsdconfig на единственном интерфейсе hn0 получать настройки от dhcp. Все в порядке, настройки получены, занимаюсь конфигурированием сервера. Потом перезагружаюсь. Во время загрузки сервер Freebsd задумывается 30 секунд на моменте прописки дефолтного шлюза, потом продолжает загрузку. Захожу в систему и вижу, что ip адрес не получен.

Начинаю разбираться в чем дело. Проверяю /etc/rc.conf:

# cat /etc/rc.conf hostname="hyperv-freebsd" ifconfig_hn0="DHCP"

Все, больше ничего нет. Ошибиться негде. Все должно работать, но не работает. Если вручную запустить dhcp клиент:

# /sbin/dhclient -c /etc/dhclient.conf hn0

то сетевые настройки благополучно получаются.

Я решил добавить настройки dhclient в rc.conf:

Dhclient_program="/sbin/dhclient" dhclient_flags=""

Перезагружаюсь, результата нет, настройки по dhcp опять не получены. Очень странная ситуация, я, честно говоря, тут призадумался. Десятки раз настраивал freebsd, но такое вижу впервые. Делать нечего, решил заглянуть в Handbook. Иду в раздел Автоматическая настройка сети (DHCP) и читаю. Нахожу там интересный момент:

По умолчанию, конфигурирование FreeBSD по протоколу DHCP выполняется фоновым процессом, или асинхронно. Остальные стартовые скрипты продолжают работу не ожидая завершения процесса конфигурирования, тем самым ускоряя загрузку системы.

Фоновое конфигурирование не создает проблем в случае, если сервер DHCP быстро отвечает на запросы, и процесс конфигурирования происходит быстро. Однако, в некоторых случаях настройка по DHCP может длиться значительное время. При этом запуск сетевых сервисов может потерпеть неудачу, если будет произведен ранее завершения конфигурирования по DHCP. Запуск DHCP в синхронном режиме предотвращает проблему, откладывая выполнение остальных стартовых скриптов до момента завершения конфигурирования по DHCP.

Для откладывания запуска стартовых скриптов до завершения конфигурирования по DHCP (синхронный режим), укажите значение SYNCDHCP:

ifconfig_fxp0=»SYNCDHCP»

Стоит попробовать. Указываю в /etc/rc.conf:

Ifconfig_hn0="SYNCDHCP"

Перезагружаюсь и вуаля, все работает. То ли это особенность виртуальной машины на hyperv, то ли что-то еще, не знаю. Впервые с подобной ситуацией сталкиваюсь. Но решение найдено. Люблю я Freebsd за подробный handbook, но последнее время работаю с фрюшкой все реже и реже в силу различных причин, главная из которых отсутствие нужных дистрибутивов софта под данную систему. Производители программ все реже и реже включают поддержку Freebsd, а жаль.

Помогла статья? Есть возможность автора

Дополнительные материалы по Freebsd

Онлайн курс "Администратор Linux"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по.
Рекомендую полезные материалы по :
  • Установка
  • Настройка
  • Обновление
  • Прокси сервер
  • Веб сервер NGINX
  • Веб сервер Apache

Описание на одиночный диск, либо на софтовый raid1, сделанный средствами zfs, которые поддерживает стандартный установщик.

DHCP (Dynamic Host Configuration Protocol - протокол динамической конфигурации узла) - это сетевой протокол, позволяющий компьютерам автоматически получать IP- адрес и другие параметры, необходимые для работы в сети TCP/IP. Данный протокол работает по модели «клиент-сервер». Для автоматической конфигурации компьютер-клиент на этапе конфигурации сетевого устройства обращается к серверу DHCP, и получает от него нужные параметры. Сетевой администратор может задать диапазон адресов, распределяемых сервером среди компьютеров. Это позволяет избежать ручной настройки компьютеров сети и уменьшает количество ошибок.

Протокол DHCP является клиент-серверным, то есть в его работе участвуют клиент DHCP и сервер DHCP. Передача данных производится при помощи протокола UDP , при этом сервер принимает сообщения от клиентов на порт 67 и отправляет сообщения клиентам на порт 68.

    Прохождение DHCP запросов через iptables . Правила для Правила iptables : $IPT -A INPUT -i $LAN195 -p udp -m multiport --port 67:68 -j ACCEPT $IPT -A INPUT -p udp -m multiport --port 67:68 -j DROP

Возможности сервера DHCP

Но самый главный плюс DHCP вовсе не в том, что с его помощью можно автоматически раздавать IP-адреса. На этом функционал протокола не заканчивается. Основная его ценность в другом: с его помощью вы можете назначать хостам и другие, не менее важные настройки. Например:

    Шлюзы по умолчанию. Если в вашей сети имеется несколько Интернет-каналов (для обеспечения бесперебойной работы), вы можете назначить хостам несколько шлюзов и порядок их предпочтения. В случае выхода одного из каналов из строя, переключение на резервный канал произойдет автоматически, без вашего вмешательства. Это же дает возможность организовать простейшую балансировку нагрузки между каналами, назначив по DHCP одной группе хостов один маршрутизатор в качестве шлюза, а другой группе – второй.

    Статические маршруты. Если в вашей сети есть несколько подсетей, соединенных маршрутизаторами, то при помощи DHCP можно автоматически оповещать хосты о наличии маршрутов в другие подсети. Причем это, по желанию, можно сделать только для избранных – например, используя привязку к MAC. Эта же опция полезна при организации vpn -доступа к корпоративной сети – VPN-клиентам можно сообщить маршруты лишь к нужным им подсетям, оставив другие подсети недоступными для подключающихся по VPN пользователей.

    Смещение времени. Если ваши пользователи часто бывают в различных временных поясах (например, мотаются из Питера во Владивосток и обратно), то можно заставить системные часы их ноутбука адаптироваться к вашему местному времени при помощи DHCP.

    Сервер синхронизации времени. Поскольку часы компьютеров славятся своей неточностью, их желательно синхронизировать с какими-то эталонными часами. Для этого используется служба NTP. Информацию о сервере Запуск сервера NTP можно раздавать хостам при помощи DHCP.

    Дополнительная информация в man

    > man dhcp-options # описаны выражения допустимые в конфигурационном файле > man dhcp-eval > uname -a FreeBSD ns.com.ua 7.2-RELEASE-p2 FreeBSD 7.2-RELEASE-p2 #0: Wed Jun 24 00:57:44 UTC 2009 [email protected]:/usr/obj/usr/src/sys/GENERIC i386 > cd /usr/ports/net/isc-dhcp31-server > make install clean > cp /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf > ee dhcpd.conf # dhcpd.conf # # Sample configuration file for ISC dhcpd # # Общие опции для всех поддерживаемых сетей... option domain-name "example.org"; # домен по умолчанию option domain-name-servers 4.2.2.2, 208.67.222.222; #сервера DNS default-lease-time 1200; # время аренды (по умолчанию 600) max-lease-time 7200; # максимальное время аренды # Use this to enble / disable dynamic dns updates globally. #ddns-update-style none; # Является ли сервер авторитативным - ответственным DHCP сервером. authoritative; # ad-hoc DNS update scheme - set to "none" to disable dynamic DNS updates. # Способ динамического обновления DNS. Выключаем если используется статический DNS - в большинстве # сетей так и есть. Иначе нужно конфигурировать сервер DNS (например bind) ddns-update-style none;

    Для работы параметра log-facility нужно настроить syslog.conf и ротацию лога в newsyslog.conf .

    # Источник сообщений для записи логов через syslogd log-facility local7; # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. subnet 10.152.187.0 netmask 255.255.255.0 { } # This is a very basic subnet declaration. subnet 10.26.95.0 netmask 255.255.255.0 { # подсеть из которой будут выдаваться адреса range 10.26.95.1 10.26.95.240; # интервалы ip адресов на выдачу клиентам option domain-name-servers 10.26.95.253; option routers 10.26.95.253; # gateway (шлюз по умолчанию) для клиента #option netbios-name-servers 192.168.1.51; # адрес сервера WINS (если есть) #option domain-name-servers 192.168.1.51; # адрес DNS сервера AD #option domain-name "office.mydomen.ru"; # полное имя домена AD } # Fixed IP addresses can also be specified for hosts. These addresses # should not also be listed as being available for dynamic assignment. # Hosts for which fixed IP addresses have been specified can boot using # BOOTP or DHCP. Hosts for which no fixed address is specified can only # be booted with DHCP, unless there is an address range on the subnet # to which a BOOTP client is connected which has the dynamic-bootp flag # set. #привязка постоянных IP к MAC адресу сетевой карты хоста host darkfire { hardware ethernet 00:15:f2:4b:ad:5c; # MAC адрес сетевой карты хоста fixed-address 10.26.95.251;# ip адрес, который нужно присвоить этому хосту } host user1 { hardware ethernet 00:00:1c:d3:9e:40; fixed-address 10.26.95.10; } host user2 { hardware ethernet 00:14:2a:1c:16:31; fixed-address 10.26.95.11; }

    Прописываем в rc.conf строки

    Dhcpd_enable="YES" dhcpd_flags="-q" # отключаем вывод копирайта и прочего при старте dhcpd dhcpd_ifaces="rl0 vr0" # сетевой интерфейс на котором будет работать dhcpd. Несколько интерфейсов указываются через пробел.

    Запускаем и пользуемся

    > /usr/local/etc/rc.d/isc-dhcpd start

    Файлы

    • /usr/local/sbin/dhcpd

    dhcpd скомпонован статически и расположен в каталоге /usr/local/sbin. Страницы справочной системы dhcpd(8), устанавливаемые портом, содержат более полную информацию о dhcpd.

      /usr/local/etc/dhcpd.conf

    dhcpd требует наличия конфигурационного файла, /usr/local/etc/dhcpd.conf, до того, как он будет запущен и начнёт предоставлять сервис клиентам. Необходимо, чтобы этот файл содержал все данные, которая будет выдаваться обслуживаемым клиентам, а также информацию о работе сервера. Этот конфигурационный файл описывается на страницах справочной системы dhcpd.conf(5), которые устанавливаются портом.

      /var/db/dhcpd.leases или /var/db/dhcpd/dhcpd.leases

    Сервер DHCP ведёт базу данных выданной информации в этом файле, который записывается в виде протокола. Страницы справочной системы dhcpd.leases(5), устанавливаемые портом, дают гораздо более подробное описание. В dhcpd.leases заносится информация только динамически выданных IP адресах, если IP статистический (привязан к МАС) - такая информация в dhcpd.leases заноситься не будет. Полный сбор статистики можно осуществлять через dhcpd-snmp:

      /usr/local/sbin/dhcrelay

    dhcrelay используется в сложных ситуациях, когда сервер DHCP пересылает запросы от клиента другому серверу DHCP в отдельной сети. Если вам нужна такая функциональность, то установите порт net/isc-dhcp3-server. На страницах справочной системы dhcrelay(8), которые устанавливаются портом, даётся более полное описание.

    ALLOW and DENY

    Параметры allow и deny используются для контроля над поведением демона dhcp в отношении различных видов запросов.

      Ключевое слово unknown-clients allow unknown-clients; deny unknown-clients;

    Параметр unknown-clients используется что бы сообщить серверу как поступать с неизвестными клиентами. По умолчанию выдача адресов неизвестным клиентам разрешена.

      Ключевое слово bootp allow bootp; deny bootp;

    Параметр bootp сообщает серверу dhcp обрабатывать или нет bootp-запросы. По умолчанию bootp-запросы разрешены.

      Ключевое слово booting allow booting; deny booting;

    Параметр booting сообщает серверу обрабатывать ли запрос конкретного клиента. Имеет смысл только если присутствует в описании host и действует только на соответствующий хост. По умолчанию разрешено, в противном случае хост не сможет получать свой адрес и другие параметры.

    Настройка DHCP -клиента встроенного в OС FreeBSD

    Ручной запуск (в примере ниже - вывод команды говорит о неудачном запуске DHCP -клиента):

    # dhclient rl0 DHCPDISCOVER on rl0 to 255.255.255.255 port 67 interval 7 DHCPDISCOVER on rl0 to 255.255.255.255 port 67 interval 11 DHCPDISCOVER on rl0 to 255.255.255.255 port 67 interval 12 DHCPDISCOVER on rl0 to 255.255.255.255 port 67 interval 9 DHCPDISCOVER on rl0 to 255.255.255.255 port 67 interval 10 DHCPDISCOVER on rl0 to 255.255.255.255 port 67 interval 12 No DHCPOFFERS received. No working leases in persistent database - sleeping.

    Настраиваем dhclient.conf

    По умолчанию dhclient.conf в FreeBSD пустой (в нем ссылка только на man 5 dhclient.conf ). В обычном случае и при таком конфиге все работает. Но если возникают стоит изменить настройки по умолчанию.

    Читаем man, копируем приведенный пример в наш dhclient.conf

    # cp /etc/dhclient.conf /etc/dhclient.conf.orig # man 5 dhclient.conf ... DHCLIENT.CONF(5) FreeBSD File Formats Manual DHCLIENT.CONF(5) NAME dhclient.conf -- DHCP client configuration file DESCRIPTION The dhclient.conf file contains configuration information for dhclient(8), the Internet Software Consortium DHCP Client. ... EXAMPLES The following configuration file is used on a laptop which has an IP alias of 192.5.5.213, and has one interface, ep0 (a 3Com 3C589C). Boot- ing intervals have been shortened somewhat from the default, because the client is known to spend most of its time on networks with little DHCP activity. The laptop does roam to multiple networks. timeout 60; retry 60; reboot 10; select-timeout 5; initial-interval 2; reject 192.33.137.209; interface "ep0" { send host-name "andare.fugue.com"; send dhcp-client-identifier 1:0:a0:24:ab:fb:9c; send dhcp-lease-time 3600; supersede domain-name "fugue.com rc.vix.com home.vix.com"; prepend domain-name-servers 127.0.0.1; request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, host-name; require subnet-mask, domain-name-servers; script "/etc/dhclient-script"; media "media 10baseT/UTP", "media 10base2/BNC"; } alias { interface "ep0"; fixed-address 192.5.5.213; option subnet-mask 255.255.255.255; } This is a very complicated dhclient.conf file - in general, yours should be much simpler. In many cases, it is sufficient to just create an empty dhclient.conf file - the defaults are usually fine. SEE ALSO dhclient.leases(5), dhcpd.conf(5), dhcp-options(5), dhclient(8), dhcpd(8) ...

    Окружение: Debian GNU/Linux wheezy/sid. isc-dhcp-server Версия: 4.1.1-P1-17

    # aptitude install isc-dhcp-server

    Этот сервер может работать с несколькими сетевыми интерфейсами одновременно. Укажем явно сетевой интерфейс на котором будет слушать DHCP сервер, в этом случае для eth0:0, который является алиасом на eth0.

    # nano /etc/default/isc-dhcp-server ... # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACES="eth0:0"

    Syslog в Debian для логов dhcpd

    По умолчанию демон Настройка DHCP сервера Linux, FreeBSD пишет логи в /var/log/messages и на /dev/console. Нужно вынести логи в отдельный файл и заблокировать вывод логов в messages.

    # nano /etc/dhcp/dhcpd.conf log-facility local7; # touch /var/log/dhcpd.log

    В конец файла rsyslog.conf добавим строку

    # nano /etc/rsyslog.conf ... !dhcpd *.* -/var/log/dhcpd.log

    Для блокировки в messages и на console добавим local7.none

    ... *.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none;local7.none -/var/log/messages ... daemon.*;mail.*;\ news.err;\ *.=debug;*.=info;\ *.=notice;*.=warn;local7.none |/dev/xconsole

    Параметр authoritative DHCP

    Параметр authoritative DHCP-сервера позволяет объявить сервер авторитативным (ответственным) в обслуживаемой сети. Отличие авторитативного сервера от «обычного» заключается в том, что последний игнорирует любые запросы адресов, которые не описаны в его конфигурации, в то время как авторитативный сервер в ответ на такие запросы отсылает DHCPNAK. Благодаря такому поведению клиент, перемещённый из другой подсети, сможет бы стрее получить новый адрес (в ответ на DHCPREQUEST с адресом из прежней подсети он сразу получит DHCPNAK и приступит к получению нового адреса; в противном случае DHCPDISCOVER будет отправлен лишь по истечении тайм-аута на ожидание ответа). В то же время «случайные» DHCP-серверы (например, их тыкают сейчас везде где угодно) с меньшей вероятностью смогут помешать работе сети, поскольку, будучи неавторитативными, будут просто игнорировать «чужие» запросы DHCPREQUEST.