Вопрос или проблема
Я пытаюсь настроить мой сервер 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.
Применение
Чтобы успешно передать необходимую опцию, вам нужно проверить следующие моменты и предпринять такие шаги:
-
Определение Сообщений: Убедитесь в правильности синтаксиса вашей конфигурации. Ошибки часто кроются в деталях. В данной ситуации код 125 может быть настроен как строка, и передан в рамках основной конфигурации. Вы могли бы попробовать следующее:
option op125 code 125 = string; option op125 7d:29:00:00:0d:XXXXXXXX:20:33;
Как вы упомянули, работающее решение — это строка, фактически содержащая зашифрованное содержимое специфических данных.
-
Согласованность вендорских настроек: Возможно потребуется сверка
dhcp-parameter-request-list
, уточняя правильность запрашиваемых параметров или же обманом клиента с помощью принудительной отправки параметров (вы упомянули аналогию с командойdhcp-option-force
в dnsmasq). -
Тестирование: Используйте сторонние утилиты, такие как Wireshark, чтобы отследить сетевой трафик и точно выявить, какие опции идут, а какие нет. Это позволит подтвердить успешность применения конфигурационных изменений.
-
Перезагрузка и Устранение Ошибок: После каждого изменения конфигурации, рестартуйте каждую частицу системы (сервера Apache и DHCP), так как это может оказывать влияние на функционирование конфигурации в целом. Необходимо избегать конфигурационных помех между различными сервисами.
-
Другие ОС и клиенты: Возможно, будет полезно протестировать другие сетевые устройства и клиенты, чтобы убедиться в эффективности вашей конфигурации и понять, где может возникать узкое место.
С учетом специфичности задачи работы с такими специфичными устройствами, тщательное изучение документации и нюансов работы может быть наиболее важным шагом для достижения успеха.
Внедрение всех этих шагов должно помочь исправить проблемы настройки и успешно внедрить устройство в локальную сеть, используя собственный DHCP-сервер в обход ограничений провайдера.