Como se comunicar com um dispositivo que tenha um endereço IP “0.0.0.0” atribuído?

20

Eu tenho um equipamento industrial que roda em um sistema operacional básico chamado VxWorks . Geralmente, comunico-me com o sistema para fins de solução de problemas, configurando meu IP IPv4 para o mesmo intervalo do IP local e, em seguida, executando o software de diagnóstico.

Algumas semanas atrás, descobri que, por alguma razão estranha, o endereço IP local do sistema se estabeleceu 0.0.0.0. Agora eu quero entrar em diagnósticos para alterá-lo, mas meu PC não permitirá a configuração de um IP começando em 0.

Existe outra maneira de se comunicar com um dispositivo que tenha um IP local de 0.0.0.0 usando um PC com Windows.

Não há como redefinir o dispositivo para as configurações padrão de fábrica sem enviá-lo de volta ao fabricante.

Pablo Gonzalez
fonte
14
Como outros afirmam 0.0.0.0 não é um endereço roteável. Muitas peças de software se ligam a 0.0.0.0 permitir que o software seja vinculado a qualquer endereço IP atribuído à interface de rede. Isso facilita, por exemplo, colocar o dispositivo em uma configuração de DHCP e você se conecta obtendo o endereço IP do dispositivo e é isso. Minha grande pergunta para você é por que você está definindo o IP IPv4 da sua máquina para o mesmo intervalo que o IP local para executar o software de diagnóstico? Não faz sentido. Você deve apenas obter o endereço IP do dispositivo e se conectar a ele. Dito isso, tenho uma ideia. Postando uma resposta.
JakeGould
O VX Works pode não executar o DHCP e, portanto, pode precisar de um endereço IP estático, algo que você teria que fazer internamente no VX Works. Além disso, qualquer software ou interfaces no seu PC que falem com essa máquina do VX Works teriam que saber esse endereço IP. Você teria que verificar se todas as máquinas que precisam falar com sua máquina do VX Works conhecem seu endereço IP. Ele pode ser preenchido automaticamente ou você pode precisar inseri-lo manualmente. O endereço todo-0 funciona como um gateway padrão, no entanto, se sua máquina do VX Works e seu host quiserem conversar, ambos terão esse gateway em comum.
Shankensteinium
7
Como você conseguiu determinar se o dispositivo está usando um endereço IP de 0.0.0.0? Você usou algum software capaz de se comunicar com o dispositivo pela rede ou há uma interface homem-máquina (IHM) básica no dispositivo para mostrar o endereço IP? Além disso, para tirar a questão óbvia do caminho, você já tentou desligá-la e ligá-la novamente para ver se ela pega um endereço são?
Sam Skuce
5
Literalmente atribuindo-se endereço 0.0.0.0 não é possível se tiver uma pilha IP compatível com os padrões. Isso deixa algumas opções: 1 Isto mostra 0.0.0.0 como uma forma de sinalizar que não foi possível atribuir um endereço IP. 2 Tem uma pilha IP quebrada que de alguma forma conseguiu se auto-atribuir 0.0.0.0. Eu não sei o suficiente sobre o VxWorks para dizer qual dos dois é mais provável. Se realmente tiver endereço atribuído 0.0.0.0 você precisaria de uma pilha IP hackeada para se comunicar com ela. Mas isso não fará muito bem se não tiver atribuído nenhum endereço.
kasperd
4
Como você determinou que tem um endereço IP 0.0.0.0? Se você estiver em um terminal, poderá usá-lo para definir o IP.
CramerTV

Respostas:

23

0.0.0.0 não é um endereço IP válido. RFC1700 (a) afirma que 0.0.0.0/8 ( 0.anything.anything.anything ) é reservado apenas como endereço de origem.

Normalmente, você verá sistemas e aplicativos vinculando portas a 0.0.0.0 o que significa que a porta é acessível a partir de qualquer interface.

Eu não estou familiarizado com o VxWrks, mas eu diria que existe uma maneira de especificar um IP local para fazer a interface com outros dispositivos de computador.

O WindRiver tem uma variedade de manuais sobre como configurar o IP.

Hogstrom
fonte
E se 0.0.0.0 é válido apenas como fonte , então, como as portas estão ligadas a 0.0.0.0 acessível a todos? Tenho certeza que estou perdendo um detalhe, mas isso parece uma contradição.
Captain Man
20
@CaptainMan: Você está confundindo um aspecto do API sockets com um aspecto do Protocolo IP . Obrigatório 0.0.0.0 é uma coisa no nível da API para aceitar pacotes / conexões endereçadas a qualquer endereço configurado localmente. Não envolve pacotes endereçados a 0.0.0.0 viajando para qualquer lugar no nível do protocolo.
R..
1
@CaptainMan: 0.0.0.0 é tratado como uma string vazia. Se você configurar seu servidor para aceitar conexões de 0.0.0.0 então ele vai aceitar conexões de qualquer endereço IP - isso é o que 0.0.0.0 significa. Se você não se liga a 0.0.0.0 então, seu servidor APENAS aceitará conexões de um único endereço IP e recusará conexões de quaisquer outras máquinas na rede. Pense na ligação não-0.0.0.0 como uma espécie de firewall embutido
slebetman
13

Você pode enganar o seu PC para pensar que o dispositivo tem um endereço IP real. Mas você precisa do endereço físico (também conhecido como o endereço MAC), o thingy com 6 campos de dois hexa- dígitos. Você faz isso adicionando-o à sua tabela de resolução de arp. No Windows, abra um terminal cmd e use arp.

arp -s <IP address> <physical address>

Claro, você precisa de um endereço IP único e em sua rede. Caso contrário, a pilha irá redirecionar para outro local. Se você chegar a este ponto, você deve ser capaz de acessar o dispositivo. A infraestrutura de rede será roteada de acordo com o endereço físico.

No Linux é praticamente o mesmo. Abra um terminal, use arp.

Pode não funcionar !! Alguns dispositivos respondem apenas ao seu próprio IP. Mas eu estou supondo que não é o seu caso.

Gabe Mizuka
fonte
1
Estou interessado em saber se isso funciona. Definitivamente um truque legal.
trognanders
@BaileyS oh funciona tudo bem em circunstâncias normais. Basta inserir uma substituição manual para resolução de endereço em uma tabela automática. Se vai ajudar op é uma questão diferente
Gnudiff
2
Se você pode agora ENVIAR coisas para este endereço, isso nem sempre significa que você pode lidar corretamente com a RESPOSTA se houver uma ...
rackandboneman
1
A maioria dos iptables está acima do maquinário de roteamento de menor nível, então pode ter acesso limitado a esse tipo de trabalho ...
rackandboneman
1
@BaileyS Ele faz e não faz. Um dispositivo com uma pilha IP normal não deveria. A tabela de rotas irá ignorar endereços de pacotes para números de IP diferentes dos seus ou que não saiba como rotear. Neste caso, o OP está perguntando sobre um pequeno dispositivo industrial. Provavelmente, ele não possui uma pilha de IPs implementada. Apenas responde a qualquer pacote que chegue. Eu sei porque eu vi e usei muitos assim. Para economizar custos, eles não têm painel ou interface para configuração. Enviar um pacote com um IP "sugerido" que corresponde ao endereço MAC é suficiente.
Gabe Mizuka
12

o 0.0.0.0 O endereço IP é bom, mas imagino que alguma outra coisa mudou na rede em que o dispositivo está ligado para bloquear o tráfego de rede com configuração zero, permitindo que o software de diagnóstico se conecte facilmente a esse dispositivo.

Como outros, declarar em sua resposta 0.0.0.0 é um endereço IP não roteável usado com freqüência pelo software para vincular qualquer endereço IP em todas as interfaces de rede de um dispositivo. Isso basicamente significa:

“Ei, eu sou um software e aceito qualquer conexão feita com qualquer endereço IP atribuído na máquina em que estou executando.”

Então, se o dispositivo usa DHCP - para obter seu próprio endereço IP para suas interfaces conectadas - e recebe um endereço atribuído de 1.2.3.4 então você pode se conectar a esse dispositivo em 1.2.3.4. E se esse endereço mudar para 5.6.7.8 o dispositivo ficará feliz em permitir que você se conecte a ele via 5.6.7.8.

o 0.0.0.0 Parece ser algo que você descobriu, mas não é a causa do problema. Em vez disso, eu sou minha opinião, o problema que você tem é revelado quando você declara:

“Geralmente, comunico com o sistema para fins de solução de problemas, configurando meu IP IPv4 para o mesmo intervalo do IP local e, em seguida, executando o software de diagnóstico.”

Primeiro, isso parece estranho. Por que você precisa alterar o endereço IP local da sua máquina para se conectar ao dispositivo VxWorks? Você não deve se conectar diretamente ao endereço IP do dispositivo?

Bem, quando você diz isso, tudo o que consigo pensar é que o dispositivo - e o software de diagnóstico - pode operar usando algum tipo de rede de configuração zero configuração. Ou seja, o dispositivo transmite na rede e o software de diagnóstico foi projetado para procurar essas transmissões de dispositivo para ajudá-lo a se conectar ao dispositivo sem saber o endereço IP exato.

Esse tipo de coisa de rede de configuração zero “autoconfigurável” é uma conveniência até se tornar uma dor de cabeça.

Meu primeiro palpite é que você pode se conectar diretamente ao dispositivo se puder determinar qual endereço IP foi atribuído a ele. E pensando ainda mais, aposto que a razão pela qual você poderia se conectar a ela no passado - mas não agora - pode ter a ver com alguma alteração de rede que bloqueou as portas que o dispositivo rede de configuração zero a configuração está sendo transmitida. Qual porta pode ser? Não tenho certeza. Mas se o tráfego com configuração zero não estiver sendo roteado pela rede, é por isso que você não pode se conectar ao dispositivo e ao 0.0.0.0 Endereço IP não tem nada a ver com isso.

JakeGould
fonte
6

0.0.0.0 é um endereço não rotativo. Não há nenhuma maneira que você possa rotear para isso porque "realmente não existe", ou, na verdade, "pode ​​existir em muitos lugares".

Pode ter significados ligeiramente diferentes dependendo se é um host ou uma rota.

Como rota, que não é aplicável neste caso, significa "rota padrão" que, sem instrução adicional, significa o gateway padrão ou "qualquer uma das minhas rotas", ou semelhante a 127.0.0.1

Como anfitrião, mais notavelmente no seu caso, também é; como explicado na Wikipedia :

O endereço que um host reivindica como seu quando ainda não foi atribuído um endereço. Por exemplo, ao enviar o pacote DHCPDISCOVER inicial ao usar o DHCP.

O endereço que um host atribui a si próprio quando a solicitação de endereço via DHCP falhou, desde que a pilha IP do host suporte isso.

Assumindo que geralmente usa DHCP, algumas coisas para tentar, em vez de uma redefinição completa - 'desligue-a & amp; novamente "ou apenas desconecte a rede, espere um minuto, conecte-a novamente. Talvez seja só pedir um novo endereço DHCP.

Além disso, é claro, certifique-se de que ele possa realmente ver seu servidor DHCP.

Tetsujin
fonte