Apache2 no se ejecuta en el puerto tcp de IPv4

23

Necesito ejecutar Apache2 en mi servidor Debian 7. Pero solo se ejecuta en el puerto tcpv6, no en el puerto tcpv4. Lo instalé con apt-get install. Si voy a localhost o 127.0.0.1 o la dirección IPv4 de mi servidor, no muestra ningún sitio web.

Mi /etc/apache2/ports.conf:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
 # If you add NameVirtualHost *:443 here, you will also have to change
 # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
 # to <VirtualHost *:443>
 # Server Name Indication for SSL named virtual hosts is currently not
 # supported by MSIE on Windows XP.
 Listen 443
</IfModule>

<IfModule mod_gnutls.c>
 Listen 443
</IfModule>

netstat -plntu:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3558/sshd       
tcp        0      0 0.0.0.0:3466            0.0.0.0:*               LISTEN      2820/mysqld     
tcp6       0      0 :::80                   :::*                    LISTEN      2097/apache2    
tcp6       0      0 :::22                   :::*                    LISTEN      3558/sshd       
Mato
fuente
3
Intenta cambiar el Listen 80a Listen 0.0.0.0:80. Puede consultar la documentación httpd.apache.org/docs/2.2/bind.html para obtener más información.
pradeepchhetri
@pradeepchhetri Gracias. Funciona. Puedo acceder a la dirección de mi servidor desde cualquier computadora y muestra contenido (dirección IP / some.php), pero no accedo a some.php desde este servidor. He intentado localhost, 127.0.0.1 e IP externo: número de puerto que funciona desde otra PC ... Pero no funciona.
Mato
1
¿Puedes publicar la salida de sudo iptables -nvLy sudo sestatus? Creo que tiene algún firewall local que está impidiendo.
pradeepchhetri
@Mato necesita aclarar, cuando muestra contenido pero no funciona, ¿quiere decir que muestra el PHP sin procesar en lugar de ejecutarlo? Si es así, debe habilitar el módulo PHP. Creo que a2enmod php5debería hacerlo por ti.
robbat2
3
Las máquinas Linux suelen ocultar un socket de doble pila IPv4 + IPv6 detrás de la escucha en la dirección IPv6 ::.
Pavel Šimerda

Respuestas:

32

El hecho de que netstat solo muestre tcp6 aquí no es el problema. Si no especifica una dirección para escuchar, apache escuchará en todas las familias de direcciones compatibles con un solo socket (por razones de diseño, sshd usa un socket único por dirección y familia de direcciones, por lo tanto, aparece dos veces en su salida de netstat).

Este es uno de mis sistemas, que muestra que Apache solo tiene zócalos tcp6 y aún así funciona bien tanto a través de IPv4 como de IPv6.

woodpecker ~ # netstat -anp |grep apache
tcp6       0      0 :::80    :::*       LISTEN      1637/apache2        
tcp6       0      0 :::443   :::*       LISTEN      1637/apache2        
woodpecker ~ # wget http://127.0.0.1/ -O /dev/null
--2013-12-25 08:52:38--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
...
# wget http://[::1]/ -O /dev/null
--2013-12-25 08:53:00--  http://[::1]/
Connecting to [::1]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
...

Si se ejecuta wget http://127.0.0.1/ -O -en el servidor, ¿qué sucede? ¿Se conecta con éxito? ¿Devuelve el HTML sin formato para su sitio web como se esperaba?

robbat2
fuente
gracias, ahora funciona, pero todavía tengo un pequeño problema. He escrito sobre esto arriba.
Mato
Lo loco es que esta siempre ha sido mi experiencia. Naturalmente. Como programador de redes, conozco bien INADDR_ANYy IN6ADDR_ANY_INIT. Pero hoy he visto un comportamiento realmente extraño. Sin cambios de firewall, sin cambios de Apache, pero de alguna manera los hosts remotos solo pueden conectarse a través de IPv6, lo cual es un problema para aquellos que aún no tienen IPv6. Ciertamente es algo que resolveré, pero tienes toda la razón (aunque la invocación que das no es aplicable en mi caso, lamentablemente).
Pryftan
1
  1. 127.0.0.1 es local solo para una máquina, debe estar en el servidor en un navegador para usar la dirección / IP de bucle de retorno local;

  2. Es posible que tenga un firewall que bloquea los puertos;

  3. Asegúrese de que apache se esté ejecutando y funcione correctamente, verifique los registros de errores;

  4. Verifique todas sus configuraciones de apache;

  5. ¿Está alojando desde la raíz www o el directorio public_html del usuario?

  6. Verifique el propietario y los permisos.


Casi el año 2019 (Bienvenido al futuro):

  • Por defecto, la mayor parte del mundo usa ipv6 y, si falla, recurre a ipv4;

  • Ahora tenemos túneles ipv4 sobre ipv6 y viceversa;

  • La mayoría de los sistemas operativos, los programas, el cliente y el servidor lo hacen principalmente ahora;

  • Bienvenido al mundo de no más NAT y tener que depender ahora de firewall / filtros directamente en su dispositivo;

  • Recomendaría tratar de mantener sus sistemas apilados doblemente, admitiendo tanto ipv4 como ipv6 al mismo tiempo, de modo que cuando ocurra el cambio mágico, todavía esté en funcionamiento. Mi sistema operativo, red, incluso mi ISP tiene doble pila de extremo a extremo. Podría desactivar ipv4 por completo si quisiera, pero lo que está ahí fuera podría no funcionar si no existen túneles de nuevo a ipv6 desde ipv4.

cdmlb
fuente
Estaba en la trampa de si darte o no un +1, ya que usaste la palabra 'carpeta'. Pero la idea de no deshabilitar IPv6 es tan importante, como asegurarse de que su firewall esté configurado correctamente para IPv6. Sé que muchas personas piensan que NAT es seguridad, pero a lo sumo eso es una ilusión (también es un problema para muchos servicios). Eso y tus otros puntos son válidos, así que ten un +1.
Pryftan
Lo siento, quise decir directorio
:-P
Bueno, por eso te daría otro +1 si pudiera. Estoy bastante sorprendido y también humillado de que lo cambies. Soy purista, creo que todo lo que puedo decir. Me desconcierta y me molesta que cierta compañía solía corregirlo y luego lo cambió a 'carpeta'. Bueno, tal vez eso sea para hacerlo más 'amigable' para las personas, pero luego parece haber sido aceptado como la palabra correcta para otros que deberían saber mejor. No lo sé. De todos modos, ¡toda su lista es algo que realmente deseo que más personas entiendan! Por desgracia, muchos no ...
Pryftan
-1

* *

wget http://127.0.0.1/ -O / dev / null

* representa la conexión al servidor local sin manejar IPv4 o IPv6, si cambia localhost (o 127.0.0.1) a la dirección IP IPv4 real de este servidor, no puede obtener nada porque se le negó la conexión.

Intente describir su IP en los archivos de configuración: NameVirtualHost: 80 Listen: 80

Huésped
fuente