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

7441
Pablo Gonzalez

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

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

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

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

20
Как утверждают другие, `0.0.0.0` не является маршрутизируемым адресом. Многие части программного обеспечения привязываются к `0.0.0.0`, чтобы позволить этому программному обеспечению привязываться к любому IP-адресу, назначенному сетевому интерфейсу. Это облегчает, например, установку устройства на настройку DHCP, и вы просто подключаетесь, получая IP-адрес устройства, и все. Мой большой вопрос к вам заключается в том, почему вы устанавливаете IPv4 IP вашей машины в том же диапазоне, что и локальный IP, чтобы затем запускать диагностическое программное обеспечение? Не имеет смысла. Вы должны просто получить IP-адрес устройства и подключиться к нему. Тем не менее, у меня есть идея. Выкладываю ответ. JakeGould 6 лет назад 14
VX Works может не запускать DHCP и, следовательно, может потребоваться статический IP-адрес, что вам придется делать внутри VX Works. Кроме того, любое программное обеспечение или интерфейсы на вашем ПК, которые взаимодействуют с этим компьютером VX Works, должны знать этот IP-адрес. Вам необходимо убедиться, что все машины, которым необходимо общаться с вашим компьютером VX Works, знают его IP-адрес. Он может заполняться автоматически, или вам, возможно, придется вводить его вручную. Адрес all-0s работает как шлюз по умолчанию, однако, если ваш VX Works machine и ваш хост, с которым он хочет обмениваться данными, имеют общий шлюз. Shankensteinium 6 лет назад 0
Как вы смогли определить, что устройство использует IP-адрес 0.0.0.0? Использовали ли вы какое-либо программное обеспечение, которое могло взаимодействовать с устройством по сети, или на устройстве есть базовый человеко-машинный интерфейс (HMI) для отображения IP-адреса? Кроме того, чтобы убрать очевидный вопрос, пытались ли вы отключить его, а затем снова включить, чтобы увидеть, не обнаруживает ли он вменяемый адрес? Sam Skuce 6 лет назад 7
Буквально присвоить себе адрес `0.0.0.0` невозможно, если он имеет совместимый со стандартами стек IP. Это оставляет пару опций: ** 1. ** Он показывает `0.0.0.0` как способ указать, что ему не удалось назначить IP-адрес. ** 2. ** У него поврежденный стек IP, который каким-то образом сумел присвоить себя 0.0.0.0. Я не знаю достаточно о VxWorks, чтобы сказать, какой из двух наиболее вероятен. Если ему действительно присвоен адрес `0.0.0.0`, вам понадобится взломанный стек IP для связи с ним. Но это не принесет много пользы, если он вообще не назначил адрес. kasperd 6 лет назад 5
Как вы определили, что он имеет 0.0.0.0 IP-адрес? Если вы находитесь в терминале, вы можете использовать это для установки IP. CramerTV 6 лет назад 4
Вы можете попробовать установить свой IP-адрес на `1.2.3.4 / 1`. Это помещает вас в сеть `0 / 1`. Но а) можно догадаться, что это устройство считает маской подсети; б) попытка подключиться к `0.0.0.0` скорее всего не удастся. Я второй @CramerTV, откуда вы знаете, что IP равен 0.0.0.0? Есть ли какой-то другой интерфейс, который позволяет устанавливать IP? Кроме того, не будет ли случай, когда устройство использует DHCP для получения своего адреса, и процесс завершился неудачно в прошлую загрузку? Попробуйте принудительное продление аренды DHCP или перезагрузите устройство, если это так. jcaron 6 лет назад 0
@Shankensteinium Я столкнулся с этим несколько лет назад. Тогда он мог использовать DHCP, но установщики часто не доверяли ему и жестко закодировали IP-адреса (а те, с которыми я имел дело, делали это без разговоров с администраторами сети) Chris H 6 лет назад 0
Возможно, сервер DHCP в этой сети вышел из строя. Убедитесь, что DHCP-сервер действительно работает, подключив ноутбук к этому кабелю Ethernet для тестирования. Если ваш ноутбук не получает IP-адрес через DHCP, то и машина VxWorks тоже не будет. rjt 6 лет назад 0

4 ответа на вопрос

23
Hogstrom

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

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

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

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

Если `0.0.0.0` допустимо только как * source *, то как вообще порты, связанные с` 0.0.0.0`, доступны? Я уверен, что мне не хватает детали, но это звучит как противоречие. Captain Man 6 лет назад 0
@CaptainMan: вы путаете аспект * сокетов API * с аспектом * протокола IP *. Привязка `0.0.0.0` - это функция уровня API для приема пакетов / соединений, адресованных на любой локально настроенный адрес. Он не включает пакеты, адресованные «0.0.0.0», путешествующим где-либо на уровне протокола. R.. 6 лет назад 20
@CaptainMan: `0.0.0.0` обрабатывается как пустая строка. Если вы настроили свой сервер на прием соединений от «0.0.0.0», то он будет принимать соединения с ** любого IP-адреса ** - вот что означает «0.0.0.0». Если вы не связываетесь с `0.0.0.0`, то ваш сервер будет принимать соединения ТОЛЬКО с одного IP-адреса и будет отклонять соединения с любых других компьютеров в сети. Думайте о привязке не-0.0.0.0 как о встроенном брандмауэре slebetman 6 лет назад 1
13
Gabe Mizuka

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

arp -s <IP address> <physical address> 

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

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

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

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

С 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-адрес не имеет к нему никакого отношения.

6
Tetsujin

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

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

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

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

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

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

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

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