Вопрос или проблема
Я запускаю ISC DHCPd на Raspbian. Я хочу настроить мой сервер так, чтобы все адреса в 192.168.0.0/24
были статическими арендами, а все в 192.168.1.0/24
— динамическими. Я бы хотел, чтобы оба использовали подсеть 192.168.0.0/23.
Уточнение: По сути, я хочу, чтобы один DHCP сервер обрабатывал DHCP для всей подсети 192.168.0.0/23
. Если у устройства, запрашивающего IP, есть запись host
в dhcpd.conf
, то ему будет назначен указанный IP-адрес. Если нет, то ему будет назначен адрес в диапазоне 192.168.1.2 - 192.168.1.254
. Для упрощения я ограничил все свои статические аренды диапазоном 192.168.0.2 - 192.168.0.254
.
Я настроил мой сервер следующим образом:
option domain-name "home";
option domain-name-servers 192.168.0.3;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
authoritative;
host mightyturing{ hardware ethernet 10:bf:48:87:74:a2; fixed-address 192.168.0.64; }
host beastnugget{ hardware ethernet 34:e6:d7:52:1e:e4; fixed-address 192.168.0.65; }
host ... (около 50 статических аренд)
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option broadcast-address 192.168.1.255;
option domain-name-servers 192.168.0.3, 1.1.1.1;
option domain-name "home";
option subnet-mask 255.255.254.0;
ddns-updates off;
}
Когда я пытаюсь запустить службу, она жалуется:
Nov 17 17:45:26 raspberrypi dhcpd[681]: DHCPREQUEST for 192.168.0.64 from 10:bf:48:87:74:a2 via eth0
Nov 17 17:45:26 raspberrypi dhcpd[681]: DHCPACK on 192.168.0.64 to 10:bf:48:87:74:a2 via eth0
Nov 17 17:45:59 raspberrypi dhcpd[681]: Dynamic and static leases present for 192.168.0.64.
Nov 17 17:45:59 raspberrypi dhcpd[681]: Remove host declaration mightyturing or remove 192.168.0.64
Nov 17 17:45:59 raspberrypi dhcpd[681]: from the dynamic address pool for 192.168.0.0/23
… и поскольку мой пул аренд 192.168.1.0/24
… Я совершенно уверен, что это означает, что 192.168.0.64
не находится в пуле. Почему же ISC это не распознает? Почему она жалуется на диапазон, для которого я не указывал выдачу динамических IP?
Также:
Когда я меняю диапазон для выдачи динамических IP на 10.0.0.0/24
(для проверки работоспособности ISC), но сохраняю статические аренды в 192.168.0.0/24
, она по-прежнему жалуется на 192.168.0.0/23
. Что происходит? Где именно я попросил раздавать адреса 192.168.0.0/23?
option domain-name "home";
option domain-name-servers 192.168.0.3;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
authoritative;
host mightyturing{ hardware ethernet 10:bf:48:87:74:a2; fixed-address 192.168.0.64; }
host beastnugget{ hardware ethernet 34:e6:d7:52:1e:e4; fixed-address 192.168.0.65; }
subnet 10.0.0.0 netmask 255.255.255.254 {
option routers 10.0.0.1;
option broadcast-address 10.0.0.255;
option domain-name-servers 1.1.1.1;
option domain-name "home";
option subnet-mask 255.255.255.0;
ddns-updates off;
}
Мне удалось реализовать мою первоначальную идею с помощью предложений @Thomas. Я использовал subnet 192.168.0.0 netmask 255.255.254.0
и range 192.168.1.2 192.168.1.254
и всё заработало. Я перечислил все свои статические IP в диапазоне 192.168.0.0/24.
Ответ или решение
Настройка динамических и статических аренд в DHCP-сервере ISC на Raspbian
Понимание динамических и статических аренд в DHCP-сервере ISC
Вопрос стоит в том, чтобы настроить DHCP-сервер на Raspbian для обслуживания всего подсети 192.168.0.0/23, где 192.168.0.0/24 использовался бы для статических аренд, а 192.168.1.0/24 — для динамических.
Исходная ситуация
Вы описали необходимость использования ISC DHCP-сервера для выделения IP-адресов в пределах расширенной подсети 192.168.0.0/23, при этом предполагается, что:
- Статические IP-адреса выдаются в диапазоне 192.168.0.2 – 192.168.0.254.
- Динамические адреса — в диапазоне 192.168.1.2 – 192.168.1.254.
- Сервер некорректно интерпретирует конфигурацию и сообщает об ошибке относительно перекрытия динамических и статических аренд.
Возможное реше́ние проблемы перекрытия
Как вам удалось выяснить, решение заключалось в правильной настройке конфигурационного файла dhcpd.conf. Следующий порядок конфигурации позволил исправить ошибку:
-
Настройка подсети как единого диапазона:
subnet 192.168.0.0 netmask 255.255.254.0 { option routers 192.168.0.1; option broadcast-address 192.168.1.255; option domain-name-servers 192.168.0.3, 1.1.1.1; option domain-name "home"; option subnet-mask 255.255.254.0; ddns-updates off; range 192.168.1.2 192.168.1.254; }
-
Определение статических записей:
Для статических адресов прописываются отдельные записиhost
, которые связаны с конкретными MAC-адресами. Например:host mightyturing { hardware ethernet 10:bf:48:87:74:a2; fixed-address 192.168.0.64; } host beastnugget { hardware ethernet 34:e6:d7:52:1e:e4; fixed-address 192.168.0.65; }
Проблема и ее устранение
Ошибки возникали из-за того, что сервер неверно интерпретировал границы подсетей, воспринимая их как единое пространство 192.168.0.0/23. Это было исправлено путем объявления всей подсети 192.168.0.0/23 в одном блоке с явно заданными диапазонами для динамических адресов.
Заключение
Такая конфигурация позволяет ISC DHCP правильно обрабатывать запросы IP-адресов, избегая конфликта между статическими и динамическими арендными записями. Важно помнить о том, что статические назначения должны всегда явно определяться по соответствиям MAC-адресов и использоваться за пределами динамического диапазона.
Эта настройка обеспечивает гибкость и надежность в управлении сетевыми ресурсами, позволяя администратору эффективно контролировать как постоянные, так и временные подключения в сети.
Настройка DHCP-сервера, таким образом, требует внимательного определения диапазонов аренды и тщательной проверки совпадений, чтобы избежать возможных конфликтов и обеспечить бесперебойную работу сети.