6 votos

Mac OS X Server ignora las conexiones HTTP remotas, pero acepta las locales

No consigo que el servidor web de Mac OS X Server acepte conexiones de otras máquinas en la misma LAN. Esto es en OS X 10.8.2, que se ejecuta en un Mac mini que originalmente se envió con Lion Server.

I puede conectarse a él desde el propio servidor, por ejemplo, yendo a http://localhost o http://hostname.example.com en Safari.

Observa que la conexión a través del nombre de dominio de la caja funciona. Esto es porque:

$ netstat -na | grep 80.*LISTEN
tcp46      0      0  *.80                   *.*                    LISTEN 

Es decir, Apache está escuchando en todas las interfaces, no sólo lo .

Si yo telnet server 80 desde una máquina cliente mientras hago una captura de paquetes en ambos lados, sólo veo repetidos TCP SYN paquetes. ( perspectiva del servidor , perspectiva del cliente )

Desactivar el firewall en el panel de configuración de Seguridad y Privacidad no cambia el síntoma.

La configuración del cortafuegos me parece inofensivo . (Volcado a través de pfctl -sa .)

Estoy seguro de que el problema no está en el lado del cliente. He intentado acceder desde:

  • un iMac de un mes sobre GigE
  • un MacBook Pro de 2 años a través de WiFi
  • un netbook de 5 años que ejecuta Ubuntu 12.04 sobre GigE y WiFi

Este servidor es headless, y hago todo mi trabajo en él desde máquinas cliente en la LAN, tanto por SSH como por VNC. Esto significa que mientras estoy fallando en conectarme a este servidor en el puerto TCP 80, lo estoy usando con éxito en los puertos TCP 22 y 5900. Este comportamiento es lo que me hizo empezar a mirar la configuración del firewall.

Este es el aspecto de la red:

home office network

Hay dos conmutadores de red porque esta red está repartida en dos habitaciones, con un conmutador en cada una de ellas y un único cable que las une. He descartado el switch gestionado como fuente de problemas con la prueba de WiFi. Exoneré al switch tonto pasando temporalmente un cable largo desde el servidor hasta el switch gestionado.

El módem por cable y el router WiFi (una AirPort Extreme) tienen sendos conmutadores de 4 puertos incorporados, pero sólo se utiliza un puerto de cada uno, por lo que no pasa por ellos ningún tráfico que no sea absolutamente necesario. Los servidores DHCP y DNS de caché están desactivados en ambos routers, ya que esas funciones las realiza (¡con éxito!) el servidor en cuestión. El AirPort está en modo puente.

Y sí, he reiniciado el servidor. Y los clientes. Y los routers. Y los conmutadores. :)

Mi mejor conjetura es que el problema proviene de haber actualizado esta caja desde Lion Server. Si es así, una reinstalación completa lo arreglará, pero eso va en contra de toda mi formación en gestión de servidores Unix. Quiero arreglar este servidor en su lugar, si puedo.

4voto

Nate Puntos 220

OS X tiene (al menos) 3 cortafuegos. Dado que has desactivado el cortafuegos de aplicaciones (en Preferencias del Sistema -> Seguridad y Privacidad -> Cortafuegos) y has marcado el filtro de paquetes Berkeley ( pfctl -sa ), supongo que es el viejo ipfw el que está haciendo el bloqueo. Puedes comprobarlo con sudo ipfw show -- que listará las reglas activas, junto con el recuento de cuántos paquetes y bytes ha aplicado cada una:

$ sudo ipfw show
01000 19228642 23229993542 allow ip from any to any via lo0
01010        0           0 deny ip from any to 127.0.0.0/8
[etc...]
65534    23505     3467352 deny ip from any to any
65535        0           0 allow ip from any to any

Si su listado sólo muestra la regla #65535 (la regla permitida al final), mi suposición es errónea y tiene que buscar en otra parte. Si muestra otras reglas, es probable que tengas un programa de configuración de firewall de terceros instalado en algún lugar (no creo que el software de configuración ipfw suministrado por Apple siga existiendo en 10.8); echa un vistazo en /Library/StartupItems y /Library/LaunchDaemons para ver qué cosas pueden ser relevantes.

1voto

Abbafei Puntos 121

Abra Console.app y compruebe /var/log/appfirewall.log. Deberá comprobar si la solicitud de conexión llega al cortafuegos de la aplicación. Si llega allí y está permitida, compruebe /var/log/apache2/access_log y /var/log/apache2/error_log para ver si la petición llega a Apache. Si la petición está llegando a Apache, entonces el problema está probablemente en su(s) archivo(s) de configuración de Apache. Si ninguno de los registros anteriores muestra nada, compruebe el system.log para obtener pistas adicionales.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X