El servidor Apache no escucha en el puerto 80.

El servidor Apache no escucha en el puerto 80.

Tanto mi estación de trabajo como mi servidor están en el mismo segmento de LAN y pueden hacer ping entre sí (y puedo acceder al servidor desde mi estación de trabajo sin problemas).

Hice una instalación predeterminada de Apache en centos 7.

Inicié el servicio, pero no puedo navegar a mi servidor web desde mi estación de trabajo.

El puerto 80 del informe nmap está filtrado.

Deshabilité SELinux en el servidor pero el puerto aún está filtrado.

Esto es lo que me da netstat -l:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
raw6       0      0 [::]:ipv6-icmp          [::]:*                  7

Extrañamente netstat -na muestra el puerto 80 como escuchando, pero para ipv6 (aunque leí en alguna parte esto no significa necesariamente que tampoco esté escuchando en ipv4)

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp        0     64 10.1.1.1:22             10.2.2.2:44939        ESTABLISHED
tcp6       0      0 :::80                   :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 ::1:25                  :::*                    LISTEN
raw6       0      0 :::58                   :::*                    7

Aquí hay parte relevante de mi /etc/httpd/conf/httpd.conf (que no he modificado)

<Directory />
    AllowOverride none
    Require all denied
</Directory>

<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

<Directory "/var/www/html">

    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<Files ".ht*">
    Require all denied
</Files>

El servicio parece estar funcionando bien:

httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: active (running) since Fri 2015-10-02 08:36:40 EDT; 1h 27min ago
  Process: 23294 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
 Main PID: 23302 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─23302 /usr/sbin/httpd -DFOREGROUND
           ├─23303 /usr/sbin/httpd -DFOREGROUND
           ├─23304 /usr/sbin/httpd -DFOREGROUND
           ├─23305 /usr/sbin/httpd -DFOREGROUND
           ├─23306 /usr/sbin/httpd -DFOREGROUND
           └─23307 /usr/sbin/httpd -DFOREGROUND

¿Por qué no escucha en el puerto 80?

Respuesta1

Como comentó Michael Hampton en su publicación, apuesto a que su firewall (iptables) está bloqueando su tráfico.

Deshabilítelo ( systemctl disable firewalld) o dígale que permita el tráfico en el puerto 80 ( firewall-cmd --zone=public --add-port=80/tcp --permanent).

Respuesta2

El hecho de que el puerto 80 esté filtrado o no no es relevante para la salida de netstat. Incluso si iptables está configurado para bloquear (DROP o REJECT) la conexión a ese puerto, debería ver que Apache está escuchando el puerto 80.

El punto es que httpd está configurado para escuchar AMBAS direcciones IPv4 e IPv6 (0.0.0.0 y ::) y, en ese caso, netstat muestra solo la dirección IPv6. La explicación está aquí:

https://bugs.launchpad.net/ubuntu/+source/net-tools/+bug/657270

En resumen: en ese caso la conexión IPv6 es capaz de servir AMBOS protocolos y por lo tanto solo se abre un socket. Y como solo se abre un socket, solo se muestra un socket en la salida de netstat.

Respuesta3

Verifique las reglas de iptables ( iptables-save) y vea si el puerto 80 está permitido.

Para fines de prueba, puede hacer service iptables stopo iptables -F.

información relacionada