web-dev-qa-db-de.com

Keine Ahnung, was auf Port 80 in OS X lauscht

Ich verwende OSX Mountain Lion 10.8.3 und habe meinen Mac neu gestartet.

Ich möchte einen Dienst starten (wie Apache auf Port 80), aber mit Port 80 ist bereits etwas los:

telnet localhost 80

Trying ::1...
Connected to localhost.
Escape character is '^]'.

Warten Sie, ich höre Sie sagen, Sie können das mit lsof oder netstat finden. Außer es ist nichts da

netstat -an | grep LISTEN | grep '\.80'

*comes back blank*

lsof -i :80 | grep LISTEN

*comes back blank

Nach dem, was ich über Unix-Systeme weiß, muss dies dann eine Paketweiterleitungsregel sein? Das heißt Pakete werden vom eingehenden Port 80 an eine andere Stelle weitergeleitet, die diesen Dienst abhört.

ipfw show

65535 0 0 allow ip from any to any

Hmm, da ist nichts Ungewöhnliches

pfctl -s nat

No ALTQ support in kernel
ALTQ related functions disabled

Nichts ungewöhnliches da

Meine Frage ist, wie kann ich Regeln für die Weiterleitung von Paketen anzeigen ... Unter Linux kann ich einfach iptables -L -t NAT oder iptables -L ausführen. Oder können mir OSX-Experten bei der Diagnose dieses Problems helfen?

34
geoff

Sie müssen diese Befehle als root ausführen, um die Prozesse anderer Benutzer anzuzeigen. Beispiel:

Sudo lsof -i ':80'

Mac OS X enthält einen Apache-Webserver, der mit apachectl als root gesteuert werden kann. Es wird normalerweise über launchd gestartet, die entsprechende Konfigurationsdatei lautet /System/Library/LaunchAgents/org.Apache.httpd.plist. Wenn nicht dieser Apache auf Port 80 läuft, ist es wahrscheinlich launchd , Apples Implementierung eines Daemon-Managers. Laut Wikipedia :

Wenn launchd beim Booten die Joblisten durchsucht, reserviert und überwacht es alle von diesen Jobs angeforderten Ports. Wenn dies in der Liste durch die "OnDemand" -Taste angezeigt wird, wird der Dämon zu diesem Zeitpunkt nicht geladen. Stattdessen überwacht launchd den Port, startet den Dämon bei Bedarf und fährt ihn herunter, wenn dies nicht der Fall ist. Nachdem ein Daemon geladen wurde, wird er von launchd protokolliert und bei Bedarf ausgeführt.

45
Daniel Beck

Nur um die eigentliche Antwort zu verdeutlichen, falls Benutzer danach suchen.

  1. launchd scannt den /System/Library/LaunchDaemons/ beim Booten und ermittelt aus dem org.Apache.httpd.plist, dass er beim Start von Apache Port 80 darauf weiterleiten muss.

  2. Sudo apachectl start wurde ausgeführt

  3. Es gab jedoch einen Fehler in der httpd.conf-Datei, der bedeutete, dass Apache nicht gestartet wurde, obwohl dies nicht über den Befehl apachectl gemeldet wurde.

  4. Launchd beschloss, Port 80 abzuhören, da er dachte, Apache sei aktiv.

  5. Der Inhalt einer HTTP-Anfrage führte jedoch dazu, dass die Verbindung sofort geschlossen wurde.

  6. Sudo lsof -i :80 gab keine Antworten

  7. Sudo netstat -an | grep LISTEN gab keine Antwort für Port 80

  8. soweit ich in Diagnosetools feststellen konnte, gab es keine Informationen, die zeigten, dass Port 80 verwendet wurde oder überwacht wurde.

  9. das Reparieren der httpd.conf von Apache und der erfolgreiche Neustart von Apache, sodass httpd in der ps-Tabelle enthalten war, führte dazu, dass HTTP-Anforderungen erfolgreich waren.

  10. Ich habe mich daher geirrt, dass ich Apache nicht ausführen konnte, weil auf Port 80 bereits etwas zu hören war, und nicht Apache conf selbst die Ursache war

7
geoff

Ich bin gerade auf dasselbe Problem mit OSX El Capitan und Avast Antivirus gestoßen. Sudo lsof -i ':80' hat eine Verbindung zu avast.com hergestellt.

[email protected] ~|master$ Sudo lsof -i ':80'
Password:
COMMAND    PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
com.avast 7964 root   58u  IPv4 0xc4c1bba31fcc2c7f      0t0  TCP 192.168.100.111:52381->mia04-004.ff.avast.com:http (ESTABLISHED)

Ich musste

  1. deinstalliere Avast mit /Applications/Uninstall Avast.app
  2. Sudo rm -rf "/Library/Application Support/Avast" "/Applications/Avast Business Security.app" "/Applications/Uninstall Avast.app"
  3. neustart

um zu verhindern, dass Port 80 verwendet wird.

0
spyle