não pode acessar o mecanismo de cálculo do ip externo

1

Eu configurei uma instância do Google compute engine e instalei o nginx e agora o nginx está escutando na porta 80. Eu tenho um ip externo estático atribuído à minha instância e simplesmente não consigo acessar meu endereço IP externo.

Por que isso tem que ser tão difícil? Todos os tutoriais dizem apenas:

install nginx and go to your external ip and you should arrive at the nginx welcome screen

Eu configurei regras de firewall para http / https, mas nada está funcionando. Veja algumas coisas para analisar:

configuração do servidor nginx:

listen 80;
listen [::]:80;
server_name example.com;
root /var/www/example.com;
index index.html;
location / {
  try_files $uri $uri/ =404;
}

captura de tela da instância:

nginx em execução:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3490/nginx
tcp6       0      0 :::80                   :::*                    LISTEN      3490/nginx

Estou tentando acessar: 104.196.111.24 , mas diz apenas safari failed to open the page

executando ifconfig retorna isso:

docker0   Link encap:Ethernet  HWaddr 02:42:de:3f:fb:67  
          inet addr:172.18.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02  
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1460  Metric:1
          RX packets:3802 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2248 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:21591383 (20.5 MiB)  TX bytes:351275 (343.0 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:54 errors:0 dropped:0 overruns:0 frame:0
          TX packets:54 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3568 (3.4 KiB)  TX bytes:3568 (3.4 KiB)
    
por duxfox-- 08.03.2016 / 22:28

4 respostas

2

Porta fechada 80

$ nmap -p80 104.196.111.24
Starting Nmap 6.40 ( http://nmap.org ) at 2016-03-09 16:25 CET
Nmap scan report for 24.111.196.104.bc.googleusercontent.com (104.196.111.24)
Host is up (0.14s latency).
PORT   STATE  SERVICE
80/tcp closed http

Isso leva a pensar que há algo errado na configuração do firewall, apesar das opções "Permitir tráfego HTTP" e "Permitir tráfego https" verificadas na captura de tela. Agora eu não sei mais sobre a configuração do firewall de um GCE.

(NB Algum tempo depois: a partir de agora, nmap informa que o host está inativo.)

Sobre o meu post inicial

Minha postagem inicial, abaixo, se aplicaria a uma instância nginx em execução no host real. Eu perdi o fato de que você está realmente rodando uma Máquina Virtual, onde pode ser normal ter nginx ouvindo endereços locais ('outra coisa' no host faz proxy dos pedidos para a VM ). No entanto, não entendo por que o endereço IP interno não aparece na sua saída ifconfig .

Conteúdo inicial da postagem:

Se bem entendi, você tem uma instância nginx em execução em um servidor cujo endereço é 104.196.111.24. E quando você tenta acessar esse endereço em um navegador da web, você recebe um erro.

Não tenho certeza absoluta de que isso funcionará, mas percebo que sua instância do nginx está ouvindo a porta 80 em 0.0.0.0 (ipv4), o que é um endereço local. Wikipedia diz sobre isso:

In the Internet Protocol Version 4, the address 0.0.0.0 is a non-routable meta-address used to designate an invalid, unknown or non-applicable target.

Além disso:

In the context of servers, 0.0.0.0 means "all IPv4 addresses on the local machine".

Então, acho que há algo a ser corrigido aqui, já que nginx parece ser acessível somente a partir de endereços locais em seu servidor.

Além disso, se eu definir nginx para ouvir a porta 80 em 0.0.0.0 para qualquer um dos meus sites, então, a navegação neste site retornará um erro (como a conexão foi reinicializada, não um erro de nginx ) .

Então, eu tentaria definir nginx para ouvir a porta 80 no endereço externo, como:

listen 104.196.111.24:80;

(e, claro, depois disso, verifique isso com nginx -t e recarregue as regras do nginx com service nginx reload ).

EDIT: as informações adicionais de ifconfig me permitem pensar que há realmente algo errado (ou não configurado) na configuração de rede, mas não consigo explicá-lo: o endereço da placa de rede (eth0, em execução) é 172.17. 0,2, o que pertence a alguns intervalos de endereços reservados especiais da IANA. Espero que 104.196.111.24 apareça na saída de ifconfig , mas isso não acontece. Eu nem entendo como você pode fazer o ssh em 104.196.111.24 sem ter que configurar. De qualquer forma, acho que nginx não pode ser alcançado pelo lado de fora enquanto estiver escutando 0.0.0.0, isso certamente deve ser corrigido para resolver o problema, o que pode ser feito corrigindo a configuração da rede.

    
por 09.03.2016 / 09:40
0

Use um curinga e funcionará

    listen *:80;
    listen *:443 ssl;
    
por 15.03.2017 / 20:24
0

Você está no lugar errado. Com base no resultado do ifconfig, parece que você está no google cloud shell e não no ssh no shell da instância . Se você estiver no shell da instância, o resultado ifconfig corresponderá ao endereço IP interno mostrado no console.

    
por 01.03.2018 / 08:14
0

Verifique as regras de firewall para o VPC do seu projeto:

$ gcloud beta compute firewall-rules list 

Se a porta 80 TCP não estiver coberta, você precisa adicioná-la:

$ gcloud beta compute firewall-rules create default-allow-http80 \
> --direction ingress --action allow --source-ranges 0.0.0.0/0 
> --rules tcp:80
    
por 06.06.2018 / 00:48