Não vejo o apache rodando no netstat

10

Estou apenas brincando com o apache e consegui que funcionasse, ou seja, eu posso conectar ao servidor navegando para http://127.0.0.1e http://192.168.1.5não estou executando o IPv6

No entanto, este é o resultado do netstat

$ sudo service apache2 status
 * apache2 is running
$ netstat -an | grep :80
tcp6       0      0 :::80                   :::*                    LISTEN

$ wget 127.0.0.1
--2014-06-26 01:32:15--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11510 (11K) [text/html]
Saving to: ‘index.html’

100%[=====================================================================================================>] 11,510      --.-K/s   in 0s      

2014-06-26 01:32:15 (161 MB/s) - ‘index.html’ saved [11510/11510]

Eu esperava vê-lo ouvindo em um TCP comum, o que claramente faz !?

Editar:

$ netstat -a | grep LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp        0      0 localhost:mysql         *:*                     LISTEN     
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN     
tcp6       0      0 [::]:https              [::]:*                  LISTEN     
tcp6       0      0 [::]:http               [::]:*                  LISTEN     

Edit2: Por que o voto negativo? O que estou perdendo, alguém pode elaborar?

meccooll
fonte
tente netstat -a | grep LISTEN e pós-saída
Lety
Postado os resultados
meccooll 26/06
Tentou netstat -p?
Muru
as duas últimas linhas são referidas ao apache que está escutando nas portas 80 e 443. tente a sugestão de muru para visualizar process / pid.
Lety
@Letizia certo, mas diz tcp6 na primeira coluna e :: para ip, que é IPv6, mas estou conectando a ele no IPv4 ???
meccooll

Respostas:

17

TL; DR

Apache não aparecer na sua netstatsaída, e ele está em execução. É por isso que sua wgetligação funciona. No entanto, ele está vinculado ao seu endereço IPv6 em vez do seu endereço IPv4. O mapeamento de endereços lida com a tradução quando necessário.

Indo para os documentos

Obviamente, há algum mecanismo de fallback IPv6-IPv4 aqui. De fato, ainda não uso o IPv6 na minha rede local:

$ netstat -tunla | grep LISTEN | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN

É importante observar que, independentemente de como você endereça sua máquina, ainda é o mesmo serviço e porta no final. O restante depende principalmente do seu navegador e dos serviços de resolução de DNS. No entanto, para obter mais informações sobre como o Apache lida com isso, consulte a documentação deles :

Um fator complicador para os administradores do Apache é se um soquete IPv6 pode ou não lidar com conexões IPv4 e IPv6. O tratamento de conexões IPv4 com um soquete IPv6 usa endereços IPv6 mapeados para IPv4, que são permitidos por padrão na maioria das plataformas, mas não são permitidos por padrão no FreeBSD, NetBSD e OpenBSD, a fim de corresponder à política de todo o sistema nessas plataformas. Nos sistemas em que não é permitido por padrão, um parâmetro de configuração especial pode alterar esse comportamento para o Apache.

Basicamente, trata-se de lidar com soquetes IPv4 e IPv6 de maneira a evitar a maioria dos problemas relacionados à compatibilidade entre plataformas e ao manuseio de soquetes. Como você pode ler, em plataformas Linux como o Ubuntu, esse problema é resolvido usando endereços IPv6 mapeados para IPv4 . A documentação também afirma:

Se você deseja que o Apache lide apenas com conexões IPv4, independentemente do suporte da plataforma e do APR, especifique um endereço IPv4 em todas as diretivas Listen.

O que daria algo assim no ports.confarquivo:

Listen 0.0.0.0:80 # Or...
Listen 127.0.0.1:80 # Or...
Listen 192.0.2.1:80

Resultando em uma das seguintes netstatsaídas ...

$ netstat -tunla | grep LISTEN | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN 
$ netstat -tunla | grep LISTEN | grep 80
tcp        0      127.0.0.1:80              127.0.0.1:80            LISTEN
$ netstat -tunla | grep LISTEN | grep 80
tcp        0      192.0.2.1:80              192.0.2.1:80            LISTEN 

Um ouvinte bonito, mas não preparado para IPv6. A configuração acima geralmente é definida /etc/apache2/ports.conf(ou diretamente nas apache2.confversões mais antigas). O valor padrão é Listen 80, que executa uma ligação automática , ou seja, em conformidade com as especificações IPv6 fornecidas na documentação.

John WH Smith
fonte
11
Como ele não sabia sobre o mapeamento de endereços, tenho que prestar atenção às portas abertas no IPv6 e no IPv4.
Meccooll
juntou-se ao "askubuntu" para fazer voto positivo nesta pergunta e responder !!!
Prem