Mac OS X Server ignora le connessioni HTTP remote, ma accetta quelle locali

5

Non riesco a ottenere il server Web di Mac OS X Server per accettare connessioni da altri computer sulla stessa LAN. Si tratta di OS X 10.8.2, in esecuzione su un Mac mini, originariamente fornito con Lion Server.

I può connettersi ad esso dal server stesso, ad esempio andando a http://localhost o http://hostname.example.com in Safari.

Si noti che la connessione tramite il nome di dominio della scatola funziona. Questo perché:

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

Ovvero, Apache sta ascoltando su tutte le interfacce, non solo lo .

Se I telnet server 80 da una macchina client mentre faccio un'acquisizione di pacchetti su entrambi i lati, vedo solo pacchetti SYN di TCP ripetuti. ( prospettiva server , prospettiva client )

Disattivare il firewall nel riquadro delle impostazioni di sicurezza e privacy non modifica il sintomo.

La configurazione del firewall mi sembra innocua . (Scaricato tramite pfctl -sa .)

Sono certo che il problema non è dal lato client. Ho provato ad accedervi da:

  • un mese di iMac su GigE
  • un MacBook Pro di 2 anni tramite WiFi
  • un netbook di 5 anni con Ubuntu 12.04 su GigE e WiFi

Questo server è senza testa e faccio tutto il mio lavoro su di esso dai computer client sulla LAN, tramite SSH e VNC. Ciò significa che mentre non riesco a collegarmi a questo server sulla porta TCP 80, lo sto usando con successo sulle porte TCP 22 e 5900. Questo comportamento mi ha indotto a iniziare a guardare la configurazione del firewall.

Ecco come appare la rete:

Ci sono due switch di rete perché questa rete è distribuita su due stanze, con un interruttore in ogni stanza e un singolo cavo che va tra di loro. Ho escluso l'interruttore gestito come fonte di problemi con il test WiFi. Ho scagionato l'interruttore stupido eseguendo temporaneamente un cavo lungo dal server allo switch gestito.

Il modem via cavo e il router WiFi (un AirPort Extreme) hanno ciascuno switch a 4 porte integrati, ma viene utilizzata solo una porta su ciascuno, quindi nessun traffico passa attraverso di essi che non è assolutamente necessario. I server DNS DHCP e di memorizzazione nella cache sono disattivati su entrambi i router, poiché tali compiti vengono eseguiti (con successo!) Dal server in questione. AirPort è in modalità solo bridging.

E sì, ho riavviato il server. E i clienti. E i router. E gli interruttori. :)

La mia ipotesi migliore è che il problema deriva dall'aggiornamento di questa casella da Lion Server. In tal caso, una reinstallazione completa risolverà questo problema, ma ciò va contro tutti i miei corsi di formazione per i server Unix. Voglio sistemare questo server, se possibile.

    
posta Warren Young 06.02.2013 - 22:26
fonte

2 risposte

4

OS X ha in realtà (almeno) 3 firewall. Dato che hai disattivato il firewall dell'applicazione (in Preferenze di Sistema - > Sicurezza e privacy - > Firewall) e controllato il filtro del pacchetto Berkeley ( pfctl -sa ), suppongo che sia il vecchio ipfw che sta facendo il blocco. Puoi controllare con sudo ipfw show - questo elencherà le regole attive, insieme ai conteggi del numero di pacchetti e byte a cui ognuno ha applicato:

$ 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

Se la tua lista mostra solo la regola # 65535 (la regola di autorizzazione alla fine), la mia ipotesi è sbagliata e devi cercare altrove. Se mostra altre regole, probabilmente hai installato un programma di configurazione firewall di terze parti da qualche parte (non credo che il software di configurazione ipfw fornito da Apple sia ancora presente in 10.8); dai un'occhiata a / Library / StartupItems e / Library / LaunchDaemons per le cose che potrebbero essere rilevanti.

    
risposta data 20.09.2013 - 07:06
fonte
1

Apri Console.app e controlla /var/log/appfirewall.log. Si cercherà di vedere se la richiesta di connessione raggiunge anche il firewall dell'app. Se raggiunge E AND è consentito controllare successivamente sia / var / log / apache2 / access_log e / var / log / apache2 / error_log per vedere se la richiesta sta raggiungendo Apache. Se la richiesta sta raggiungendo Apache, il problema è probabilmente nei file di configurazione di Apache. Se nessuno dei registri precedenti mostra qualcosa, controlla system.log per ulteriori indizi.

    
risposta data 07.02.2013 - 03:42
fonte

Leggi altre domande sui tag