Вопрос или проблема
Привет, я в отчаянии!
Я запускаю isc-dhcp-server 4.1 здесь (с webmin, но это другая тема) и хочу предоставить некоторые параметры (tftp-server и bootfile) сетевым компонентам, которые я могу идентифицировать по MAC-адресу и строке поставщика.
Однако я дошел до точки, где конфигурация соответствует MAC-адресу, но все равно говорит, что это неизвестный клиент и не продолжает после DHCPDISCOVER. Я использую deny unknown-clients, но для другой общей сети и подсети.
Что я упускаю и почему я вижу это только в журнале?
dhcpd: найден плата
dhcpd: DHCPDISCOVER от b8:27:eb:ab:cd:ef через eth0: неизвестный клиент
Вот текущая конфигурация:
shared-network COMPUTERS {
subnet 10.0.106.0 netmask 255.255.254.0 {
option subnet-mask 255.255.254.0;
default-lease-time 3600;
authoritative;
ignore client-updates;
deny unknown-clients;
ddns-updates off;
pool {
range 10.0.106.170 10.0.106.200;
}
pool {
range 10.0.107.170 10.0.107.200;
}
}
}
class "board" {
match if substring (hardware, 1, 3) = b8:27:eb;
log(info, "найдена плата");
}
shared-network hardware {
# сеть для TFTP
subnet 192.168.120.0 netmask 255.255.255.0 {
pool {
allow unknown-clients;
allow dynamic bootp clients;
allow members of "board";
next-server 192.168.120.254;
filename "uboot.scr";
range 192.168.120.10 192.168.120.50;
log(info , "выделено плате" );
}
}
}
Поскольку это CentOS 6, я использую файлы конфигурации eth0 и eth0:1 и также предоставлю вывод ifconfig и ip add:
> ifconfig:
eth0 Link encap:Ethernet HWaddr 00:26:AB:12:34:56
inet addr:10.0.106.3 Bcast:10.0.107.255 Mask:255.255.254.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:356698 errors:0 dropped:0 overruns:0 frame:0
TX packets:224426 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:59600895 (56.8 MiB) TX bytes:32866187 (31.3 MiB)
Interrupt:17
eth0:1 Link encap:Ethernet HWaddr 00:26:AB:12:34:56
inet addr:192.168.120.254 Bcast:192.168.120.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:17
> ip add:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:26:ab:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 10.0.106.3/23 brd 10.0.107.255 scope global eth0
inet 192.168.120.254/24 brd 192.168.120.255 scope global eth0:1
valid_lft forever preferred_lft forever
Любая помощь будет очень признательна.
С уважением
Учитывая вашу настройку интерфейса, вам нужно включить обе подсети (10.0.106.0/255.255.254.0 и 192.168.120.0/255.255.255.0) в одно и то же объявление общей сети.
Из справочной страницы dhcpd.conf:
Заявление о совместной сети используется для информирования DHCP-сервера о том, что
некоторые IP-подсети на самом деле используют одну и ту же физическую сеть. Все подсети
в совместной сети должны быть объявлены в заявлении о совместной сети.
Параметры, указанные в заявлении о совместной сети, будут
использоваться при загрузке клиентов на этих подсетях, если только
параметры, предоставленные на уровне подсети или хоста, не переопределят их. Если в любой подсети в совместной сети
есть адреса, доступные для динамического распределения, эти
адреса собираются в общий пул для этой совместной сети
и назначаются клиентам по мере необходимости. Нет способа определить,
на какой подсети совместной сети клиент должен загружаться.
Вы, вероятно, можете обойти ограничение в последнем предложении, правильно используя разрешения, запреты и объявления хостов, и, похоже, вы движетесь в правильном направлении.
Вам также может быть интересно взглянуть на allow/deny members of "class"
. Я не уверен, доступно ли это в вашей версии DHCP-сервера. Это задокументировано в справочной странице для ISC dhcpd 4.2.5 на CentOS 7.
Ответ или решение
Ваша задача с конфигурацией ISC DHCP-сервера действительно требует внимательного подхода. Судя по вашему описанию, вы хотите назначить определённые параметры сетевого окружения для устройств с известными MAC-адресами и классами. Рассмотрим возможные решения и пояснения, которые помогут вам устранить проблему «unknown client» в вашей конфигурации.
Описание проблемы
Вы настраиваете ISC DHCP-сервер (версия 4.1) и сталкиваетесь с тем, что, несмотря на совпадение по MAC-адресу, клиент продолжает классифицироваться как «unknown client». Лог показывает, что сервер не распознает клиента после получения сообщения DHCPDISCOVER. Вы используете опцию deny unknown-clients
, что может быть причиной блокировки.
Основные причины и решения
-
Объединение подсетей в общий пул:
Как упоминалось, обе подсети (10.0.106.0/23 и 192.168.120.0/24) должны быть объявлены в одной секцииshared-network
. Это позволит серверу учесть общую физическую сеть, что, в свою очередь, упростит распределение IP-адресов. Пример корректной конфигурации:shared-network EVERYONE { subnet 10.0.106.0 netmask 255.255.254.0 { option subnet-mask 255.255.254.0; default-lease-time 3600; authoritative; ignore client-updates; pool { range 10.0.106.170 10.0.106.200; } } subnet 192.168.120.0 netmask 255.255.255.0 { pool { allow unknown-clients; allow dynamic bootp clients; allow members of "board"; next-server 192.168.120.254; filename "uboot.scr"; range 192.168.120.10 192.168.120.50; log(info, "allocated to a board"); } } }
-
Использование классов:
Убедитесь, что класс, соответствующий вашему устройству, верно определяется черезmatch if substring (hardware, 1, 3) = b8:27:eb;
. На всякий случай, проверьте правильность MAC-адреса устройства и необходимость дополнительно использоватьallow members of "board";
в всех соответствующих пул. -
Параметры deny/allow:
Убедитесь, что параметрыallow
иdeny
корректно применяются в рамках объявленных подсетей. Если вы запрещаете неведомых клиентов в основной подсети (10.0.106.0), это может помешать корректной работе DHCP для вашего устройства. Попробуйте временно отключитьdeny unknown-clients
и проверьте, будет ли клиент далее учитывать ваши параметры. -
Изменение версии сервера:
Вы используете устаревшую версию DHCP-сервера (4.1). Если это возможно, рассмотрите возможность обновления до 4.2.5 или выше, так как новая версия может поддерживать более продвинутые настроечки.
Рекомендации
- Логи: внимательно следите за логами DHCP-сервера. Включите уровень логирования
info
, если это еще не сделано. Это поможет лучше понять процесс и устранить возможные ошибки. - Тестовые клиенты: протестируйте ваши изменения на разных клиентских устройствах, чтобы убедиться, что все шаблоны MAC-адресов работают как задумано.
- Документация: полезно обратиться к официальной документации ISC DHCP для дальнейшего понимания команд и параметров.
Заключение
Устранение проблем с конфигурацией DHCP требует внимательного подхода и тестирования. Не забывайте об объединении подсетей в одну общую сетевую декларацию и о правильном использовании классов и параметров. Следуя этому подходу, вы сможете обеспечить корректное выделение IP-адресов и настройку необходимых параметров для ваших сетевых устройств.