Ich versuche, Port 80 für meinen Anwendungsserver zu verwenden, aber wenn ich "netstat -aon" ausführe, erhalte ich
TCP 0.0.0.0:80 0.0.0.0:0 HÖREN 4
Wenn ich den Prozess im Task-Manager nachschlage, wird angezeigt, dass PID 4 SYSTEM ist, das ist es, keine Erweiterung ... nichts, nur "SYSTEM". Was ist denn hier los?
Ich habe Angst, diesen Prozess zu beenden. Was mache ich?
Antworten:
Obwohl auf bestimmte Dienste hingewiesen wird (z. B. der "Web Deployment Agent-Dienst"), wird die Hauptursache dadurch nicht behoben. Wenn Sie nur Dienste deaktivieren, die das Problem auslösen, besteht die Möglichkeit, dass sie in Zukunft in einer geringfügig anderen Form wieder den Kopf erheben. Es lohnt sich also zu verstehen, was falsch läuft, denn das führt zu einer besseren Lösung.
Dieses Problem tritt auf, wenn ein Anwendungsserver die vollständige Kontrolle über Port 80 wünscht. Dies steht im Widerspruch zu einer Windows-Funktion, mit der mehrere Prozesse Anforderungen an Port 80 verarbeiten können. Es ist durchaus möglich, dass eine beliebige Anzahl von Prozessen HTTP-Anforderungen an Port empfängt 80, da Windows über einen integrierten HTTP-Versandmechanismus verfügt. Jeder Prozess kann Windows mitteilen, welche URLs verarbeitet werden sollen.
Wenn ein Anwendungsserver dies jedoch völlig ignoriert, befinden Sie sich wieder in der weniger flexiblen Socket-Welt der alten Schule, in der nur ein Prozess Anforderungen empfangen kann, die für einen bestimmten Port bestimmt sind.
Das mag in Ordnung sein - wenn Sie wirklich nichts anderes als einen bestimmten Prozess wollen, der HTTP-Anforderungen an Port 80 verarbeitet, wird es tolerierbar, einen Anwendungsserver zu verwenden, der die flexibleren Mechanismen von Windows nicht unterstützt. (Und einige beliebte App-Server haben diese Einschränkung. AFAIK, Tomcat ist beispielsweise nicht in der Lage, gut mit anderen zu spielen, und besteht darauf, Port 80 für sich allein zu haben. Wenn Sie also den App-Server eines anderen verwenden, ist dies möglicherweise unpraktisch passen Sie es an, um den bevorzugten Mechanismus zu verwenden.)
Windows versucht, solche unflexiblen Dienste zu berücksichtigen, indem es seinen Versandmechanismus nicht an Port 80 bindet, bis etwas aktiv danach fragt. (Aus diesem Grund wird anfangs nicht unbedingt ein Problem angezeigt, das jedoch nach einer Aktualisierung oder Konfigurationsänderung auftreten kann.) Aber sich darauf zu verlassen, ist keine sehr solide Lösung - Sie vertrauen im Wesentlichen auf das Glück, dass nichts versucht, unter Port 80 abzuhören, bevor Ihr App-Server gestartet wird. (Es gibt verschiedene Gründe, warum ein Prozess spekulativ versuchen könnte, sich für bestimmte URLs an Port 80 zu registrieren und sich zurückzuziehen, wenn dies nicht zulässig ist.)
Wenn Sie also möchten, dass ein Dienst exklusiven Zugriff auf Port 80 hat, sollten Sie dies Windows mitteilen. Es ist nicht gut genug, um zu versuchen, alle Dienste auszuschalten, die möglicherweise versuchen, den üblichen Mechanismus zur Portfreigabe zu verwenden, da es schwierig ist, sicher zu sein, dass Sie alle gefunden haben. (Insbesondere, wenn Windows-Updates die Standardeinstellungen zu ändern scheinen.) Es ist wahrscheinlich empfehlenswert, die Ihnen bekannten zu deaktivieren. Am besten gehen Sie jedoch von beiden Seiten vor: Deaktivieren Sie nicht gewünschte Dienste und stellen Sie sicher, dass dies nicht der Fall ist möglich für diejenigen, von denen du nicht wusstest, dass sie dich stolpern lassen.
Standardmäßig
HTTP.SYS
(der zugrunde liegende HTTP-Versandmechanismus für die Portfreigabe in Windows) kann alle Adressen abhören. Aber man kann es nicht sagen. Diese Seite zeigt einen Weg, dies zu tun: http://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/Dies ist eine relativ einfache Methode, da weiterhin IPh6 auf localhost abgehört werden kann. Es gibt nur den IPv4-Port 80 frei. Sie können ihn mit einer spezielleren Konfiguration weiterentwickeln. (Sie können sogar die Funktion
HTTP.SYS
vollständig deaktivieren , dies kann jedoch zu Problemen mit anderen Ports als 80 führen, sodass Probleme auftreten können.)Was auch immer Sie tun, es geht darum sicherzustellen, dass
HTTP.SYS
nicht versucht wird, Port 80 an der IP-Adresse abzuhören, die Ihnen wichtig ist. Sobald Sie dies getan haben, müssen Sie sich weder um das Deaktivieren von Diensten noch um andere Änderungen kümmern, die das Problem erneut einführen. Wenn Sie sichergestellt haben, dass der von Ihnen benötigte Endpunkt für die Portfreigabe praktisch außerhalb der Grenzen liegt, sollten Sie feststellen, dass der Systemprozess nicht mehr an ihn gebunden ist.quelle
Schuldig war der Web Deployment Agent Service.
Bessere Lösung als
net stop http
das Beenden der Dienste mit dem Namen "Web Deployment Agent Service".quelle
World Wide Web Publishing Service
. Während "net stop http" selbst eine wirklich brutale Antwort voller böser Nebenwirkungen ist - Dienste wie Ihr Druckspooler und ein Teil des Windows 10-Anmeldevorgangs basieren auf http -, gibt es eine Liste von, wenn Sie es versuchen Dienste, die von http abhängen, und die Option zum Zurücksetzen. Als ich die kleine Handvoll Dienste in dieser Liste nacheinander ausprobierte, stellte ich fest, dass der WWW-Veröffentlichungsdienst der Schuldige war.Es ist höchstwahrscheinlich IIS 6.0 oder höher.
quelle
Versuchen Sie, das zu stoppen,
HTTP.SYS
indem Sie inDevice Manager/Non Plug and Play Drivers
und Select gehenHTTP
. Versuchen Sie , es zu stoppen, und Sie sehen Dienste, die dieses HTTP auslösen, um Port 80 zu verwenden.quelle
Zuletzt habe ich überprüft, dass Sie den "System" -Prozess nicht beenden können, und wenn Sie dies tun, wird dies vermutlich katastrophale Auswirkungen haben. Ich werde es auch nicht auf dem PC versuchen, auf dem ich mich gerade befinde!
Es scheint, dass etwas in Windows selbst zuhört: 80 - Ich werde vermuten, dass es etwas Bösartiges sein könnte. Der beste Weg, dies herauszufinden, ist entweder:
a) Öffnen Sie einen Webbrowser für localhost und sehen Sie, was auf Sie zukommt
b) Starten Sie Telnet und Telnet auf localhost 80 und führen Sie ein grundlegendes HTTP-GET (z. B. GET /) aus, um zu sehen, was es zurückgibt
B ist die bessere Option, wenn Sie glauben, Malware zu hosten, da Sie sich nicht wirklich erneut infizieren möchten. Obwohl es vielleicht keine Rolle spielt.
quelle
Ich fand die Antwort auf diese Frage unter: /superuser/352017/pid4-using-port-80
Insbesondere wenn es sich um System Process 4 handelt, müssen Sie den HTTP.sys-Treiber deaktivieren, der bei Bedarf von einem anderen Dienst wie Windows Remote Management oder Print Spooler unter Windows 7 oder 2008 gestartet wird.
Starten Sie neu und verwenden Sie netstat -nao | Suchen Sie nach ": 80", um zu überprüfen, ob 80 noch verwendet wird.
Ich habe auch versucht, den Port durch einfaches Ausführen eines "Net Stop http" wiederherzustellen, aber der Port schien nie wieder freigegeben zu werden. Das obige hat jedoch für mich funktioniert, und ich brauchte keine anderen Dienste, die von diesem Treiber abhängig waren.
quelle
Windows Sync Share hat uns unter Windows 2012 R2 umgebracht. Nachdem wir diese Funktion deaktiviert hatten, lief alles einwandfrei.
quelle
In meinem Fall lag es daran, dass das Carbon Black-Antivirus irgendwie einen Würgegriff an Port 80 hatte. Ich habe Stunden damit verbracht, es herauszufinden, deshalb fühle ich mich verpflichtet, es zu teilen, nur für den Fall, dass es eine arme Mitseele zum Licht führt :) Ich ziehe an Ich weiß nicht, wie es genau behoben wurde. Fragen Sie Ihr Server- / Netzwerkteam!
quelle
Ich habe dies durch eine Stackoverflow-Frage gelöst. Folgen Sie diesem Link , um die Lösung zu finden, wie IIS auf Port 80 aufhört, nach einer bestimmten IP-Adresse zu suchen.
quelle