Как связаться с устройством, которому назначен IP-адрес «0.0.0.0»?

20

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

Несколько недель назад я обнаружил, что по какой-то странной причине локальный IP-адрес системы сам себя установил 0.0.0.0. Теперь я хочу войти в диагностику, чтобы изменить его, но мой компьютер не разрешит установку IP, начиная с 0.

Есть ли какой-либо другой способ связи с устройством, имеющим локальный IP-адрес с 0.0.0.0использованием ПК с Windows.

Невозможно восстановить заводские настройки устройства по умолчанию, не отправив его обратно производителю.

Пабло Гонсалес
источник
14
Поскольку другие заявляют, что 0.0.0.0это не маршрутизируемый адрес. Многие части программного обеспечения связываются, чтобы 0.0.0.0позволить этому программному обеспечению привязываться к любому IP-адресу, назначенному сетевому интерфейсу. Это облегчает, например, установку устройства на настройку DHCP, и вы просто подключаетесь, получая IP-адрес устройства, и все. Мой большой вопрос к вам - почему вы устанавливаете IPv4 IP вашей машины в тот же диапазон, что и локальный IP, чтобы затем запускать диагностическое программное обеспечение? Без разницы. Вы должны просто получить IP-адрес устройства и подключиться к нему. Тем не менее, у меня есть идея. Выкладываю ответ.
JakeGould
VX Works может не запускать DHCP и, следовательно, может потребоваться статический IP-адрес, что вам придется делать внутри VX Works. Кроме того, любое программное обеспечение или интерфейсы на вашем ПК, которые взаимодействуют с этим компьютером VX Works, должны знать этот IP-адрес. Вам необходимо убедиться, что все машины, которым необходимо общаться с вашим компьютером VX Works, знают его IP-адрес. Возможно, он заполняется автоматически, или вам может потребоваться ввести его вручную. Адрес all-0s работает как шлюз по умолчанию, однако, если ваш компьютер VX Works и ваш хост, с которым он хочет общаться, имеют общий шлюз.
Shankensteinium
7
Как вы смогли определить, что устройство использует IP-адрес 0.0.0.0? Использовали ли вы какое-либо программное обеспечение, которое могло взаимодействовать с устройством по сети, или на устройстве есть базовый человеко-машинный интерфейс (HMI) для отображения IP-адреса? Кроме того, чтобы убрать очевидный вопрос, пытались ли вы выключить его, а затем снова включить, чтобы увидеть, не обнаруживает ли он вменяемый адрес?
Сэм Скьюс
5
Буквально присвоить себе адрес 0.0.0.0невозможно, если он имеет совместимый со стандартами стек IP. Это оставляет пару вариантов: 1. Это показывает, 0.0.0.0как сигнал, что ему не удалось назначить IP-адрес. 2. У него сломан стек IP, который каким-то образом удалось назначить самому себе 0.0.0.0. Я не знаю достаточно о VxWorks, чтобы сказать, какой из двух наиболее вероятен. Если он действительно имеет назначенный адрес, 0.0.0.0вам понадобится взломанный стек IP для связи с ним. Но это не принесет много пользы, если он вообще не назначил адрес.
Касперд
4
Как вы определили, что у него 0.0.0.0 IP-адрес? Если вы находитесь в терминале, вы можете использовать это для установки IP.
CramerTV

Ответы:

23

0.0.0.0не является действительным IP-адресом. RFC1700 (a) утверждает, что 0.0.0.0/8( 0.anything.anything.anything) зарезервирован только как адрес источника.

Обычно вы увидите, что системы и приложения привязывают порты, 0.0.0.0что означает, что порт доступен из любого интерфейса.

Я не знаком с VxWrks, но я предполагаю, что есть способ указать локальный IP для взаимодействия с другими компьютерными устройствами.

У WindRiver есть множество руководств по настройке IP.

Hogstrom
источник
Если 0.0.0.0он действителен только в качестве источника , то как порты вообще связаны с 0.0.0.0доступностью? Я уверен, что мне не хватает детали, но это звучит как противоречие.
Капитан Мэн
20
@CaptainMan: вы путаете аспект API сокетов с аспектом протокола IP . Привязка 0.0.0.0- это функция уровня API для приема пакетов / соединений, адресованных на любой локально настроенный адрес. Он не включает пакеты, предназначенные для 0.0.0.0перемещения куда-либо на уровне протокола.
R ..
1
@CaptainMan: 0.0.0.0рассматривается как пустая строка. Если вы настроите свой сервер на прием подключений, 0.0.0.0то он будет принимать подключения с любого IP-адреса - вот что 0.0.0.0значит. Если вы не привязываетесь к нему, 0.0.0.0то ваш сервер будет принимать соединения ТОЛЬКО с одного IP-адреса и будет отклонять соединения с любых других компьютеров в сети. Думайте о привязке не-0.0.0.0 как о
некоем
13

Вы можете заставить свой компьютер думать, что устройство имеет реальный IP-адрес. Но вам нужен физический адрес (также известный как MAC-адрес), штука с шестизначными шестизначными полями. Вы делаете это, добавляя его в таблицу разрешения arp. В Windows откройте терминал cmd и используйте arp.

arp -s <IP address> <physical address>

Конечно, вам нужен уникальный IP-адрес и в вашей сети. В противном случае стек будет перенаправлен куда-то еще. Если вы дойдете до этой точки, вы сможете получить доступ к устройству. Сетевая инфраструктура будет маршрутизироваться в соответствии с физическим адресом.

В Linux почти то же самое. Откройте терминал, используйте arp.

Это может не сработать !! Некоторые устройства отвечают только на свой собственный IP. Но я предполагаю, что это не ваш случай.

Гейб Мизука
источник
1
Мне интересно знать, если это работает. Определенно крутой трюк.
Трогнандерс
@ BaileyS о, это работает хорошо в нормальных условиях. Вы просто вставляете ручное переопределение для разрешения адресов в автоматическую таблицу.
Поможет
2
Если вы теперь можете ОТПРАВИТЬ материал на этот адрес, это не всегда означает, что вы можете правильно обработать ОТВЕТ, если таковой имеется ...
rackandboneman
1
Большинство iptables выше механизма маршрутизации самого низкого уровня, поэтому может иметь ограниченный доступ к такого рода работам ...
rackandboneman
1
@BaileyS Так и есть, и нет. Устройство с нормальным стеком IP не должно. Таблица маршрутизации будет игнорировать адреса пакетов на номера IP, отличные от их собственных, или на то, что она не знает, как маршрутизировать. В этом случае ОП задает вопрос о небольшом промышленном устройстве. Скорее всего, в нем не реализован стек IP. Он просто отвечает на любой пакет, который достигает его. Я знаю это, потому что я видел и использовал много таких. Чтобы сэкономить, у них нет панели или интерфейса для настройки. Отправив им пакет с «предложенным» IP-адресом, совпадающим с MAC-адресом, достаточно.
Гейб Мизука,
12

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

Как и другие, в их ответе указывается 0.0.0.0не маршрутизируемый IP-адрес, который часто используется программным обеспечением для привязки любого IP-адреса ко всем сетевым интерфейсам на устройстве. Это в основном означает:

«Привет, я являюсь частью программного обеспечения и приму любое соединение с любым назначенным IP-адресом на машине, на которой я работаю».

Поэтому, если устройство использует DHCP - чтобы получить собственный IP-адрес для своих подключенных интерфейсов - и получает назначенный адрес, 1.2.3.4вы можете подключиться к этому устройству по адресу 1.2.3.4. И если этот адрес изменится 5.6.7.8на устройстве, с радостью позволит вам подключиться к нему через 5.6.7.8.

0.0.0.0, Кажется, что - то вы обнаружили , но это не является причиной проблемы. Скорее, мое мнение, проблема, которую вы имеете, раскрывается, когда вы заявляете:

«Я обычно общаюсь с системой для устранения неполадок, устанавливая IPv4 IP в том же диапазоне, что и локальный IP, а затем запускаю диагностическое программное обеспечение».

Во-первых, это кажется странным. Зачем вам нужно менять локальный IP-адрес вашей машины для подключения к устройству VxWorks? Разве вы не должны просто подключиться напрямую к IP-адресу устройства?

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

Этот вид «самонастраивающихся» сетевых устройств с нулевой конфигурацией удобен, пока не станет головной болью.

Мое первое предположение заключается в том, что вы можете подключиться к устройству напрямую, если сможете определить, какой IP-адрес ему назначен. И, думая даже больше, я уверен, что причина, по которой вы могли подключиться к нему в прошлом, но не сейчас, может быть связана с некоторыми изменениями в сети, которые заблокировали порты, на которые вещает сетевая настройка устройства с нулевой конфигурацией . Какой это может быть порт? Неуверенный. Но если трафик с нулевой конфигурацией не направляется через сеть, поэтому вы не можете подключиться к устройству, и 0.0.0.0IP-адрес не имеет к нему никакого отношения.

JakeGould
источник
6

0.0.0.0это недоступный адрес. Вы не сможете направить его, потому что «он на самом деле не существует» или «может существовать в слишком многих местах».

Он может иметь несколько разные значения в зависимости от того, является ли он хостом или маршрутом.

В качестве маршрута, который в данном случае неприменим, он означает «маршрут по умолчанию», который без дальнейших инструкций означает либо шлюз по умолчанию, либо «любой из моих маршрутов», либо аналогичный 127.0.0.1

В качестве хоста, то, что наиболее заметно в вашем случае, это либо; как объяснено в Википедии :

Адрес, который хост называет своим собственным, если ему еще не присвоен адрес. Например, при отправке исходного пакета DHCPDISCOVER при использовании DHCP.

Адрес, который хост назначает себе в случае сбоя запроса адреса через DHCP, при условии, что стек IP хоста поддерживает это.

Предполагая, что он обычно использует DHCP, попробуйте несколько вещей, а не полный сброс - «выключите и снова включите» или просто отключите сеть, подождите минуту, подключите его снова. Может потребоваться просто новый DHCP адрес.

Также, конечно, убедитесь, что он действительно может видеть свой DHCP-сервер.

Tetsujin
источник