Abrindo portas em um mac-mini, funciona localmente, não na LAN

3

Eu tenho meu mac mini executando um servidor nodejs na porta 8000. No mac, eu posso atingi-lo em 127.0.0.1:8000/something. Eu recebo um tipo de resposta "hello world".

Na mesma rede, de uma máquina diferente, não consigo acessar este servidor no mac. Estou recebendo tempo limite. Eu tenho puxado meu cabelo tentando entender o porquê.

  1. Eu verifico a máquina na rede local. Por exemplo, 192.168.1.7:8000 deve resolver para essa máquina e porta de outra máquina. Esgota-se.

  2. Eu tenho uma página de administração do NAS em 192.168.1.200:5000 (desculpem o erro antes) e ela é resolvida lindamente. A porta 5000 é encaminhada para o NAS a partir do roteador.

  3. Eu configurei as regras de firewall (no roteador) exatamente da mesma maneira para os nodejs, como fiz para o NAS. O NAS está disponível fora da minha rede por meio de uma regra de roteador e um mapeamento de DNS dinâmico no-ip. O servidor nodejs é encaminhado da mesma maneira. Nenhum dado, expira.

Alguma ideia? Eu não tenho firewall (que eu possa detectar) no mac. Eu posso ver o servidor ouvindo 8000 no mac. Funciona localmente.

O que estou fazendo de errado aqui?

ATUALIZAÇÕES com respostas a perguntas.

Obrigado a todos pelo feedback. Aqui estão as respostas para as suas perguntas.

Saída do netstat.

netstat -anp tcp | grep 8000

tcp4       0      0  *.8000                 *.*                    LISTEN

Eu não tenho o firewall mac em execução (pelo menos nas configurações do sistema, quero dizer). Já vi postagens sobre algo chamado IPFW, mas não tenho ideia do que é isso.

No mac, quando eu clico em 192.168.1.7:8000 eu recebo:

Hello World

Meu entendimento de nodejs é que eu apenas "vinculo" a uma porta. Aqui está o código, direto do seu exemplo.

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8000);

console.log('Server running at http://127.0.0.1:8000/');
    
por JuddGledhill 12.03.2012 / 18:13

3 respostas

2

Eu tenho um problema semelhante.

Eu achei que não é útil, alterando as opções de firewall (até mesmo desativar totalmente o firewall) para permitir que o acesso do nó de fora no MAC OS X, pelo menos, não funcione no meu caso.

Minha solução é alterar o nome do host que está ligado ao servidor node.js:

  • use '0.0.0.0' como nome do host para permitir acesso de fora
  • use 'localhost' apenas com acesso local

Eu acho que 'localhost' usado como o valor padrão de alguma forma, e espero que esta dica seja útil para os outros.

Felicidades

    
por 20.01.2014 / 06:24
0

Minha máquina está atualmente configurada desta forma:

  • O firewall está desativado - estou atrás de um roteador de hardware que está bloqueado.
  • Todo compartilhamento está desativado no sistema prefs.
  • Eu tenho um endereço IP estático (rede prefs: "usando DHCP com endereço manual").
  • Meu servidor ainda é o mesmo, ele está sendo executado na porta 8000.

Agora consigo acessar de dentro da LAN e fora com meu domínio não-IP. Acho que foi a coisa do endereçamento estático - embora eu não tenha 100% de certeza.

    
por 13.03.2012 / 00:44
0

Ainda não estou convencido com uma solução adequada para isso, mas, para fazer isso funcionar, eu simplesmente fiz isso,

  1. Inicie seu servidor da web padrão do Mac OSX e no index.html,
  2. Adicione nele um código de redirecionamento que apontará para a porta do nó js e também poderá acessá-lo a partir de sistemas LAN externos.

Na verdade, este não será o cenário em que você o hospeda para que você possa seguir a abordagem acima e ainda trabalhar nele sem um bloqueio,

    
por 29.03.2012 / 15:55