No seu Mac, inspecione o endereço de escuta do servidor com lsof e, em seguida — se necessário —, tente se conectar ao IP de Wi-Fi ou Ethernet do seu Mac a partir de outro dispositivo na mesma rede. Um endereço de loopback como 127.0.0.1 ou ::1 é apenas local; um endereço curinga como 0.0.0.0 ou :: pode aceitar conexões por meio de interfaces de rede. Confirme o endereço real e teste a porta específica antes de determinar o alcance do servidor.

1. Encontre o endereço de escuta do servidor

Com o servidor de desenvolvimento em execução, abra o Terminal e execute este comando, substituindo 8000 pela porta dele:

lsof -nP -iTCP:8000 -sTCP:LISTEN

O lsof lista arquivos abertos, incluindo sockets de rede; seu filtro de estado TCP pode selecionar portas em escuta. As opções -nP mantêm os endereços numéricos e evitam que os números das portas sejam exibidos como nomes de serviços. Manual do lsof da Apple

Observe a coluna NAME. Um resultado terminando em 127.0.0.1:8000 (LISTEN) está associado ao endereço de loopback IPv4. localhost:8000 também indica um listener de loopback, embora o nome exibido possa variar. Um resultado mostrando *:8000 é um listener curinga para essa família de endereços. Verifique também a coluna TYPE: linhas separadas de IPv4 e IPv6 podem fazer diferença. ::1 é o loopback IPv6; :: é o curinga IPv6. Em alguns sistemas, um listener curinga IPv6 também pode aceitar conexões IPv4, portanto, a listagem por si só pode não esclarecer esse detalhe.

Se o comando não retornar nada, verifique se o servidor ainda está em execução, se você usou a porta atual dele e se ele escuta em TCP. Este comando não inspeciona listeners UDP. Se o lsof não mostrar nenhum resultado sem permissões elevadas, execute-o novamente com sudo apenas se precisar inspecionar processos pertencentes a outra conta; o macOS pode solicitar sua senha de início de sessão.

2. Interprete o endereço como uma pista de acessibilidade

Um listener associado a um endereço de loopback específico aceita conexões endereçadas a essa interface de loopback, não ao endereço de LAN do seu Mac. Um endereço curinga significa que o socket não está restrito ao loopback, de modo que pode ser acessível por meio de uma interface de rede. A Apple descreve um socket de escuta como aquele que aguarda conexões de entrada. Visão geral da Apple sobre servidores baseados em TCP

Um caractere curinga não é prova de que outro dispositivo possa se conectar. O servidor ainda precisa estar em execução nessa porta; as configurações de firewall do macOS, o isolamento de clientes no roteador ou Wi-Fi e outras condições de rede podem afetar a conexão. Por outro lado, um teste bem-sucedido no navegador do Mac usando localhost apenas prova que uma conexão local funciona.

3. Teste o acesso a partir de outro dispositivo na sua rede

Encontre o endereço do Mac para a rede que deseja testar. Para Wi-Fi, a Apple documenta como encontrar o endereço IP da conexão nas configurações de Wi-Fi ou no menu de status do Wi-Fi; os controles exatos podem variar de acordo com a versão do macOS. Guia de ajustes de Wi-Fi da Apple

A partir de um segundo dispositivo conectado à mesma LAN, abra um navegador ou use um cliente HTTP para requisitar http://MAC-IP:8000, substituindo o endereço atual do Mac e a porta do servidor. Por exemplo, se o endereço de LAN do Mac for 192.168.1.23 e a porta for 8000, tente http://192.168.1.23:8000. Uma resposta indica que este cliente alcançou o serviço por essa rota; um tempo limite esgotado ou uma recusa não identifica, por si só, a causa. Confirme se ambos os dispositivos estão na rede pretendida e verifique novamente o listener antes de investigar as configurações de firewall ou de rede.

4. Torne a vinculação somente local explícita quando houver suporte

A configuração correta pertence ao servidor de desenvolvimento, não a um parâmetro universal do macOS. Por exemplo, o http.server do Python suporta --bind; sua documentação afirma que o padrão se vincula a todas as interfaces, enquanto este comando se vincula ao loopback IPv4:

python3 -m http.server --bind 127.0.0.1 8000

Isso funciona se o Python 3 estiver instalado. O Python documenta tanto a opção bind quanto seu comportamento padrão. Documentação do http.server do Python

Outras ferramentas expõem suas próprias configurações de host ou vinculação (bind). O Node.js documenta que omitir o host de server.listen() seleciona um endereço não especificado, com comportamento dependente da disponibilidade de IPv6. Consulte a documentação do seu servidor e versão; não presuma que um parâmetro de outro framework seja aplicável. Documentação de net.Server do Node.js Depois de alterar a configuração, reinicie o servidor e repita a verificação com lsof. Um teste de LAN é útil quando você pretende compartilhar o acesso, mas vincular a um endereço de LAN ou curinga pode expor o serviço de desenvolvimento a outros dispositivos acessíveis.

Fontes