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 stop
o iptables -F
.