Come comunicare con un dispositivo a cui è assegnato un indirizzo IP "0.0.0.0"?


20

Ho un equipaggiamento industriale che gira su un sistema operativo piuttosto semplice chiamato VxWorks . Di solito comunico con il sistema a scopo di risoluzione dei problemi impostando il mio IP IPv4 sullo stesso intervallo dell'IP locale e quindi eseguendo il software di diagnostica.

Qualche settimana fa ho scoperto che per qualche strana ragione l'addome IP locale del sistema si è impostato su 0.0.0.0. Ora voglio entrare nella diagnostica per cambiarlo, ma il mio PC non consentirà di impostare un IP a partire da 0.

Esiste un altro modo per comunicare con un dispositivo che dispone di un IP locale per l' 0.0.0.0utilizzo di un PC Windows.

Non è possibile ripristinare le impostazioni predefinite di fabbrica del dispositivo senza rispedirlo al produttore.


14
Come altri affermano 0.0.0.0non è un indirizzo instradabile. Molti software si legano per 0.0.0.0consentire a quel software di legarsi a qualunque indirizzo IP sia assegnato all'interfaccia di rete. Ciò rende più semplice, ad esempio, posizionare il dispositivo su un'impostazione DHCP e ti connetti semplicemente ottenendo l'indirizzo IP del dispositivo e basta. La mia grande domanda per te è perché stai impostando l'IP IPv4 della tua macchina sullo stesso intervallo dell'IP locale per eseguire il software diagnostico? Non ha senso. Dovresti semplicemente ottenere l'indirizzo IP del dispositivo e collegarti a quello. Detto questo, ho un'idea. Pubblicare una risposta.
Jake Gould,

VX Works potrebbe non eseguire DHCP e potrebbe quindi necessitare di un indirizzo IP statico, cosa che dovresti fare internamente su VX Works. Inoltre, qualsiasi software o interfaccia sul PC che comunica con quella macchina VX Works dovrebbe conoscere quell'indirizzo IP. Dovresti verificare che tutti i computer che devono comunicare con il tuo computer VX Works conoscano il suo indirizzo IP. Potrebbe riempirsi automaticamente o potrebbe essere necessario inserirlo manualmente. L'indirizzo all-0s funziona come gateway predefinito, tuttavia, se la tua macchina VX Works e il tuo host con cui vuole parlare hanno entrambi quel gateway in comune.
Shankensteinium,

7
Come hai potuto determinare se il dispositivo utilizza un indirizzo IP 0.0.0.0? Hai utilizzato un software in grado di comunicare con il dispositivo in rete o sul dispositivo è presente un'interfaccia uomo-macchina (HMI) di base per mostrarti l'indirizzo IP? Inoltre, per togliere l'ovvia domanda, hai provato a spegnerlo e riaccenderlo per vedere se prende un indirizzo sano?
Sam Skuce,

5
L'assegnazione automatica dell'indirizzo 0.0.0.0non è possibile se ha uno stack IP conforme agli standard. Questo lascia un paio di opzioni: 1. Mostra 0.0.0.0come un modo per segnalare che non è stato possibile assegnare un indirizzo IP. 2. Ha uno stack IP rotto che in qualche modo è riuscito ad assegnarsi 0.0.0.0. Non so abbastanza su VxWorks per dire quale dei due è più probabile. Se gli è stato assegnato un indirizzo 0.0.0.0, avresti bisogno di uno stack IP compromesso per comunicare con esso. Ma questo non farà molto bene se non ha affatto assegnato un indirizzo.
Kasperd,

4
Come hai stabilito che ha un indirizzo IP 0.0.0.0? Se sei in un terminale, puoi usarlo per impostare l'IP.
CramerTV,

Risposte:


23

0.0.0.0non è un indirizzo IP valido. RFC1700 (a) afferma che 0.0.0.0/8( 0.anything.anything.anything) è riservato solo come indirizzo di origine.

Normalmente vedrai sistemi e applicazioni associare le porte a 0.0.0.0ciò significa che la porta è accessibile da qualsiasi interfaccia.

Non ho familiarità con VxWrks ma suppongo che ci sia un modo per specificare un IP locale per l'interfaccia con altri dispositivi del computer.

WindRiver ha una varietà di manuali su come configurare la configurazione IP.


Se 0.0.0.0è valido solo come sorgente , come possono le porte essere 0.0.0.0accessibili? Sono sicuro che mi manca un dettaglio, ma sembra una contraddizione.
Captain Man,

20
@CaptainMan: stai confondendo un aspetto dell'API socket con un aspetto del protocollo IP . Il bind 0.0.0.0è una cosa a livello di API per accettare pacchetti / connessioni indirizzate a qualsiasi indirizzo configurato localmente. Non comporta pacchetti indirizzati a 0.0.0.0viaggiare ovunque a livello di protocollo.
R ..

1
@CaptainMan: 0.0.0.0viene trattato come una stringa vuota. Se configuri il tuo server per accettare connessioni da 0.0.0.0allora accetterà connessioni da qualsiasi indirizzo IP - questo è ciò che 0.0.0.0significa. Se non si esegue il binding, 0.0.0.0il server accetterà SOLO le connessioni da un singolo indirizzo IP e rifiuterà le connessioni da qualsiasi altra macchina della rete. Pensa
all'associazione

13

Puoi indurre il tuo PC a pensare che il dispositivo abbia un indirizzo IP reale. Ma hai bisogno dell'indirizzo fisico (noto anche come indirizzo MAC), il cosy con 6 campi a due cifre esadecimali. Puoi farlo aggiungendolo alla tua tabella di risoluzione arp. In Windows, apri un terminale cmd e usa arp.

arp -s <IP address> <physical address>

Naturalmente, è necessario un indirizzo IP univoco e nella propria rete. Altrimenti, lo stack verrà reindirizzato da qualche altra parte. Se arrivi a questo punto, dovresti essere in grado di accedere al dispositivo. L'infrastruttura di rete verrà instradata in base all'indirizzo fisico.

In Linux è praticamente lo stesso. Apri un terminale, usa arp.

Potrebbe non funzionare !! Alcuni dispositivi rispondono solo al proprio IP. Ma suppongo che non sia il tuo caso.


1
Sono interessato a sapere se funziona. Sicuramente un bel trucco.
Trognandro

@BaileyS oh funziona bene in circostanze normali. Basta inserire una sostituzione manuale per la risoluzione dell'indirizzo in una tabella automatica. Se sarà d'aiuto è una domanda diversa
Gnudiff,

2
Se ora puoi INVIARE roba a questo indirizzo, ciò non significa sempre che puoi gestire correttamente la RISPOSTA se ce n'è uno ...
Rackandboneman,

1
La maggior parte di iptables è al di sopra del macchinario di routing di livello più basso, quindi potrebbe avere un accesso limitato a quel tipo di lavori ...
rackandboneman

1
@BaileyS Lo fa e non lo fa. Un dispositivo con un normale stack IP non dovrebbe. La tabella delle rotte ignorerà gli indirizzi dei pacchetti verso numeri IP diversi dalla propria o che non sa come instradare. In questo caso, l'OP chiede un piccolo dispositivo industriale. Molto probabilmente, non ha uno stack IP implementato. Risponde a qualsiasi pacchetto che lo raggiunge. Lo so perché ne ho visti e usati molti in quel modo. Per risparmiare sui costi, non hanno un pannello o un'interfaccia per la configurazione. È sufficiente inviare loro un pacchetto con un IP "suggerito" corrispondente all'indirizzo MAC.
Gabe Mizuka,

12

L' 0.0.0.0indirizzo IP va bene ma immagino che qualcos'altro sia cambiato sulla rete su quel dispositivo per bloccare il traffico di rete a configurazione zero dal consentire al tuo software diagnostico di connettersi facilmente a quel dispositivo.

Come altri, nella loro risposta 0.0.0.0è indicato un indirizzo IP non instradabile che viene spesso utilizzato dal software per associare qualsiasi indirizzo IP su tutte le interfacce di rete su un dispositivo. Ciò significa sostanzialmente:

"Ehi, sono un pezzo di software e accetterò qualsiasi connessione stabilita a qualsiasi indirizzo IP assegnato sulla macchina su cui sono in esecuzione."

Pertanto, se il dispositivo utilizza DHCP, per ottenere il proprio indirizzo IP per le interfacce connesse, e ottiene un indirizzo assegnato, 1.2.3.4è possibile connettersi a quel dispositivo all'indirizzo 1.2.3.4. E se quell'indirizzo cambia al 5.6.7.8dispositivo ti consentirà felicemente di collegarti tramite 5.6.7.8.

L' 0.0.0.0sembra essere qualcosa che hai scoperto, ma non è la causa del problema. Piuttosto, sono la mia opinione, il problema che hai è rivelato quando dichiari:

"Di solito comunico con il sistema a scopo di risoluzione dei problemi impostando il mio IP IPv4 sullo stesso intervallo dell'IP locale e quindi eseguendo il software di diagnostica."

Innanzitutto, sembra strano. Perché dovresti cambiare l'indirizzo IP locale della tua macchina per connetterti al dispositivo VxWorks? Non dovresti semplicemente connetterti direttamente all'indirizzo IP del dispositivo?

Bene, quando affermi tutto ciò a cui riesco a pensare è che il dispositivo - e il software diagnostico - potrebbero funzionare usando una sorta di configurazione di rete a configurazione zero . Ciò significa che il dispositivo trasmette sulla rete e il software diagnostico è progettato per cercare queste trasmissioni del dispositivo per aiutarlo a connettersi al dispositivo senza conoscere l'indirizzo IP esatto.

Questo tipo di roba di rete "autoconfigurante" a configurazione zero è una comodità fino a quando non diventa un mal di testa.

La mia prima ipotesi è che è possibile connettersi direttamente al dispositivo se è possibile determinare quale indirizzo IP gli è stato assegnato. E pensando ancora di più, scommetto che il motivo per cui potresti connetterti in passato, ma non ora, potrebbe avere a che fare con alcune modifiche di rete che hanno bloccato le porte su cui sta trasmettendo la configurazione di rete a configurazione zero del dispositivo . Quale porta potrebbe essere? Incerto. Ma se il traffico a configurazione zero non viene instradato attraverso la rete, è per questo che non è possibile connettersi al dispositivo e l' 0.0.0.0indirizzo IP non ha nulla a che fare con esso.


6

0.0.0.0è un indirizzo irrinunciabile. Non è possibile instradarlo perché "non esiste davvero", o in realtà, "può esistere in troppi luoghi".

Può avere significati leggermente diversi a seconda che si tratti di un host o di un percorso.

Come route, che non è applicabile in questo caso, significa "route predefinita" che senza ulteriori istruzioni indica il gateway predefinito o "una qualsiasi delle mie route" o simile a 127.0.0.1

Come host, in particolare nel tuo caso, lo è anche; come spiegato su Wikipedia :

L'indirizzo che un host rivendica come proprio quando non gli è stato ancora assegnato un indirizzo. Ad esempio quando si invia il pacchetto DHCPDISCOVER iniziale quando si utilizza DHCP.

L'indirizzo assegnato da un host a se stesso quando la richiesta dell'indirizzo tramite DHCP non è riuscita, a condizione che lo stack IP dell'host lo supporti.

Supponendo che di solito usi DHCP, un paio di cose da provare, piuttosto che un ripristino completo: "spegnilo e riaccendilo" o semplicemente scollega la rete, aspetta un minuto, ricollegalo. Potrebbe semplicemente chiedere un nuovo DHCP indirizzo.

Inoltre, ovviamente, assicurati che possa effettivamente vedere il suo server DHCP.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.