Comment communiquer avec un appareil auquel une adresse IP «0.0.0.0» est attribuée?

20

J'ai un équipement industriel qui fonctionne sur un système d'exploitation assez basique appelé VxWorks . Je communique généralement avec le système à des fins de dépannage en définissant mon IP IPv4 sur la même plage que l'IP local, puis en exécutant un logiciel de diagnostic.

Il y a quelques semaines, j'ai constaté que, pour une raison étrange, l'adresse IP locale du système se fixait 0.0.0.0. Maintenant, je veux entrer dans les diagnostics pour le changer mais mon PC ne permettra pas de définir une adresse IP à partir de 0.

Existe-t-il un autre moyen de communiquer avec un appareil doté d'une adresse IP locale 0.0.0.0utilisant un PC Windows?

Il n'y a aucun moyen de réinitialiser l'appareil aux paramètres par défaut sans le renvoyer au fabricant.

Pablo Gonzalez
la source
14
Comme d'autres disent, ce 0.0.0.0n'est pas une adresse routable. De nombreux logiciels se lient à 0.0.0.0pour permettre à ce logiciel de se lier à l'adresse IP attribuée à l'interface réseau. Cela facilite, par exemple, pour placer l'appareil sur un paramètre DHCP et vous vous connectez simplement en obtenant l'adresse IP de l'appareil et c'est tout. Ma grande question est de savoir pourquoi vous définissez l'IP IPv4 de votre machine sur la même plage que l'IP locale pour exécuter ensuite un logiciel de diagnostic? Ça n'a aucun sens. Vous devez simplement obtenir l'adresse IP de l'appareil et vous y connecter. Cela dit, j'ai une idée. Publier une réponse.
JakeGould
VX Works peut ne pas exécuter DHCP et peut donc avoir besoin d'une adresse IP statique, ce que vous devrez faire en interne sur VX Works. En plus de cela, tout logiciel ou interface sur votre PC qui communique avec cette machine VX Works devrait connaître cette adresse IP. Vous devez vérifier que toutes les machines qui doivent parler à votre machine VX Works connaissent son adresse IP. Il peut se remplir automatiquement ou vous devrez peut-être l'entrer manuellement. L'adresse all-0s fonctionne comme une passerelle par défaut, cependant, si votre machine VX Works et votre hôte avec lequel elle veut parler ont cette passerelle en commun.
Shankensteinium
7
Comment avez-vous pu déterminer que l'appareil utilise une adresse IP de 0.0.0.0? Avez-vous utilisé un logiciel capable de communiquer avec l'appareil via le réseau, ou y a-t-il une interface homme-machine (IHM) de base sur l'appareil pour vous montrer l'adresse IP? De plus, pour éliminer la question évidente, avez-vous essayé de la désactiver puis de la rallumer pour voir si elle prend une adresse saine?
Sam Skuce
5
S'attribuer littéralement une adresse 0.0.0.0n'est pas possible s'il a une pile IP conforme aux normes. Cela laisse quelques options: 1. Il montre 0.0.0.0comme un moyen de signaler qu'il n'a pas réussi à attribuer une adresse IP. 2. Il a une pile IP cassée qui s'est en quelque sorte débrouillé 0.0.0.0. Je ne connais pas suffisamment VxWorks pour dire lequel des deux est le plus probable. S'il a vraiment attribué une adresse, 0.0.0.0vous auriez besoin d'une pile IP piratée pour communiquer avec elle. Mais cela ne fera pas beaucoup de bien s'il n'a pas du tout attribué d'adresse.
kasperd
4
Comment avez-vous déterminé qu'il a une adresse IP 0.0.0.0? Si vous êtes sur un terminal, vous pouvez l'utiliser pour définir l'IP.
CramerTV

Réponses:

23

0.0.0.0n'est pas une adresse IP valide. RFC1700 (a) indique que 0.0.0.0/8( 0.anything.anything.anything) est réservé comme adresse source uniquement.

Normalement, vous verrez des systèmes et des applications lier des ports à 0.0.0.0ce qui signifie que le port est accessible à partir de n'importe quelle interface.

Je ne connais pas VxWrks mais je suppose qu'il existe un moyen de spécifier une adresse IP locale pour l'interfaçage avec d'autres périphériques informatiques.

WindRiver a une variété de manuels sur la façon de configurer la configuration IP.

Hogstrom
la source
Si 0.0.0.0est uniquement valide en tant que source , comment les ports sont-ils liés 0.0.0.0à tous? Je suis sûr qu'il me manque un détail mais cela ressemble à une contradiction.
Captain Man
20
@CaptainMan: vous confondez un aspect de l' API sockets avec un aspect du protocole IP . La liaison 0.0.0.0est une chose au niveau de l'API pour accepter des paquets / connexions adressés à n'importe quelle adresse configurée localement. Il n'implique pas de paquets destinés à 0.0.0.0voyager n'importe où au niveau du protocole.
R ..
1
@CaptainMan: 0.0.0.0est traité comme une chaîne vide. Si vous configurez votre serveur pour accepter les connexions à partir de 0.0.0.0là, il acceptera les connexions à partir de n'importe quelle adresse IP - c'est ce que cela 0.0.0.0signifie. Si vous ne vous 0.0.0.0connectez pas à votre serveur, alors votre serveur n'acceptera que les connexions à partir d'une seule adresse IP et refusera les connexions de toutes les autres machines du réseau. Considérez la liaison non 0.0.0.0 comme une sorte de pare-feu
intégré
13

Vous pouvez faire croire à votre PC que l'appareil a une véritable adresse IP. Mais vous avez besoin de l'adresse physique (également connue sous le nom d'adresse MAC), le truc avec 6 champs à deux chiffres. Vous faites cela en l'ajoutant à votre table de résolution d'arp. Sous Windows, ouvrez un terminal cmd et utilisez arp.

arp -s <IP address> <physical address>

Bien sûr, vous avez besoin d'une adresse IP unique et dans votre réseau. Sinon, la pile va être redirigée ailleurs. Si vous arrivez à ce point, vous devriez pouvoir accéder à l'appareil. L'infrastructure réseau sera acheminée en fonction de l'adresse physique.

Sous Linux, c'est à peu près la même chose. Ouvrez un terminal, utilisez arp.

Cela peut ne pas fonctionner !! Certains appareils ne répondent qu'à leur propre IP. Mais je suppose que ce n'est pas votre cas.

Gabe Mizuka
la source
1
Je suis intéressé de savoir si cela fonctionne. Certainement un truc cool.
trognanders
@BaileyS oh cela fonctionne très bien dans des circonstances normales. Vous venez d'insérer un remplacement manuel pour la résolution d'adresse dans une table automatique. Que cela puisse aider op est une question différente
Gnudiff
2
Si vous pouvez maintenant ENVOYER des trucs à cette adresse, cela ne signifie pas toujours que vous pouvez gérer correctement la RÉPONSE s'il y en a une ...
rackandboneman
1
La plupart des iptables sont au-dessus des machines de routage de niveau le plus bas, donc pourraient avoir un accès limité à ce genre de travaux ...
rackandboneman
1
@BaileyS Oui et non. Un appareil avec une pile IP normale ne devrait pas. La table de routage va ignorer les adresses de paquets vers des numéros IP autres que les leurs ou qu'elle ne sait pas comment router. Dans ce cas, l'OP pose des questions sur un petit appareil industriel. Très probablement, il n'a pas de pile IP implémentée. Il répond simplement à n'importe quel paquet qui l'atteint. Je le sais parce que j'en ai vu et utilisé beaucoup comme ça. Pour réduire les coûts, ils n'ont pas de panneau ou d'interface pour la configuration. Leur envoyer un paquet avec une adresse IP "suggérée" correspondant à l'adresse MAC suffit.
Gabe Mizuka
12

L' 0.0.0.0adresse IP est correcte, mais je suppose que quelque chose d'autre a changé sur le réseau sur lequel l'appareil se trouve pour empêcher le trafic réseau à configuration zéro de permettre à votre logiciel de diagnostic de se connecter facilement à cet appareil.

Comme d'autres, l'état dans leur réponse 0.0.0.0est une adresse IP non routable qui est souvent utilisée par le logiciel pour se lier à n'importe quelle adresse IP sur toutes les interfaces réseau d'un appareil. Cela signifie essentiellement:

"Hé, je suis un logiciel et j'accepte toute connexion établie avec n'importe quelle adresse IP attribuée sur la machine sur laquelle je tourne."

Donc, si le périphérique utilise DHCP - pour obtenir sa propre adresse IP pour ses interfaces connectées - et obtient une adresse attribuée, 1.2.3.4vous pouvez vous connecter à ce périphérique à l' adresse 1.2.3.4. Et si cette adresse change de 5.6.7.8périphérique, il vous permettra de vous connecter via 5.6.7.8.

Le 0.0.0.0semble être quelque chose que vous avez découvert mais n'est pas la cause du problème. Je suis plutôt d'avis que le problème que vous rencontrez est révélé lorsque vous déclarez:

«Je communique généralement avec le système à des fins de dépannage en définissant mon IP IPv4 sur la même plage que l'IP local, puis en exécutant un logiciel de diagnostic.»

Tout d'abord, cela semble étrange. Pourquoi auriez-vous besoin de changer l'adresse IP locale de votre machine pour vous connecter au périphérique VxWorks? Ne devriez-vous pas simplement vous connecter directement à l'adresse IP de l'appareil?

Eh bien, quand vous dites cela, tout ce à quoi je peux penser, c'est que l'appareil - et le logiciel de diagnostic - peuvent fonctionner en utilisant une sorte de configuration réseau à configuration zéro . Autrement dit, l'appareil diffuse sur le réseau et le logiciel de diagnostic est conçu pour rechercher ces émissions pour l'aider à se connecter à l'appareil sans connaître l'adresse IP exacte.

Ce type de mise en réseau à configuration zéro «auto-configurable» est pratique jusqu'à ce qu'il devienne un casse-tête.

Ma première supposition est que vous pouvez vous connecter directement à l'appareil si vous pouvez déterminer quelle adresse IP lui a été attribuée. Et en réfléchissant encore plus, je parie que la raison pour laquelle vous pouviez vous y connecter dans le passé - mais pas maintenant - pourrait avoir à voir avec un changement de réseau qui a bloqué les ports sur lesquels la configuration réseau à configuration zéro de l'appareil diffuse. Quel port cela peut être? Incertain. Mais si le trafic à configuration zéro n'est pas acheminé via le réseau, c'est pourquoi vous ne pouvez pas vous connecter à l'appareil et l' 0.0.0.0adresse IP n'a rien à voir avec cela.

JakeGould
la source
6

0.0.0.0est une adresse non routable. Il n'y a aucun moyen d'y accéder car "il n'existe pas vraiment", ou en fait "peut exister dans trop d'endroits".

Il peut avoir des significations légèrement différentes selon qu'il s'agit d'un hôte ou d'un itinéraire.

En tant qu'itinéraire, qui n'est pas applicable dans ce cas, cela signifie "itinéraire par défaut" qui, sans autre instruction, signifie soit la passerelle par défaut, soit "l'un de mes itinéraires", ou similaire à 127.0.0.1

En tant qu'hôte, puis plus particulièrement dans votre cas, c'est soit; comme expliqué sur Wikipédia :

L'adresse qu'un hôte revendique comme étant la sienne lorsqu'il n'a pas encore reçu d'adresse. Comme lors de l'envoi du paquet DHCPDISCOVER initial lors de l'utilisation de DHCP.

L'adresse qu'un hôte s'attribue à lui-même lorsque la demande d'adresse via DHCP a échoué, à condition que la pile IP de l'hôte le prenne en charge.

En supposant qu'il utilise généralement DHCP, plusieurs choses à essayer, plutôt qu'une réinitialisation complète - «éteignez-le et rallumez-le» ou débranchez simplement le réseau, attendez une minute, rebranchez-le. Il pourrait simplement demander un nouveau DHCP adresse.

Bien sûr, assurez-vous également qu'il peut réellement voir son serveur DHCP.

Tetsujin
la source