No veo apache corriendo en netstat

10

Solo estoy jugando con Apache y lo hice funcionar, es decir, puedo conectarme al servidor navegando http://127.0.0.1y http://192.168.1.5NO estoy ejecutando IPv6

Sin embargo, este es el resultado de 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]

¡¿Esperaba verlo escuchando en un TCP normal, lo que claramente hace ?!

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 qué el voto negativo ? ¿Qué me estoy perdiendo puede alguien elaborar?

meccooll
fuente
pruebe netstat -a | grep ESCUCHAR y publicar salida
Lety
Publicado los resultados
meccooll
Intentado netstat -p?
muru
las dos últimas líneas se refieren a apache que está escuchando en los puertos 80 y 443. intente la sugerencia muru para ver el proceso / pid.
Lety
@Letizia tiene razón, pero dice tcp6 en la primera columna y :: para ip, que es IPv6, ¿pero me estoy conectando a él en IPv4?
meccooll

Respuestas:

17

TL; DR

Apache no aparece en su netstatsalida, y que está en marcha. Por eso funciona tu wgetllamada. Sin embargo, está vinculado a su dirección IPv6 en lugar de su dirección IPv4. La asignación de direcciones maneja la traducción cuando es necesario.

A por los documentos

Obviamente, aquí hay un mecanismo de respaldo de IPv6-IPv4. De hecho, todavía no uso IPv6 en mi red local:

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

Es importante tener en cuenta que no importa cómo se dirija a su máquina, al final sigue siendo el mismo servicio y puerto. El resto depende principalmente de su navegador y servicios de resolución de DNS. Sin embargo, para obtener más información sobre cómo Apache maneja esto, puede consultar su documentación :

Un factor complicado para los administradores de Apache es si un socket IPv6 puede manejar tanto las conexiones IPv4 como las conexiones IPv6. El manejo de conexiones IPv4 con un socket IPv6 utiliza direcciones IPv6 asignadas a IPv4, que están permitidas de forma predeterminada en la mayoría de las plataformas, pero no están permitidas de manera predeterminada en FreeBSD, NetBSD y OpenBSD, para que coincida con la política de todo el sistema en esas plataformas. En los sistemas donde no está permitido de forma predeterminada, un parámetro de configuración especial puede cambiar este comportamiento para Apache.

Básicamente, se trata de manejar los sockets IPv4 e IPv6 de manera que se eviten la mayoría de los problemas relacionados con la compatibilidad entre plataformas y el manejo de sockets. Como puede leer, en plataformas Linux como Ubuntu, este problema se resuelve utilizando direcciones IPv6 asignadas a IPv4 . La documentación también establece:

Si desea que Apache maneje solo conexiones IPv4, independientemente de lo que admitirá su plataforma y APR, especifique una dirección IPv4 en todas las directivas de Listen.

Lo que daría algo como esto en el ports.confarchivo:

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

Resultando en una de las siguientes netstatsalidas ...

$ 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 

Un oyente hermoso, pero no preparado para IPv6. La configuración anterior generalmente se establece en /etc/apache2/ports.conf(o directamente en apache2.confversiones anteriores). El valor predeterminado es Listen 80, que realiza un enlace automático , es decir, conforme a las especificaciones IPv6 proporcionadas en la documentación.

John WH Smith
fuente
1
Huh no sabía sobre el mapeo de direcciones, así que tengo que estar atento a los puertos abiertos tanto en IPv6 como en IPv4.
meccooll 01 de
se unió a "askubuntu" para votar esta pregunta y responder !!!
Prem