Моя компания производит устройства Ethernet. У этих устройств очень мало ввода-вывода. Ни клавиатуры, ни видеовыхода. Когда клиент получает устройство, он должен настроить его для своей сети. Я хотел бы выбрать IP-адрес, который не будет конфликтовать с существующим устройством в его сети, но его сеть может быть любой.
У некоторых клиентов есть сети 192.168.x.x. У других есть сети 10.x.x.x.
Большинство сетевого оборудования (в частности, маршрутизаторы) поставляется с 192.168.x.1. Но это не маршрутизатор, поэтому я не хочу по умолчанию использовать низкий IP-адрес, так как это будет иметь более высокую вероятность конфликта.
Какой IP-адрес подходит для продукта? Существуют ли получастные / неиспользуемые сети класса C?
Пусть его назначит DHCP сервер? в противном случае я бы предложил использовать 192.168.0.250. Но DHCP определенно предпочтительнее
Избегайте фиксированных адресов. Даже если вы пытаетесь избегать адресов, которые обычно встречаются для других типов устройств (например, маршрутизаторов), вы все равно должны спросить себя: что, если у пользователя есть два или более таких устройства?
Как заявляли многие, вам следует попытаться автоматически настроить устройство с помощью DHCP. Таким образом, сетевой администратор может легко управлять адресом вашего устройства централизованно с DHCP-сервера.
Если не удается выполнить настройку с помощью DHCP, ваше устройство должно настроить локальный адрес ссылки в диапазоне 169,254 / 16. Любой хост, подключенный по той же ссылке с совместимым стеком и исправной конфигурацией, должен иметь возможность подключиться к вашему устройству, используя локальный адрес ссылки по умолчанию, а затем настроить его на желаемый адрес.
RFC 3927 подробно описывает, как устройство настраивает свой локальный адрес канала. Аннотация этого RFC гласит:
Чтобы участвовать в глобальной IP-сети, узел должен быть настроен с IP-адресами для его интерфейсов вручную или автоматически из источника в сети, такого как сервер протокола динамической конфигурации узла (DHCP). К сожалению, такая информация о конфигурации адреса не всегда может быть доступна. Поэтому для хоста выгодно иметь возможность зависеть от полезного подмножества сетевых функций IP, даже если конфигурация адреса недоступна. В этом документе описывается, как хост может автоматически настроить интерфейс с IPv4-адресом в префиксе 169.254 / 16, который действителен для связи с другими устройствами, подключенными к тому же физическому (или логическому) каналу.
Решение, кажется, идеально подходит для вашей проблемы.
Короче говоря, реальная реализация, описанная в RFC, заключается в выборе PRN с использованием MAC-адреса устройства в качестве начального числа. На практике многие устройства, которые я видел, используют последние два октета MAC-адреса в качестве последних двух октетов для 169.254.x.y и в случае конфликта получают следующий номер из ГПСЧ.
PS: Я действительно удивлен, что за 10 часов и с 8 предыдущими ответами никто не упомянул локальные адреса ссылок. К сожалению, теперь, когда этот вопрос устарел и на него есть общепринятый ответ, вероятно, что этот ответ будет пропущен большинством людей.
На самом деле существуют протоколы, разработанные специально для новых открытий. Одним из примеров является Протокол обнаружения канального уровня (LLDP). Если вам действительно нужно надежное решение, вам, вероятно, следует подумать о чем-то вроде этого.
Одна из проблем с простым выбором статического IP-адреса заключается в том, что какой бы IP вы ни выбрали, маловероятно, что конфигурация маршрутизации для компьютера, пытающегося подключиться к нему, будет правильно настроена на всех компьютерах.
DHCP и DNS могли бы быть хорошим решением, если бы не тот факт, что во многих сетях все еще нет серверов и используются фиксированные IP-адреса. Если вы не хотите, чтобы эти люди не могли использовать ваше устройство, вам, по крайней мере, нужно вернуться к какой-то другой системе.
ZeroConf был изобретен как раз для такой ситуации: без DHCP или DNS-сервера. Действительно, это очень хорошо решило бы эту проблему - устройство назначает себе AutoIP-адрес, а затем рекламирует свои услуги, чтобы вы могли найти его независимо от его IP-адреса. Проблема с ZeroConf заключается в том, что пользователям необходимо установить программное обеспечение в некоторых операционных системах для его поддержки (например, Windows), а в некоторых клиентских операционных системах может вообще не быть доступной библиотеки ZeroConf. То же самое и с другими проприетарными механизмами обнаружения, которые используют немного проприетарного программного обеспечения для настройки IP-адресов устройств.
Я бы предпочел по умолчанию использовать DHCP с известным DNS-именем (если только одно устройство будет одновременно подключаться к одной и той же сети), но если сервер недоступен, вернусь к одному из следующих вариантов:
Я понимаю, что вы, вероятно, просто ищете хороший относительно неиспользуемый IP-адрес, но это альтернативы, которые стоит рассмотреть, если вы можете сэкономить человеко-часы для их внедрения.
Я всегда предпочитал настраивать IP-конфигурацию непосредственно на устройстве перед его подключением, через панель или последовательный порт. Но в наши дни тенденция, похоже, заключается в том, чтобы иметь только сетевой порт, поэтому лучшим подходом было бы использовать DHCP по умолчанию, затем вернуться к локальной адресации 169.254.xx и, возможно, использовать обнаружение многоадресной службы (ZeroConf / Bonjour), поэтому вы можете найти текущий адрес нового виджета, чтобы дать ему новый. Также убедитесь, что MAC-адрес указан на читаемой этикетке снаружи устройства.
Другой частный диапазон - 172.16.0.0 маска 255.240.0.0
Этот диапазон будет состоять из всех IP-адресов от 172.16.x.x до 172.31.x.x, по сути, 16 подсетей класса B.
Несколько лет назад я наткнулся на устройство, у которого не было ни IP-адреса по умолчанию, ни DHCP-клиента. Вместо этого вы устанавливаете IP-адрес с помощью arp и ping. Есть онлайн-документация для принтера Epson с аналогичной опцией. Это конкретное устройство также поставлялось с программным обеспечением Windows, которое отправляло вам команды arp и ping.
1-й я бы установил его так, чтобы получить вариант 192.168.x.x / 24. скажем 192.168.1.100.
тогда я бы предоставил очень четкую и подробную документацию, чтобы пользователь мог:
если у человека есть другой сетевой адрес, он может временно изменить IP-адрес своего ПК на адрес в этой сети, например 192.168.100.101.
тогда они должны иметь возможность войти в веб-интерфейс, который просит их вручную установить адрес или использовать DHCP. при необходимости пользователь мог напрямую подключить сетевой кабель от ПК к устройству.
это один из дешевых способов сделать это. большинство маршрутизаторов делают это так, но используют 192.168.0.1 или 1.1. Более дорогой способ - использовать DHCP на первом этапе и написать или купить утилиту обнаружения.
я хотел бы использовать 192.168.x.y
где x
и y
случайные числа, исключая 0, 255 и 1 для y. Поскольку вы хотите избежать конфликта, не имеет смысла выбирать какой-то «хороший» адрес по умолчанию, потому что тогда другие выберут тот же адрес.
Они могут даже понять это из этого вопроса.
Пока пользователь может изменить адрес по умолчанию, это не имеет значения.
Если это потребительский продукт, я бы определенно поместил его в диапазон 192.168.x.x.
Может ли устройство сначала отправить широковещательную рассылку, а затем, получив ответ с нескольких IP-адресов, вы выбрали тот, с которого не получили ответа. Возможно, вы можете использовать адрес, который на единицу выше, чем самый высокий адрес, на который ответили.
Может быть, в некоторых случаях значение по умолчанию совсем не подходит, поэтому вы можете попросить его использовать.