Як спілкуватися з пристроєм, якому призначена IP-адреса "0.0.0.0"?


20

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

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

Чи є якийсь інший спосіб зв’язатися з пристроєм, який має локальну IP-адресу 0.0.0.0використання Windows PC.

Немає можливості відновити пристрій до заводських налаштувань за замовчуванням без доставки його назад до виробника.


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-0 працює як шлюз за замовчуванням, однак якщо ваша машина 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 для спілкування з ним. Але це не принесе багато користі, якщо він взагалі не призначив адресу.
kasperd

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.


Якщо 0.0.0.0він дійсний лише як джерело , то як порти пов'язані з 0.0.0.0доступними взагалі? Я впевнений, що мені не вистачає деталі, але це звучить як суперечність.
Капітан Людина

20
@CaptainMan: Ви плутаєте аспект API сокетів з аспектом протоколу IP . Прив'язка 0.0.0.0- це річ на рівні API, щоб приймати пакети / з'єднання, адресовані до будь-якої локально налаштованої адреси. Він не включає пакети, адресовані 0.0.0.0подорожам кудись на рівні протоколу.
Р ..

1
@CaptainMan: 0.0.0.0трактується як порожній рядок. Якщо ви налаштуєте сервер на прийняття з'єднань, 0.0.0.0він прийме з'єднання з будь-якої IP-адреси - ось що 0.0.0.0означає. Якщо ви не пов'язуєтесь із 0.0.0.0цим, ваш сервер ТІЛЬКИ прийме з'єднання з однієї IP-адреси та відмовить у з'єднанні з будь-яких інших машин у мережі. Подумайте, що не 0.0.0.0 прив'язування є свого роду вбудованим брандмауером
slebetman

13

Ви можете обдурити комп'ютер, якщо він думає, що на пристрої справжня IP-адреса. Але вам потрібна фізична адреса (також відома як MAC-адреса), штучка з 6 двошаровими полями. Ви робите це, додаючи його до таблиці роздільної здатності арп. У Windows відкрийте термінал cmd та використовуйте arp.

arp -s <IP address> <physical address>

Звичайно, вам потрібна унікальна IP-адреса та у вашій мережі. Інакше стек збирається перепрограмувати десь ще. Якщо ви дістанетесь до цього моменту, ви повинні мати доступ до пристрою. Мережева інфраструктура здійснюватиме маршрутизацію відповідно до фізичної адреси.

У Linux майже все те саме. Відкрийте термінал, використовуйте arp.

Це може не працювати !! Деякі пристрої відповідають лише на власний IP. Але я здогадуюсь, що це не ваш випадок.


1
Мені цікаво знати, чи працює це. Однозначно крутий трюк.
трогнандри

@BaileyS о, це працює нормально в нормальних умовах. Ви просто вставляєте в автоматичну таблицю ручне перевизначення для вирішення адреси. Чи допоможе це op - це інше питання
Gnudiff

2
Якщо ви тепер можете надіслати речі на цю адресу, це не завжди означає, що ви можете правильно
попрацювати

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, Здається, що - то ви виявили , але це не є причиною проблеми. Швидше, на мою думку, питання, яке ви виникли, виявляється, коли ви заявляєте:

"Я зазвичай спілкуюсь із системою для усунення несправностей, встановлюючи IP-адресу IPv4 на той самий діапазон, що і локальний IP, а потім запускаю діагностичне програмне забезпечення"

По-перше, це здається дивним. Чому вам потрібно змінити локальну IP-адресу вашого пристрою, щоб підключитися до пристрою VxWorks? Ви не повинні просто підключитися безпосередньо до IP-адреси пристрою?

Ну, коли ви заявляєте це все, що я можу придумати, - це те, що пристрій - і діагностичне програмне забезпечення - можуть працювати, використовуючи якусь мережеву настройку нульової конфігурації . Це означає, що пристрій транслює в мережі, а діагностичне програмне забезпечення призначене для пошуку цих трансляцій пристрою, щоб допомогти йому підключитися до пристрою, не знаючи точної IP-адреси.

Цей тип «самонастроювання» мережевих матеріалів з нульовою конфігурацією є зручністю, поки не стане головним болем.

Перший мій припущення полягає в тому, що ви можете підключитися безпосередньо до пристрою, якщо зможете визначити, яку IP-адресу він призначив йому. Думаючи ще більше, я думаю, що причина, по якій ви могли підключитися до нього в минулому, але не зараз, може бути пов’язана з деякими змінами в мережі, що заблокували порти, на яких транслюється налаштування мережі нульової конфігурації пристрою . Який порт може бути? Невпевнені. Але якщо трафік з нульовою конфігурацією не проходить через мережу, то тому ви не можете підключитися до пристрою, і 0.0.0.0IP-адреса не має нічого спільного.


6

0.0.0.0- це беззаперечна адреса. Немає способу проїхати до нього, оскільки "він насправді не існує", або насправді "може існувати в занадто багатьох місцях".

Він може мати дещо різні значення, залежно від того, хост або маршрут.

Як маршрут, який не застосовується в цьому випадку, він означає "маршрут за замовчуванням", який без подальшої інструкції не означає ні шлюз за замовчуванням, ні "будь-який з моїх маршрутів", або подібний до 127.0.0.1

Що стосується господаря, то, головне, у вашому випадку це чи то; як пояснено у Вікіпедії :

Адреса, яку хост вважає власною, коли ще не була призначена адреса. Наприклад, при відправці початкового пакета DHCPDISCOVER при використанні DHCP.

Адреса, яку хост призначає собі, коли запит адреси через DHCP не вдався, за умови, що IP стек хоста підтримує це.

Припустимо, що зазвичай використовується DHCP, кілька речей для спробу, а не повне скидання - "вимкніть його і знову ввімкніть" або просто відключіть мережу, зачекайте хвилину, підключіть її назад. Це може просто попросити новий DHCP адреса.

Крім того, переконайтеся, що він дійсно бачить свій DHCP-сервер.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.