В настоящее время я занимаюсь разработкой встроенного устройства под управлением Linux, которое позволяет подключаться к хосту Windows через USB. Чтобы добиться этого, я успешно использую драйвер устройства USB Ethernet на этом устройстве, и мой хост Windows 7 распознает его как адаптер USB Ethernet, отправляет запрос DHCP, на который отвечает udhcpd на устройстве, и могут быть установлены IP-соединения. ,

Это хорошо работает, когда к хосту Windows подключено только одно встроенное устройство. При подключении нескольких устройств каждое udhcpd на каждом устройстве будет предоставлять одинаковый диапазон IP-адресов и адрес хосту Windows, что сделает невозможной маршрутизацию на эти разные устройства.

Есть ли способ, чтобы разные udhcpds на разных встроенных устройствах передавали разные диапазоны, не исправляя udhcpd.conf с некоторой случайностью во время выполнения?

1 ответ1

0

Вы действительно пробовали это? Он должен работать. Нет необходимости использовать специальный файл udhcpd.conf. RFC2131 адрес с самого начала ситуации нескольких серверов DHCP, чтобы избежать такого рода конфликтов. Это ответственность как сервера, так и клиента.

3.1 Клиент-серверное взаимодействие - выделение сетевого адреса

...

  1. Каждый сервер может ответить DHCPOFFER [...] При выделении нового адреса серверы ДОЛЖНЫ проверять, что предлагаемый сетевой адрес еще не используется; например, сервер может проверить предложенный адрес с помощью эхо-запроса ICMP.

...

  1. Клиент получает сообщение DHCPACK с параметрами конфигурации. Клиент ДОЛЖЕН выполнить окончательную проверку параметров (например, ARP для выделенного сетевого адреса) и отмечает продолжительность аренды, указанную в сообщении DHCPACK. На этом этапе клиент настроен. Если клиент обнаруживает, что адрес уже используется (например, с помощью ARP), клиент ДОЛЖЕН отправить сообщение DHCPDECLINE на сервер и перезапустить процесс конфигурации.

https://www.ietf.org/rfc/rfc2131.txt

И действительно, это то, что делает udhcpd, используя ARP (и заметку "TODO", что он должен использовать ICMP):

http://git.busybox.net/busybox/tree/networking/udhcp/dhcpd.c#n191

http://git.busybox.net/busybox/tree/networking/udhcp/leases.c#n136

... на стороне клиента udhcpc может выполнить эту проверку тоже:

http://git.busybox.net/busybox/tree/networking/udhcp/dhcpc.c#n1713

Я не знаю, имеет ли это дело с Windows DHCP-клиентом, но, как указывает RFC, СЛЕДУЕТ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .