Установка vendor-encapsulated-options (код 125) с ISC DHCPd 4.3 не удается.

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

Я пытаюсь настроить мой сервер Ubuntu 16.04 LTS Xenial для работы DHCP-сервера, который предоставляет необходимую информацию очень специфическому устройству.

Это устройство — ТВ декодер от интернет-провайдера Orange (производитель из Франции — Sagem), и он работает только в том случае, если IP-адрес назначен с помощью Livebox 3 от Orange (TM) (тот же производитель). Это ограничение не позволяет использовать другой DHCP-сервер, кроме того, который предоставлен Orange.

Если я хочу использовать свой собственный DHCP-сервер на Ubuntu 16.04, чтобы избежать использования того, что работает на Livebox (он некачественный), мне нужно адаптировать мою конфигурацию.

Протокол начальной загрузки (ACK) с использованием ТВ декодера и DHCP от Sagem

Тип сообщения: Ответ на загрузку (2)
Тип оборудования: Ethernet (0x01)
Длина аппаратного адреса: 6
Прыжки: 0
ID транзакции: 0x35139a37
Прошло секунд: 0
Флаги Bootp: 0x8000, Флаг широковещательной рассылки (Broadcast)
IP-адрес клиента: 0.0.0.0
Ваш (клиентский) IP-адрес: 192.168.1.153
IP-адрес следующего сервера: 192.168.1.1
IP-адрес посредника: 0.0.0.0
MAC-адрес клиента: Sagemcom_37:a1:9a (f0:82:61:37:a1:9a)
Заполнение аппаратного адреса клиента: 00000000000000000000
Имя хоста сервера не указано
Имя файла загрузки не указано
Магический куки: DHCP
Опция: (53) Тип DHCP-сообщения (ACK)
    Длина: 1
    DHCP: ACK (5)
Опция: (54) Идентификатор DHCP-сервера
    Длина: 4
    Идентификатор DHCP-сервера: 192.168.1.1
Опция: (51) Время аренды IP-адреса
    Длина: 4
    Время аренды IP-адреса: (843с) 14 минут, 3 секунды
Опция: (58) Время обновления аренды
    Длина: 4
    Время обновления аренды: (421с) 7 минут, 1 секунда
Опция: (59) Время повторной привязки
    Длина: 4
    Время повторной привязки: (737с) 12 минут, 17 секунд
Опция: (1) Маска подсети
    Длина: 4
    Маска подсети: 255.255.255.0
Опция: (6) Сервер доменных имен
    Длина: 4
    Сервер доменных имен: 192.168.1.1
Опция: (15) Имя домена
    Длина: 4
    Имя домена: home
Опция: (28) Широковещательный адрес
    Длина: 4
    Широковещательный адрес: 192.168.1.255
Опция: (3) Маршрутизатор
    Длина: 4
    Маршрутизатор: 192.168.1.1
Опция: (125) Специфическая информация для поставщика V-I
    Длина: 41
    Предприятие: The Broadband Forum (ранее 'ADSL Forum') (3561)
        Длина: 36
        Подопция 125: (4) GatewayManufacturerOUI
            Длина: 6
            GatewayManufacturerOUI: 307CB2
        Подопция 125: (5) GatewaySerialNumber
            Длина: 15
            GatewaySerialNumber: AN16XXXXXXXXXX
        Подопция 125: (6) GatewayProductClass
            Длина: 9
            GatewayProductClass: Livebox 3
Опция: (255) Конец
    Конец опции: 255

Чтобы эмулировать такое же поведение моего собственного ISC DHCP-сервера на Ubuntu, я настроил его, основываясь на найденной документации и опциях.

Основная идея состоит в том, чтобы отправлять на ТВ декодер только следующие дополнительные коды:

  • Код 15: Имя домена
  • Код 72: Сетевой WWW сервер по умолчанию.
  • Код 125: Специфическая информация для поставщиков V-I

Исходя из документации ISC DHCP-сервера, эти три кода существуют, и их можно легко отправлять, добавив удобные опции:

  • domain-name text
  • www-server ip-address
  • vendor-encapsulated-options string

Сначала я попробовал таким образом:

/etc/dhcp/dhcpd.conf

# Создать пространство опций с именем orangetv
option space orangetv code width 1 length width 1;
option orangetv.GatewayManufacturerOUI code 4 = text;
option orangetv.GatewaySerialNumber code 5 = text;
option orangetv.GatewayProductclass code 6 = text;
    
# Linux Маршрутизатор
subnet 192.168.1.0 netmask 255.255.255.0 {
    option domain-name-servers 192.168.1.1;
    option broadcast-address 192.168.1.255;
    option subnet-mask 255.255.255.0;
    option routers 192.168.1.5;
    range 192.168.1.100 192.168.1.199;    
    class "sagem-vendor-classes" {
    match if substring(option vendor-class-identifier, 0, 5) = "sagem";        
    option domain-name "home";        
    option www-server 193.253.67.89;
    vendor-options-space orangetv;
    option orangetv.GatewayManufacturerOUI "307CB2";
    option orangetv.GatewaySerialNumber "AN16XXXXXXXXXXX";
    option orangetv.GatewayProductclass "Livebox 3";                       
    }

}

После сохранения новой конфигурации я проверил синтаксис конфигурации, запустив:
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf

Затем я перезапустил DHCP сервер, чтобы перезагрузить новую конфигурацию (ISC DHCP 4.3 иногда не удается перезапустить и перезагрузить новую конфигурацию. Это как-то связано с сервером Apache2. Поэтому я рекомендую принудительно перезапустить):

sudo -i
service dhcp restart
service isc-dhcp-server restart
service isc-dhcp-server6 restart
service apache2 restart

Теперь я перезагрузил ТВ декодер и снова проследил сеть с помощью Wireshark. Результат Bootstrap ACK был

Тип сообщения: Ответ на загрузку (2)
Тип оборудования: Ethernet (0x01)
Длина аппаратного адреса: 6
Прыжки: 0
ID транзакции: 0x70907f18
Прошло секунд: 0
Флаги Bootp: 0x8000, Флаг широковещательной рассылки (Broadcast)
IP-адрес клиента: 0.0.0.0
Ваш (клиентский) IP-адрес: 192.168.1.153
IP-адрес следующего сервера: 192.168.1.5
IP-адрес посредника: 0.0.0.0
MAC-адрес клиента: Sagemcom_37:a1:9a (f0:82:61:37:a1:9a)
Заполнение аппаратного адреса клиента: 00000000000000000000
Имя хоста сервера не указано
Имя файла загрузки не указано
Магический куки: DHCP
Опция: (53) Тип DHCP-сообщения (ACK)
    Длина: 1
    DHCP: ACK (5)
Опция: (54) Идентификатор DHCP-сервера
    Длина: 4
    Идентификатор DHCP-сервера: 192.168.1.5
Опция: (51) Время аренды IP-адреса
    Длина: 4
    Время аренды IP-адреса: (843с) 14 минут, 3 секунды
Опция: (1) Маска подсети
    Длина: 4
    Маска подсети: 255.255.255.0
Опция: (3) Маршрутизатор
    Длина: 4
    Маршрутизатор: 192.168.1.5
Опция: (6) Сервер доменных имен
    Длина: 4
    Сервер доменных имен: 192.168.1.1
Опция: (15) Имя домена
    Длина: 4
    Имя домена: home
Опция: (28) Широковещательный адрес
    Длина: 4
    Широковещательный адрес: 192.168.1.255
Опция: (72) Сетевой WWW сервер по умолчанию
    Длина: 4
    Сетевой WWW сервер по умолчанию: 193.253.67.89
Опция: (255) Конец
    Конец опции: 255
Дополнение: 0000000000000000

Как вы заметите, опции 15 и 72 были правильно обработаны, но опция 125 отсутствует. Поэтому я попробовал использовать закодированные опции поставщика, как рекомендовано в руководстве. Я использовал

option vendor-encapsulated-options 7d:29:00:00:0d:XXXXXXXX:20:33

вместо метода vendor-options-space, но это снова не сработало.

Я использовал другой подход, чтобы отправить код 125, как объяснено в [https://lists.isc.org/pipermail/dhcp-users/2012-July/015793.html][1]

/etc/dhcp/dhcpd.conf

# Создать пространство опций с именем orangetv
option space orangetv code width 1 length width 1;
option orangetv.GatewayManufacturerOUI code 4 = text;
option orangetv.GatewaySerialNumber code 5 = text;
option orangetv.GatewayProductclass code 6 = text;

# Упаковать пространство orangetv в опцию 125
option space vivso code width 4 length width 1;
option vivso.orangetv code 3561 = encapsulate orangetv;
option vivso.iana code 0 = string;
option op125 code 125 = encapsulate vivso;

# Linux Маршрутизатор
subnet 192.168.1.0 netmask 255.255.255.0 {
    option domain-name-servers 192.168.1.1;
    option broadcast-address 192.168.1.255;
    option subnet-mask 255.255.255.0;
    option routers 192.168.1.5;
    range 192.168.1.100 192.168.1.199;    
    class "sagem-vendor-classes" {
    match if substring(option vendor-class-identifier, 0, 5) = "sagem";        
    option domain-name "home";        
    option www-server 193.253.67.89;
    option vivso.iana 01:01:01;
    option orangetv.GatewayManufacturerOUI "307CB2";
    option orangetv.GatewaySerialNumber "AN16XXXXXXXXXXX";
    option orangetv.GatewayProductclass "Livebox 3";                       
    }

}

Несмотря на эти настройки, DHCP-сервер не отправляет код 125 с информацией поставщика.

Есть ли другие предложения?

попробуйте это

option op125 code 125 = string;

затем вставьте op125 в блок подсети следующим образом:

option op125 7d:29:00:00:0d:XXXXXXXX:20:33;

vendor-encapsulated-options это опция 43

Недавно у меня была точно такая же проблема. Я использую dnsmasq в качестве сервера (pi-hole в качестве основы, слегка модифицированный), но оказалось, что DHCP-клиент не запрашивает опцию 125, поэтому dnsmasq ее не отправляет.

Похоже, эквивалент для dhcpd это dhcp-parameter-request-list, хотя я не уверен, как его использовать. Эта страница предлагает один из немногих примеров, которые я смог найти.

В качестве ссылки вот единственная конфигурация, которая мне понадобилась, обратите внимание на force в dhcp-option-force:

dhcp-host=d0:84:aa:bb:cc:dd,set:decodeur,10.1.2.3,OrangeTV
dhcp-option=tag:decodeur,option:dns-server,10.1.2.1
# Предприятие: Broadband Forum (ранее 'DSL Forum') (3561)
        # Подопция 125: (4) GatewayManufacturerOUI
        dhcp-option-force=tag:decodeur,vi-encap:3561,4,"A43E51"
        # Подопция 125: (5) GatewaySerialNumber
        dhcp-option-force=tag:decodeur,vi-encap:3561,5,"AN16XXXXXXXXXXX"
        # Подопция 125: (6) GatewayProductClass
        dhcp-option-force=tag:decodeur,vi-encap:3561,6,"Livebox 3"

С:

  • IP Livebox: 10.1.2.1
  • IP декодера: 10.1.2.3
  • MAC декодера: d0:84:aa:bb:cc
  • Серийный номер Livebox: AN16XXXXXXXXXXX

Коды 15 и 72 в моем случае не обязательны. У меня также есть настраиваемый домен поиска. Однако в моем случае установка livebox в качестве DNS обязательна. Небольшо отличающуюся информацию можно найти в различных местах в Интернете (пример).

Надеюсь, я не опоздал с ответом.

7d:29 означает опцию 125 (7d) и 29 это Длина = 41

так что строка для отправки начинается с 00:00:0d:………….

Ответ или решение

Проблема настройки параметров «vendor-encapsulated-options» (код 125) при использовании ISC DHCPd версии 4.3 в среде Ubuntu 16.04 для обеспечения корректной работы с декодером ТВ от Orange ISP весьма распространена в ситуациях, когда требуется взаимоинтеграция нестандартных сетевых устройств. Обозначу основные аспекты, которые помогут вам разобраться в задачах настройки и успешной реализации этого кейса.

Теория

DHCP (Dynamic Host Configuration Protocol) — протокол, который автоматически назначает IP-адреса и другие сетевые параметры клиентским устройствам. В некоторых случаях, таких как ваш, устройства требуют специфическую информацию через дополнительные опции, такие как код 125, который является «V-I Vendor-specific Information» — специфической для вендора информацией.

Опция 125 представляет собой особую область данных, передающую сведения о производителя устройств ("orangetv"), тем самым позволяя устройствам функционировать в условиях уникальных настроек сети.

Пример

Ваши попытки сконфигурировать /etc/dhcp/dhcpd.conf для передачи этих данных через вендорскую опцию включают настройку нескольких пространств имен и определение подопций внутри них. Вы создали пространство "orangetv" и назначили коды для каждую из опций внутри этого пространства, такие как GatewayManufacturerOUI, GatewaySerialNumber и GatewayProductclass.

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

Применение

Чтобы успешно передать необходимую опцию, вам нужно проверить следующие моменты и предпринять такие шаги:

  1. Определение Сообщений: Убедитесь в правильности синтаксиса вашей конфигурации. Ошибки часто кроются в деталях. В данной ситуации код 125 может быть настроен как строка, и передан в рамках основной конфигурации. Вы могли бы попробовать следующее:

    option op125 code 125 = string;
    option op125 7d:29:00:00:0d:XXXXXXXX:20:33;

    Как вы упомянули, работающее решение — это строка, фактически содержащая зашифрованное содержимое специфических данных.

  2. Согласованность вендорских настроек: Возможно потребуется сверка dhcp-parameter-request-list, уточняя правильность запрашиваемых параметров или же обманом клиента с помощью принудительной отправки параметров (вы упомянули аналогию с командой dhcp-option-force в dnsmasq).

  3. Тестирование: Используйте сторонние утилиты, такие как Wireshark, чтобы отследить сетевой трафик и точно выявить, какие опции идут, а какие нет. Это позволит подтвердить успешность применения конфигурационных изменений.

  4. Перезагрузка и Устранение Ошибок: После каждого изменения конфигурации, рестартуйте каждую частицу системы (сервера Apache и DHCP), так как это может оказывать влияние на функционирование конфигурации в целом. Необходимо избегать конфигурационных помех между различными сервисами.

  5. Другие ОС и клиенты: Возможно, будет полезно протестировать другие сетевые устройства и клиенты, чтобы убедиться в эффективности вашей конфигурации и понять, где может возникать узкое место.

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

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

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

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