ISC DHCP назначает пул/подсеть определённым MAC-адресам

Вопрос или проблема

Привет, я в отчаянии!

Я запускаю 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, что может быть причиной блокировки.

Основные причины и решения

  1. Объединение подсетей в общий пул:
    Как упоминалось, обе подсети (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");
           }
       }
    }
  2. Использование классов:
    Убедитесь, что класс, соответствующий вашему устройству, верно определяется через match if substring (hardware, 1, 3) = b8:27:eb;. На всякий случай, проверьте правильность MAC-адреса устройства и необходимость дополнительно использовать allow members of "board"; в всех соответствующих пул.

  3. Параметры deny/allow:
    Убедитесь, что параметры allow и deny корректно применяются в рамках объявленных подсетей. Если вы запрещаете неведомых клиентов в основной подсети (10.0.106.0), это может помешать корректной работе DHCP для вашего устройства. Попробуйте временно отключить deny unknown-clients и проверьте, будет ли клиент далее учитывать ваши параметры.

  4. Изменение версии сервера:
    Вы используете устаревшую версию DHCP-сервера (4.1). Если это возможно, рассмотрите возможность обновления до 4.2.5 или выше, так как новая версия может поддерживать более продвинутые настроечки.

Рекомендации

  • Логи: внимательно следите за логами DHCP-сервера. Включите уровень логирования info, если это еще не сделано. Это поможет лучше понять процесс и устранить возможные ошибки.
  • Тестовые клиенты: протестируйте ваши изменения на разных клиентских устройствах, чтобы убедиться, что все шаблоны MAC-адресов работают как задумано.
  • Документация: полезно обратиться к официальной документации ISC DHCP для дальнейшего понимания команд и параметров.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...