Não vejo o apache sendo executado no netstat

7

Estou apenas brincando com o apache e consegui que funcione, ou seja, posso conectar-me ao servidor navegando até http://127.0.0.1 e http://192.168.1.5 NÃ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 escutando em um TCP comum, o que claramente acontece!

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 baixo? O que eu estou perdendo alguém pode elaborar?

    
por meccooll 26.06.2014 / 07:36

1 resposta

11

TL; DR

O apache aparece em sua saída netstat e está em execução. É por isso que sua chamada wget funciona. No entanto, ele está ligado ao seu endereço IPv6 em vez do seu IPv4. O mapeamento de endereços manipula a tradução quando necessário.

Indo para os documentos

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

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

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

  

Um fator complicador para os administradores do Apache é se um soquete IPv6 pode ou não manipular conexões IPv4 e IPv6. O tratamento de conexões IPv4 com um soquete IPv6 usa endereços IPv6 mapeados por 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, para corresponder à política de todo o sistema nessas plataformas. Em 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 manipular os soquetes IPv4 e IPv6 de forma a evitar a maioria dos problemas relacionados à compatibilidade entre plataformas e ao soquete. 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ê quiser que o Apache lide apenas com conexões IPv4, independentemente do que sua plataforma e APR suportará, especifique um endereço IPv4 em todas as diretivas Listen.

O que daria algo assim no arquivo ports.conf :

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 netstat outputs ...

$ 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 ótimo ouvinte, ainda não preparado para IPv6. A configuração acima é geralmente definida em /etc/apache2/ports.conf (ou diretamente em apache2.conf para versõ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.

    
por John WH Smith 01.07.2014 / 04:28