Dhcp+mysql сервер на python

Подготовка к установке FreeBSD 11.0

Сначала необходимо подготовить загрузочный носитель. Это может быть флэшка, CD-диск или DVD-диск. Также можно установить операционную систему FreeBSD через сетевую установку, но для этого придется сначала создать сервер для загрузки по сети.

Скачиваем необходимый дистрибутив с официального сайта проекта Анонс релиза FreeBSD 11.0.

Сервер для загрузки дистрибутива ОС. Вам необходимо скачать нужный файл. Учтите, что если у вас сервер не поддерживает 64х битную архитектуру, то скачиваете файл содержащий i386  в названии, например FreeBSD-11.0-RELEASE-i386-bootonly.iso. Если ваш сервер более менее современный, то рекомендуется устанавливать дистрибутив содержащий в названии amd64 (слово amd не говорит, что это процессор AMD, т.е. устанавливается и на процессоры INTEL), также есть дистрибутивы для других архитектур, но они используются очень редко. Если вы ничего не поняли про архитектуры и процессоры, то выбирайте выделенный жирным шрифтом файл, скорее всего он вам и нужен :-)

Для установки на флэшку скачиваем файл: FreeBSD-11.0-RELEASE-amd64-memstick.img

Для установки с CD-диска: FreeBSD-11.0-RELEASE-amd64-disc1.iso

Для установки с DVD-диска: FreeBSD-11.0-RELEASE-amd64-dvd1.iso 

Если вы используете Windows, то записать можно щелкнув на скачанном файле правой кнопкой мышки и вызвав контекстное меню выбрать в нем пункт меню «Записать образ диска».

Для записи образа на флэшку, придется скачать специальную программу и записать с помощью нее этот образ на диск. Это необходимо, чтобы флэшка стала загрузочной. Наиболее популярная программа Win32 Disk Imager: бесплатная, без лишних наворотов и не требует установки. Запускаем ее выбираем скачанный образ, выбираем имя диска с вставленной флэшкой и нажимаем Write. Все готово!

Кстати после того, как вы установили FreeBSD с флэшки, вставив ее обратно в компьютер с Windows, вы не сможете ни отформатировать ее средствами Windows, ни нормально ее использовать. Для того, чтобы ее переоформатировать придется использовать специальную программу, например RUFUS. Ничего страшного в этом нет, просто имейте ввиду.

На моем сервере не пошла загрузка с флэшки, хотя версия FreeBSD 9.3 загружается. Пришлось записывать DVD-диск и подсоединять внешний DVD-привод, т.к. в сервере не было DVD-ROMa. Естественно в BIOS необходимо выбрать первым устройством то устройство, с которого вы будете производить установку системы. Вход в BIOS у всех компьютеров по разному, на моем сервере через клавишу F2 (у вас может быть F1, F10, Del)

Если загрузка с диска или флэшки благополучно пошла, то после того как пробегут разные буковки, вы увидите следующее меню.

Конфигурация DHCP-relay (передача полномочий другому DHCP-серверу)

Если ваш DHCP-сервер не имеет доступа к какой-то конкретной подсети, это не значит, что он не может предоставлять там свои услуги. Для выполнения этой работы агент DHCP-relay должен быть настроен в удаленной подсети, которая пересылает все запросы на указанный DHCP-сервер и удаленную подсеть. Сначала установите DHCP-relay:

Затем создайте конфигурационный файл /etc/default/isc-dhcp-relay с такими двумя строками:

Приведенный выше конфигурационный файл даст указание агенту DHCP-relay agent прослушивать на интерфейсе eth0 запросы DHCP-клиента и пересылать их на DHCP-сервер по IP-адресу 192.168.5.5.

Настройка ISC DHCP Server

Редактируем основной файл конфигурации:

mcedit /usr/local/etc/dhcpd.conf

В конфигурации сервера необходимо задать параметры, выделенные жирным шрифтом.

# DNS серверы
option domain-name-servers 192.168.100.1;

# Время в секундах, по истечению которого клиент должен запросить продление аренды
default-lease-time 1200;

# Время аренды IP адреса в секундах
# Клиент должен освободить IP-адрес, если в течение заданного времени аренду продлить не удалось
# Если аренда не продлена, сервер может выдать этот адрес другому клиенту
max-lease-time 72000;

# Выдавать клиенту новый адрес, если запрошенный клиентом адрес не входит в пул сервера
authoritative;

# Источник, который будет указан при отправке сообщений в Syslog
log-facility local7;

# Декларация подсети
subnet 192.168.100.0 netmask 255.255.255.0 {
  # Пул динамических адресов
  range 192.168.110.5 192.168.100.200;
  # Шлюз
  option routers 192.168.100.1;
}

Установка сервера DHCP на Debian

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

Определенный интерфейс для работы

Если в системе присутствует несколько сетевых адаптеров, а сервер DHCP должен работать только для определенных, открываем на редактирование следующий файл:

vi /etc/sysconfig/dhcpd

И добавляем в него следующее:

DHCPDARGS=enp0s8

* в данном примере сервер будет работать только для интерфейса enp0s8.

Перед запуском убедитесь, что сетевой адаптер enp0s8 настроен для работы в создаваемой сети. Для этого создайте файл nano /etc/sysconfig/network-scripts/ifcfg-enp0s8 со следующим содержимым.

TYPE="Ethernet"
BOOTPROTO="none"
DNS1="192.168.0.1"
IPADDR0="192.168.0.1"
PREFIX0=24
GATEWAY0=192.168.0.1
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s8"
DEVICE="enp0s8"
ONBOOT="yes"

Разрешаем автозапуск сервиса:

systemctl enable dhcpd

и запускаем его:

systemctl start dhcpd

ОБЪЯВЛЕНИЯ

Секция-объявление

shared-network

 shared-network имя {
   [ параметры ]
   [ объявления ]
 }

Секция shared-network сообщает серверу DHCP что несколько IP-подсетей
используют один физический сегмент. Каждая подсеть в такой сети объявляется
внутри секции shared-network. Параметры указанные для shared-network
используются при загрузке клиента если значения указанные в секцияхsubnet или host не переопределяют их. Если для какой-либо подсети
указан диапазон динамически раздаваемых адресов, эти адреса собираются в
общий пул и назначаются клиентам по мере необходимости. Нет способа различать
к какой IP-подсети принадлежит клиент.

Параметр Имя
– должнен быть именем этой “общей” сети. Это имя используется в
информационных и отладочных сообщениях и желательно что бы оно достаточно
полно описывало сеть. Имя может имет синтаксис обычного доменного имени( однако
никогда не используется в качестве такового), или это может быть произвольное
имя, заключенное в кавычки.

Секция-объявление

subnet

 subnet subnet-number netmask netmask {
   [ параметры ]
   [ объявления ]
 }

Секция subnet используется для предоставления серверу DHCP дополнительной информации –
принадлежит ли данный IP адрес указанной подсети. Еще эта секция используется для предоставления
клиентам специфичных для подсети параметров и для указания диапазонов динамически распределяемых
адресов.

Параметрsubnet-number
должен быть IP адресом или доменным именем которое резолвится
в номер подсети которую он описывает.

Параметр netmask
должен быть IP адресом или доменным именем которое резолвится в значение соответствующее
маске описываемой подсети.

Параметры subnet-number иnetmask однозначно определяют подсеть и принадлежность
IP адреса к этой подсети.

Затрудняюсь перевести следующий абзац

Although a netmask must be given with every subnet declaration, it is
recommended that if there is any variance in subnet masks at a site, a
subnet-mask option statement be used in each subnet declaration to set
the desired subnet mask, since any subnet-mask option statement will
override the subnet mask declared in the subnet statement.

Секция-объявлениеrange

 range [ dynamic-bootp ] начало_диапазона [ конец_диапазона];

Для любой подсети адреса которой присваиваются динамически, должен быть указан хотя бы один диапазон с
помощью секции range. В параметрах указывается начальный и конечный адреса диапазона. Все IP
адреса в диапазоне должны принадлежать той подсети к описанию которой относится секция range.
Параметр dynamic-bootp указывается в случае если предполагается назначать адреса из диапазона
клиентам по протоколу BOOTP. Если указан только один адрес, то параметр конец_диапазона может быть
опущен.

Секция-объявлениеhost

 host имя_хоста {
   [ параметры ]
   [ объявления ]
 }

Необходима хотя бы
одна секция host
для каждого BOOTP клиента, обслуживаемого сервером.
Так же host
может быть указана для DHCP клиентов, хотя это и не обязательно, если только
не требуется раздача адресов только определенным клиентам.

Если требуется обеспечить выдачу фиксированных адресов и конфигурацию клиентов по протоколам DHCP
или BOOTP
в более чем одной подсети, то можно указать несколько адресов с помощью параметраfixed-address
или указать несколько секций host

Если клиентские параметры меняются в зависимости от сети к которой подключен клиент, то необходимо
использовать множественные записиhost
.

имя_хоста
– имя идентифицирующее хост. Если в описании хоста опция hostname не указана, то
используется значение имя_хоста.

Объявления Host сопоставляются с реальными DHCP или BOOTP клиентами путем сравнения опцииdhcp-client-identifier указанной в секции host со значением предоставленным клиентом, или
если клиент не предоставляет dhcp-client-identifier, то путем сравнения опции hardware
и
аппаратного (mac) адреса клиента. Клиенты BOOTP нормально не предоставляют dhcp-client-identifier,
так что при работе по протоколу BOOTP необходимо использовать mac-адреса.

Секция-объявлениеgroup

 group {
   [ параметры ]
   [ объявления ]
 }

Секция group используется для присвоения одного или нескольких параметров группе
объявлений. Параметры могут быть одновременно присвоены группе секций hosts, shared networks,
subnets, или даже groups.

Настройка службы DHCP

После установки службы DHCP и ее начала необходимо создать область. Область — это диапазон допустимых IP-адресов, доступных для аренды клиентских компьютеров DHCP в сети. Корпорация Майкрософт рекомендует, чтобы каждый сервер DHCP в вашей среде был по крайней мере одним областью, которая не пересекалась ни с одним другим сервером DHCP в вашей среде. В Windows Server 2003 серверы DHCP в домене на основе Active Directory должны быть разрешены, чтобы предотвратить выход в интернет неугдаваемого сервера DHCP. Любой Windows Сервер DHCP Server 2003, который определяет себя как несанкционированный, не будет управлять клиентами.

Создание новой области

  1. Нажмите кнопку Начните, указать на программы, указать на административные средства, а затем нажмите кнопку DHCP.
  2. В дереве консоли щелкните правой кнопкой мыши сервер DHCP, на котором необходимо создать новую область DHCP, а затем нажмите кнопку New Scope.
  3. В Мастере новых областей нажмите кнопку Далее, а затем введите имя и описание области. Имя может быть любым, кто вам нужен, но оно должно быть достаточно описательным, чтобы можно было определить цель области в сети (например, можно использовать имя, например «Административные клиентские адреса»). Нажмите кнопку «Далее».
  4. Введите диапазон адресов, которые можно арендовать в рамках этой области. Например, используйте ряд IP-адресов от начального IP-адреса 192.168.100.1 до конечного адреса 192.168.100.100. Поскольку эти адреса даются клиентам, все они должны быть допустимы для вашей сети и не используются в настоящее время. Если вы хотите использовать другую подсетевую маску, введите новую подсетевую маску. Нажмите кнопку «Далее».
  5. Введите любые IP-адреса, которые необходимо исключить из введенного диапазона. Эти адреса включают любой из указанных в шаге 4 диапазона адресов, которые, возможно, уже были статически назначены различным компьютерам в организации. Как правило, контроллеры домена, веб-серверы, серверы DHCP, серверы системы доменных имен (DNS) и другие серверы имеют статически заданные IP-адреса. Нажмите кнопку «Далее».
  6. Введите количество дней, часов и минут до истечения срока аренды IP-адресов из этой области. Он определяет, как долго клиент может держать арендованный адрес без его продления. Нажмите кнопку Далее, а затем нажмите кнопку Да, я хочу настроить эти параметры сейчас, чтобы расширить мастер включить параметры для наиболее распространенных параметров DHCP. Нажмите кнопку «Далее».
  7. Введите IP-адрес шлюза по умолчанию, который должен использоваться клиентами, которые получают IP-адрес из этой области. Щелкните Добавить, чтобы добавить адрес шлюза по умолчанию в списке, а затем нажмите кнопку Далее.
  8. Если вы используете DNS-серверы в сети, введите доменное имя организации в поле Родительский домен. Введите имя DNS-сервера и нажмите кнопку Разрешить, чтобы убедиться, что сервер DHCP может связаться с DNS-сервером и определить его адрес. Щелкните Добавить, чтобы включить этот сервер в список DNS-серверов, которые назначены клиентам DHCP. Нажмите кнопку Далее и выполните те же действия. Если вы используете сервер службы Windows (WINS), добавив его имя и IP-адрес, нажмите кнопку Далее.
  9. Нажмите кнопку Да, я хочу активировать эту область сейчас, чтобы активировать область и разрешить клиентам получать аренды из нее, а затем нажмите кнопку Далее.
  10. Нажмите кнопку «Готово».
  11. В дереве консоли щелкните имя сервера и нажмите кнопку Авторизуя в меню Действия.

Запуск

Редактируем rc.conf:

ee /etc/rc.conf

Включаем запуск ISC DHCP Server, и задаем сетевые интерфейсы, обслуживаемые нашим сервером:

dhcpd_enable="YES"
dhcpd_ifaces="fxp0"

Запускаем dhcpd:

service isc-dhcpd start

В случае успешного запуска видим следующий текст:

Internet Systems Consortium DHCP Server 4.1-ESV-R3
Copyright 2004-2011 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/fxp0/08:00:27:a9:a8:7d/192.168.0.0/24
Sending on   BPF/fxp0/08:00:27:a9:a8:7d/192.168.0.0/24
Sending on   Socket/fallback/fallback-net

Если ошибок при запуске не возникло, проверяем, раздаются ли IP-адреса.

Для принудительного обновления IP-адреса в Windows, в командной строке используем команды:

ipconfig /release
ipconfig /renew

Проверяем лог-файл:

cat /var/log/dhcpd.log

Описание конфигурации для отдельных хостов на DHCP-сервере

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

default-lease-time 600;
max-lease-time 7200;

subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.3 10.1.1.254;
option domain-name-servers 10.1.1.1, 8.8.8.8;
option routers 10.1.1.1;
}

subnet 192.168.0.0 netmask 255.255.0.0 {
}

host printer {
hardware ethernet 00:16:d3:b7:8f:86;
fixed-address 10.1.1.100;
}

host web-server {
hardware ethernet 00:17:a4:c2:44:22;
fixed-address 10.1.1.200;
}

Приведенный выше файл конфигурации DHCP будет постоянно присваивать IP-адрес 10.1.1.100 хосту printer с MAC-адресом 00:16:d3:b7:8f:86 и IP-адрес 10.1.1.200 хосту web-server с MAC-адресом 00:17:a4:c2:44:22.

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

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

  • Шлюзы по умолчанию. Если в вашей сети имеется несколько Интернет-каналов (для обеспечения бесперебойной работы), вы можете назначить хостам несколько шлюзов и порядок их предпочтения. В случае выхода одного из каналов из строя, переключение на резервный канал произойдет автоматически, без вашего вмешательства. Это же дает возможность организовать простейшую балансировку нагрузки между каналами, назначив по DHCP одной группе хостов один маршрутизатор в качестве шлюза, а другой группе – второй.
  • Статические маршруты. Если в вашей сети есть несколько подсетей, соединенных маршрутизаторами, то при помощи DHCP можно автоматически оповещать хосты о наличии маршрутов в другие подсети. Причем это, по желанию, можно сделать только для избранных – например, используя привязку к MAC. Эта же опция полезна при организации Что это такое VPN-доступа к корпоративной сети – VPN-клиентам можно сообщить маршруты лишь к нужным им подсетям, оставив другие подсети недоступными для подключающихся по VPN пользователей.
  • Смещение времени. Если ваши пользователи часто бывают в различных временных поясах (например, мотаются из Питера во Владивосток и обратно), то можно заставить системные часы их ноутбука адаптироваться к вашему местному времени при помощи DHCP.
  • Сервер синхронизации времени. Поскольку часы компьютеров славятся своей неточностью, их желательно синхронизировать с какими-то эталонными часами. Для этого используется служба NTP. Информацию о сервере Настройки времени systemd-timesyncd и запуск сервера NTP можно раздавать хостам при помощи DHCP.
  • Что такое DNS-серверы. С помощью этой опции вы можете назначать вашим клиентам DNS-серверы как внутри сети, так и за ее пределами. Причем, в отличие ручной настройки интерфейса, вы можете передать хосту обширный список доступных DNS-серверов.
  • Настройки сервера загрузки – настройки протокола TFTP/BOOTP, необходимые для бездисковой загрузки хостов. Эта возможность востребована при наличии в сети бездисковых терминалов, загружающихся по сети, и при организации дистанционной автоматической установки ОС на компьютеры пользователей (об этом поговорим отдельно)
  • Списки доступных SMTP — простой протокол передачи почты и POP серверов.
  • Настройки WINS и Netbios
  • Размер MTU, время жизни кэша Работа с ARP протоколом: очистка таблицы, размер TTL — Time to live и др.

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

Когда клиент загружается, начальные параметры определяются в соответствующем клиенту объявлении host, затем проверяется секция group (если она существует) которая содержит в себе host, далее проверяется секция subnet соответствующая подсети в которой находится клиент, после этого проверяется указаны ли какие-нибудь параметры в секции shared-network(если есть), содержащей нашу подсеть, ну и наконец проверяются глобальные параметры, которые могут быть указаны перед всеми объявлениями.

Когда dhcpd ищет секцию host для соответствующего клиента, он следует следующим правилам: сперва ищется объявление host где указан параметр fixed-address и секция subnet или shared network совпадает с подсетью в которой находится клиент. Если нет соответствующих записей, dhcpd ищет объявление host без параметра fixed-address. Если подходящих записей не найдено, то dhcpd считает что нет записей для этого клиента, даже если они есть для этого клиента в другой подсети.

Конфигурирование dhcpd(8)

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

Каждый клиент DHCP регистрирует свое имя хоста на сервере, а сам сервер должен знать имя локального домена. (В принципе есть возможность организовать назначение клиентам и имен хостов.) Имя домена устанавливается с помощью параметра (1). Вы можете присвоить своим клиентам DHCP любое имя домена, которое не обязательно должно совпадать с именем домена сервера. Можно указать несколько имен доменов, разделив их пробелами, но не все операционные системы способны распознавать дополнительные домены.

Каждому клиенту сетей TCP/IP необходим один или два сервера DNS. Укажите их с помощью параметра (2). Серверы имен в списке следует разделять запятыми.

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

Если ваш сервер DHCP единственный в сети, известите dhcpd(8), что его слово в настройке клиента является решающим, добавив ключевое слово (5).

DHCP может интегрироваться с динамическим DNS, который не рассматривается в этой книге. Наиболее типичный пример использования динамического DNS — служба Microsoft Active Directory. Если вы работаете со службой AD, то скорее всего используете сервер Microsoft DHCP Server, а не ISC dhcpd. При отсутствии AD вам едва ли потребуется динамический DNS. Укажите серверу, что ему не нужно обновлять глобальный DNS, указав параметр (6).

Наконец, можно указать, куда демон dhcpd(8) должен отправлять сообщения для протокола (7). Дополнительную информации о протоколировании вы найдете в главе 19.

Для каждой подсети в вашей сети должно присутствовать определение , где указывается идентификационная информация для клиентов DHCP в этой подсети. Пример определения подсети для единой сети офиса:

Объявление каждой подсети начинается определением адреса сети и сетевой маски (1). В данном случае определяется IP-сеть 192.168.1.0 с сетевой маской 255.255.255.0, или диапазон IP-адресов от 192.168.1.1 по 192.168.1.255. Информация в скобках, следующих за объявлением подсети, относится ко всем хостам в этой конкретной подсети.

Ключевое слово (2) определяет диапазон IP-адресов, которые демон dhcpd(8) может присваивать клиентам. В этом примере клиентам доступен 51 IP-адрес. Если к серверу одновременно попробуют обратиться 52 клиента DHCP, последний из них не получит IP-адрес.

Маршрут по умолчанию определяется с помощью параметра (3). Примечательно, что вам не нужно определять дополнительные маршруты с помощью dhcpd(8), — маршрутизатор локальной сети должен обеспечивать доступность адресатов сам. Если в локальной сети присутствует несколько шлюзов, ваш шлюз сам будет обмениваться с клиентами пакетами ICMP для перенаправления их на нужный маршрут. (Ничего страшного, если вам неясно, о чем речь. Когда понадобится, вы быстро начнете понимать то, о чем я говорю, а если такая необходимость никогда не возникнет, значит вы впустую потратили несколько секунд на чтение этих слов.)

Вы можете проявить снисходительность к клиентам Microsoft и определить сервер WINS (4). Обычно в каждом сегменте сети присутствует свой сервер WINS. Если у вас только одна сеть или только один комплект серверов WINS, можно разместить параметр за пределами определения подсети.

Если у вас несколько подсетей, создайте описание для каждой из них.

Вот и все! Отредактируйте dhcpd.conf, запустите dhcpd(8) и загляните в файл протокола, чтобы увидеть, как клиенты будут получать адреса.

19.10.3 Как это работает

Когда на клиентской машине выполняется программа dhclient,
являющаяся клиентом DHCP, она начинает широковещательную рассылку запросов на получение
настроечной информации. По умолчанию эти запросы делаются на 68 порт UDP. Сервер отвечает
на UDP 67, выдавая клиенту адрес IP и другую необходимую информацию, такую, как сетевую
маску, маршрутизатор и серверы DNS. Вся эта информация даётся в форме «аренды» DHCP и
верна только определенное время (что настраивается администратором сервера DHCP). При
таком подходе устаревшие адреса IP тех клиентов, которые больше не подключены к сети,
могут автоматически использоваться повторно.

Настройка

Присвойте статический адрес IPv4 тому сетевому интерфейсу, для которого вы хотите запустить DHCP-сервер (в примерах будет использоваться )

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

# ip link set up dev eth0
# ip addr add 139.96.30.100/24 dev eth0 # произвольный адрес для примера

Автоматическое назначение статического IP при загрузке системы описано в статье .

Стандартный файл настроек, , содержит много незакомментированных примеров, поэтому следует переместить его в другое место, например

# cp /etc/dhcpd.conf /etc/dhcpd.conf.example

и создать на его месте новый.

Минимальная конфигурация может выглядеть следующим образом:

/etc/dhcpd.conf
option domain-name-servers 8.8.8.8, 8.8.8.4;
option subnet-mask 255.255.255.0;
option routers 139.96.30.100;
subnet 139.96.30.0 netmask 255.255.255.0 {
  range 139.96.30.150 139.96.30.250;
}

Если необходимо выдать фиксированный IP-адрес конкретному устройству, можно также указать настройки для отдельного хоста:

/etc/dhcpd.conf
option domain-name-servers 8.8.8.8, 8.8.4.4;
option subnet-mask 255.255.255.0;
option routers 139.96.30.100;
subnet 139.96.30.0 netmask 255.255.255.0 {
  range 139.96.30.150 139.96.30.250;
}
host macbookpro{
  hardware ethernet 70:56:81:22:33:44;
  fixed-address 139.96.30.199;
}

Опция содержит адреса DNS-серверов, которые передаются клиентам. В данном примере используются публичные DNS-сервера Google. Если в вашей подсети уже есть DNS-серверы (например, предоставленные провайдером), следует указать их. Если на компьютере уже настроен собственный DNS-сервер, то укажите его адрес ( в нашем примере).

Опции и содержат маску подсети и список маршрутизаторов в этой подсети, соответственно. В большинстве случаев для небольших сетей подойдет маска , а в качестве маршрутизатора используется та же машина, на которой настроен DHCP-сервер.

Блоки содержат настройки для отдельных подсетей, которые сопоставляются сетевым интерфейсам, на которых запущен dhcpd. В примере определена одна подсеть за интерфейсом , для которой задан диапазон IP-адресов. Подключаемым клиентам будут присваиваться адреса из этого диапазона.

Запуск на одном сетевом интерфейсе

Если ваш компьютер уже является частью одной или нескольких сетей, может возникнуть ситуация, когда адреса будут выдаваться в том числе и компьютерам из другой сети. Это можно исправить либо настройками dhcpd, либо запуском в качестве демона с помощью .

Настройки dhcpd

Чтобы исключить конкретный интерфейс, в файле настроек создайте пустой блок для этого интерфейса:

/etc/dhcpd.conf
# Исключить DHCP из демилитаризованной зоны (192.168.2.0/24)
subnet 192.168.2.0 netmask 255.255.255.0 {
}

Файл службы

В «комплекте поставки» dhcpd не предусмотрен юнит для запуска на одном интерфейсе, поэтому придётся создать его самостоятельно. Сначала скопируйте существующую службу:

# cp /usr/lib/systemd/system/dhcpd4.service /etc/systemd/system/[email protected]

Затем отредактируйте строку ExecStart, добавив в неё спецификатор интерфейса:

/etc/systemd/system/[email protected]
...

...
ExecStart=/usr/bin/dhcpd -4 -q -cf /etc/dhcpd.conf -pf /run/dhcpd4/dhcpd.pid %I
...

Это юнит-шаблон, который привязывает процесс к определённому интерфейсу, например — . Здесь eth0 — название сетевого интерфейса; узнать интерфейсы вашей системы можно командой .

Использование для PXE

Настройка для PXE выполняется следующими двумя параметрами:

/etc/dhcpd.conf
next-server 192.168.0.2;
filename "/pxelinux.0";

Эти строки можно указать как в блоке , так и в настройках отдельного хоста . представляет собой адрес TFTP-сервера, а — имя образа для загрузки. Подробнее см. PXE.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: