Solo estoy jugando con apache y lo hice funcionar, es decir, puedo conectarme al servidor navegando a http://127.0.0.1
y http://192.168.1.5
NO 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 regular, lo cual 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
Editar2:
¿Por qué el voto negativo? ¿Qué me estoy perdiendo alguien puede elaborar?
Respuesta aceptada:
TL;DR
Apache sí aparecer en su netstat
salida, y es corriendo. Es por eso que su wget
obras de llamada. Sin embargo, está vinculado a su dirección IPv6 en lugar de a su dirección IPv4. El mapeo de direcciones maneja la traducción cuando es necesario.
En busca de los documentos
Obviamente, aquí hay algún mecanismo alternativo 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 los 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 de complicación para los administradores de Apache es si un socket IPv6 puede o no manejar conexiones IPv4 e IPv6. El manejo de conexiones IPv4 con un socket IPv6 utiliza direcciones IPv6 asignadas a IPv4, que están permitidas de manera predeterminada en la mayoría de las plataformas, pero no están permitidas de manera predeterminada en FreeBSD, NetBSD y OpenBSD, para que coincidan con la política de todo el sistema en esas plataformas. En los sistemas en los que 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 solo maneje conexiones IPv4, independientemente de lo que admitan su plataforma y APR, especifique una dirección IPv4 en todas las directivas de escucha.
Lo que daría algo como esto en ports.conf
archivo :
Listen 0.0.0.0:80 # Or...
Listen 127.0.0.1:80 # Or...
Listen 192.0.2.1:80
Resultando en uno de los siguientes netstat
salidas…
$ 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.conf
para versiones anteriores). El valor predeterminado es Listen 80
, que realiza un automático vinculante, es decir, conforme a las especificaciones de IPv6 proporcionadas en la documentación.