Tráfego de entrada na porta 80 não está funcionando

0

Eu estou tentando configurar um servidor Apache na minha instalação do Arch Linux. Esta máquina tem uma conexão ethernet com um endereço IP público. Eu tentei conectar-se repetidamente a partir de computadores externos, mas ele nunca funciona e, em seguida, configurei o SSL no Apache e consegui conectá-lo bem.

Para testar, quando eu giro um servidor http simples com

$ sudo python3 -m http.server <port_here> --bind <public_ip_here> 

Eu posso conectar de outros computadores, tudo bem, para todas as portas exceto 80. Então não funciona. Até funciona para a porta 443.

Estou me perguntando por que a porta 80 está sendo bloqueada e como posso corrigir isso.

    
por Jeff Schaller 06.12.2015 / 23:54

3 respostas

0

Você pode executar o seguinte para ver se o tráfego está realmente chegando ao sistema:

# iptables -I INPUT -p TCP --dport 80 -j LOG
# iptables -I INPUT -p TCP --dport 80 -j ACCEPT

O -j LOG enviará um registro do tráfego correspondente ao log de mensagens, mas o firewall continuará processando as regras. A segunda regra apenas configura um ACCEPT explícito para todo o tráfego da porta 80. Isso elimina o firewall como um ponto de estrangulamento. Se os contadores de pacotes (as duas colunas numéricas no lado esquerdo de iptables -nvL output) aumentarem, então você saberá as regras correspondidas e poderá procurar nas mensagens para ver se há algo interessante com a forma como o tráfego está chegando (como um NAT ou algo assim.

Você também pode executar netstat -tlpn ou lsof -i tcp:80 para ver se seu daemon está atualmente escutando em um IP acessível pela rede. Por exemplo:

[root@xxx01 ~]# lsof -i tcp:42499
COMMAND   PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
ruby    12659 puppet   10u  IPv4 37071710      0t0  TCP localhost:42499 (LISTEN)

Indica que há um script ruby escutando na porta 42499 e está vinculado a 127.0.0.1 (o localhost:42499 ) e então qualquer coisa endereçando um IP público não alcançará este daemon. Contrastado com:

[root@xxx01 ~]# lsof -Pi tcp:80 | head -3
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd    2247   root    4u  IPv6  12264      0t0  TCP *:80 (LISTEN)
httpd    7376 apache    4u  IPv6  12264      0t0  TCP *:80 (LISTEN)

O asterisco indica que ele está escutando em todos os endereços IP disponíveis (incluindo os que podem ser acessados pela rede).

    
por 07.12.2015 / 17:45
0

Você pode tentar usar tcpdump nesta máquina para ver se alguma comunicação chega à porta 80:

sudo tcpdump port 80

(Se você não tem: pacman -S tcpdump )

E tente uma conexão de uma máquina externa.

Além disso, você pode ver se há alguma regra do tcpdump que bloqueia conexões locais de 80 portas. Se o seguinte comando gerar alguma coisa, analise para ver se há uma ação de rejeitar ou descartar: sudo iptables-save | grep 80 ... ou analisa as regras completas do iptables com sudo iptables-save

  • Outra tentativa é forçar seu comando a escutar no endereço 0.0.0.0 em vez do endereço IP público.

PS: lembre-se de que existem alguns provedores que bloqueiam a porta 80 para não permitir que os clientes hospedem sites ou "tentem" evitar ataques.

    
por 07.12.2015 / 17:17
-1

Verifique se existe algum firewall que possa bloquear a porta no seu roteador. Também verifique o iptables; você pode tentar isto:

iptables -I INPUT -p TCP --dport 80 -j ACCEPT
    
por 07.12.2015 / 00:34