Como você obtém endereços de loopback diferentes de 127.0.0.1 para trabalhar no OS X

55

De acordo com tudo o que li, toda a sub-rede 127.xxx deve fazer um loopback.

No entanto, no meu Mac, só posso executar ping em 127.0.0.1

Sei que já fiz isso antes (embora possivelmente em outro sistema operacional) e foi muito útil para desenvolver vários sites SSL localmente e para encapsular serviços remotos para acessar um IP local (por exemplo, eu poderia ssh no meu servidor MySQL e apenas encaminhe a porta padrão para a mesma porta em minha máquina local, mas em 127.0.0.2 enquanto meu servidor local é executado em 127.0.0.1.

elliotbetancourt
fonte

Respostas:

72

Aqui está a resposta curta: sudo ifconfig lo0 alias 127.0.0.* up

Cada alias deve ser adicionado individualmente ( sudo ifconfig lo0 alias 127.0.0.2 up, sudo ifconfig lo0 alias 127.0.0.3 up). Isso pode ser feito manualmente para teste ou um subconjunto ou a lista completa dos outros 250 números disponíveis nessa sub-rede pode ser transformada no script StartupItems, que o fará automaticamente no momento da inicialização.

A resposta longa: De acordo com o RFC3330, 127.0.0.0/8 - este bloco é atribuído para uso como o endereço de loopback do host da Internet. Um datagrama enviado por um protocolo de nível superior para um endereço em qualquer lugar dentro deste bloco deve retornar dentro do host. Isso geralmente é implementado usando apenas 127.0.0.1/32 para loopback, mas nenhum endereço nesse bloco deve aparecer em nenhuma rede em qualquer lugar.

Everett
fonte
4
Se ao menos houvesse uma maneira de fazê-lo funcionar para 127. *. *. *
Matthew Schinckel 12/12/12
Se isso também funcionar no CentOS, você está recebendo uma recompensa de mim.
Parthian Shot
Na verdade, de qualquer maneira você recebe uma recompensa. Como ele não funciona no CentOS, vou perguntar e responder a essa pergunta assim que descobrir a resposta.
Parthian Shot
Como eu configurar 4 servidores na porta 8, usando diferentes endereços de auto-retorno sobre debian9 Gnu / Linux superuser.com/a/1255308/62123
ctrl-alt-Delor
12

Para os interessados, aqui está um pequeno script bash que adiciona todos os aliases dos IPs 127.0.0. *:

#!/bin/bash
for ((i=2;i<256;i++))
do
    sudo ifconfig lo0 alias 127.0.0.$i up
done
Laurent
fonte
Estou lendo isso errado? O que você criou parece que faz todos os endereços de 127.0.0.1 a 127.0.0.255. Se você alterar "sudo ifconfig lo0 alias 127.0.0. $ I up" para "sudo ifconfig lo0 alias 127. $ i. $ I. $ I up" que fará com que a maioria deles esteja certa? No entanto, você poderia pular qualquer coisa que seja menor que 2. Então, talvez use uma variável diferente para os outros dois octetos? O endereço IP mais alto para loopback é 127.255.255.255
Everett
1
@ Everett, você leu isso corretamente, ele faz apenas os endereços 127.0.0. *. O motivo de eu não cobrir todo o intervalo é que é realmente muito lento processar até 255 endereços, então 255x255x255 levaria muito tempo.
laurent
1
Obrigado. Eu só queria ter certeza de que a expectativa estava definida, porque alguém viria aqui e diria: "Ei, não funcionou para 127.7.53.91". Eu não faria isso, mas alguém ...
Everett
2
Na verdade, a proposta de @ Everett também não funcionaria, já que permitiria apenas endereços como 127.7.7.7 ou 127.42.42.42, ou seja, todos aqueles com os três últimos dígitos são iguais. Você precisaria de três loops distintos para realmente ativar todos os IPs no bloco 127/8. No entanto, fazer isso certamente não seria uma boa idéia: é altamente provável, considerando que cada IP deve ser ativado separadamente, que existem alguns recursos anexados a cada IP atribuído; alocar aproximadamente 17,7 milhões de IPs (ou seja, 256 ^ 3) pode ter algumas conseqüências significativas ... #
11137
2
@ jwatkins Conclusão: ative-os apenas se você precisar deles, o que é realmente uma regra geral para tudo.
William T Froggard