FolioPierEstudos de TI

Loopback: o próprio computador (Internet)

Nota 18 de 54 · 4 min de leitura
Nesta página
  1. O endereço do próprio computador
  2. Quando o loopback está certo e quando está errado
  3. O problema espelhado, do lado do servidor
  4. O nome localhost e o IPv6

Às vezes, um programa precisa se comunicar com outro programa do mesmo computador, sem passar pela rede física. Para isso existe o loopback. Uma configuração que aponta para o loopback no computador errado, porém, é uma das causas mais comuns de falha de conexão com o banco de dados.

O endereço do próprio computador

O endereço 127.0.0.1 significa o próprio computador, e o nome equivalente é localhost. Toda a faixa 127.0.0.0/8 é reservada para esse fim, e no IPv6 o endereço de loopback é ::1. O que é enviado para 127.0.0.1 nem chega à placa de rede: o sistema operacional entrega os dados internamente, mesmo com o cabo desconectado.

Na configuração dos programas, o endereço costuma vir acompanhado da porta lógica, escrita depois do endereço e separada dele por dois-pontos:

  • 127.0.0.1:3306 indica o banco de dados MySQL do próprio computador;
  • 192.168.1.10:3306 indica o banco de dados MySQL do servidor da loja, acessível pelos outros computadores da rede.

Quando o loopback está certo e quando está errado

  • Sistema e banco de dados no mesmo computador, como em uma loja única ou em um caixa com banco de dados próprio: configurar o banco de dados como 127.0.0.1 ou localhost está correto.
  • Sistema em uma estação e banco de dados no servidor da loja: o mesmo valor é um erro. A estação tenta se comunicar consigo mesma e nunca alcança o servidor.

No segundo caso, os testes de rede entre a estação e o servidor funcionam normalmente, porque o problema não está no caminho. A estação nem chega a enviar os dados pela rede, e a falha só aparece quando se lê a configuração do programa.

O problema espelhado, do lado do servidor

O erro também pode estar no servidor. Um serviço configurado para aceitar conexões apenas no endereço 127.0.0.1 funciona normalmente quando testado no próprio servidor, mas recusa as conexões vindas das estações. Por isso, o serviço parece perfeito quando testado no servidor, e o problema só aparece quando o teste é feito a partir de outro computador.

O nome localhost e o IPv6

Em alguns computadores, o nome localhost é traduzido primeiro para o endereço de loopback do IPv6, ::1. Se o serviço de destino escuta apenas no IPv4, a conexão por localhost pode falhar, enquanto a conexão por 127.0.0.1 funciona. Configurar 127.0.0.1 diretamente elimina essa dúvida.

No suporte

Sempre que uma configuração tiver 127.0.0.1 ou localhost, convém perguntar se o cliente e o servidor deveriam mesmo estar no mesmo computador. Se não deveriam, a configuração está errada. No sentido contrário, um serviço que só funciona quando testado no próprio servidor pode estar aceitando conexões apenas no loopback.

Para guardar

  • O endereço 127.0.0.1, ou localhost, representa o próprio computador.
  • O tráfego de loopback não sai pela placa de rede.
  • O loopback está correto quando o sistema e o banco de dados ficam no mesmo computador, e errado quando o banco de dados fica no servidor da loja.
  • Um serviço que aceita conexões apenas no loopback fica invisível para os outros computadores.
A configuração de banco de dados de um caixa aponta para localhost. Essa configuração está certa?

Depende da instalação. Em um caixa com banco de dados próprio, no mesmo computador, a configuração está certa. Em um caixa que usa o banco de dados do servidor da loja, a configuração está errada, porque o caixa tenta se comunicar consigo mesmo e nunca alcança o servidor.

O banco de dados funciona quando acessado no próprio servidor da loja, mas recusa as conexões das estações. Que configuração do servidor pode explicar esse comportamento?

O serviço do banco de dados pode estar configurado para aceitar conexões apenas no endereço 127.0.0.1. Nesse caso, o serviço atende somente ao próprio servidor e precisa ser configurado para aceitar conexões também no endereço de rede, como 192.168.1.10.

Publicado a partir do Obsidian · FolioPier