Wie kann ich herausfinden, ob ein Port geöffnet ist oder nicht?

22

Ich habe den Apache-Server auf meinem Windows 7-Computer installiert. Ich konnte die Standarddatei index.php anzeigen, indem ich http: // localhost / in die Adresszeile meines Browsers eingab.

Ich kann diese Seite jedoch immer noch nicht sehen, wenn ich die IP-Adresse meines Computers eingebe (weder lokal (vom selben Computer) noch global (von einem anderen mit dem Internet verbundenen Computer)).

Mir wurde gesagt, dass ich Port 80 öffnen muss. Ich habe es getan (wie hier beschrieben ), aber es hat das Problem nicht gelöst.

Zunächst möchte ich prüfen, welche Ports geöffnet sind und welche nicht. Zum Beispiel bin ich mir nicht sicher, ob mein Port 80 geschlossen war, bevor ich versuchte zu öffnen. Ich bin mir auch nicht sicher, ob es geöffnet wird, nachdem ich versucht habe, es zu öffnen.

Ich habe versucht, einen sehr einfachen Webserver in Python zu betreiben. Dafür habe ich Port 81 benutzt und es hat funktioniert! Und ich habe nicht versucht, den Port 81 zu öffnen. Also wurde er standardmäßig geöffnet. Wenn also standardmäßig 81 geöffnet ist, warum dann nicht 80? Oder doch?

WEITERE INFORMATIONEN:
1. In meiner httpd.conf-Datei habe ich "Listen 80".
2. Diese Site teilt mir mit, dass Port 80 auf meinem Computer geöffnet ist.
3. Ich erhalte unterschiedliche Antworten, wenn ich http: // myip: 80 und http: // myip: 81 versuche . Im letzten Fall schreibt mir Browser (Chrome), dass der Link kaputt ist. Im ersten Fall bekomme ich: Verboten Sie haben keine Erlaubnis auf diesen Server zuzugreifen.
4. IE schreibt, dass "die Website abgelehnt hat, diese Webseite zu zeigen".

römisch
quelle
3
Wenn der erste Fall "Verboten" lautet, ist Ihr Stammverzeichnis oder Ihr virtueller Host nicht richtig eingerichtet.
Urda
Wenn Sie sich hinter einem Router befinden, haben Sie die Portweiterleitung auf dem Router eingerichtet? Ihr Router (meistens) verwendet Port 80 wahrscheinlich bereits für seine eigene webbasierte Administrationsoberfläche. In jedem Fall müssen Sie Anforderungen an Ihre öffentliche IP-Adresse (den Router) an die lokale IP-Adresse Ihres Computers an Port 80 (oder was auch immer) weiterleiten.
Jongosi,

Antworten:

16

Wenn Sie nur Ihre Ports von außen vor Ort überprüfen. Verwenden Sie dieses Tool:

http://www.yougetsignal.com/tools/open-ports/

Es wird versucht, eine Verbindung zu Ihrer IP-Adresse auf dem bestimmten Port herzustellen und Sie darüber zu informieren, ob diese für die Außenwelt offen oder geschlossen ist.

Lokale Probleme auch? Klingt so, als würde Sie die Windows 7-Firewall davon abhalten. Fügen Sie mit diesem Tutorial eine Ausnahme hinzu ...

http://www.sevenforums.com/tutorials/542-windows-firewall-add-remove-exception.html

Urda
quelle
Ich habe meine Ports mit yougetsignal.com/tools/open-ports überprüft . Diese Seite schreibt, dass mein Port 80 geöffnet ist (während 79 und 81 geschlossen sind).
Roman
Haben Sie Ihre Windows 7-Firewall-Ausnahmen überprüft? Es würde erklären, warum Sie es über localhostund nicht von anderen Computern aus erreichen können.
Urda
Urda, ich habe den Port 80 auf diese Weise maximumpcguides.com/windows-7/… geöffnet . Es sollte also für alle IPs geöffnet werden. Außerdem besagt die Site, die Sie mir geben, dass Port 80 geöffnet ist.
Roman
1
Wenn der erste Fall "Verboten" lautet, ist Ihr Stammverzeichnis oder Ihr virtueller Host in den meisten Fällen nicht richtig eingerichtet. Sie bekommen einen Link kaputt, weil 81 nicht aufgelöst wird.
Urda,
1
@ Kirk, es ist doch eine großartige Website!
Urda
13

Wenn Sie netstat -a -noder ss -a -nan einer Eingabeaufforderung ausführen, werden alle offenen Netzwerkverbindungen und die Überwachungsports auf Ihrem Computer angezeigt. 0.0.0.0:80würde bedeuten, dass es 80alle IP-Adressen (localhost und Ihre öffentlichen / privaten IP-Adressen) abhört, während 127.0.0.1:80es nur localhost abhört. Sie können -bden Befehl erweitern und es wird angezeigt, welche ausführbare Datei diesen Port verwendet. Dieselben Informationen erhalten Sie mit dem Ressourcenmonitor in Windows 7 im Abschnitt Überwachungsports auf der Registerkarte Netzwerk.

Greg Bray
quelle
5

Wenn Sie sehen möchten, ob es von einem anderen Server aus geöffnet ist, können Sie einfach feststellen, telnet serverName 80ob die Sitzung geöffnet ist. Ist dies nicht der Fall, lauscht der Server entweder nicht oder der Port wird von einer Firewall blockiert.

Wenn es sofort geöffnet und dann geschlossen wird, mindestens Windows 2003, ist die Software (z. B. Exchange) möglicherweise nicht für die Überwachung dieser bestimmten Schnittstelle oder IP-Adresse konfiguriert, überwacht jedoch andere Ports. Ich habe gesehen, wie sich IIS so verhält, weil es dumm ist, Apache vielleicht nicht.

Kyle Brandt
quelle
2

Sie schrieben:

Im ersten Fall bekomme ich: Verboten Sie haben keine Erlaubnis auf diesen Server zuzugreifen.

Obwohl dies seltsam klingt, haben Sie tatsächlich kein Problem mit offenen Ports (aber mit der Apache-Konfiguration).

Diese "Verbotene" Nachricht kommt von Ihrem Apache-Server. es bedeutet , dass Ihr Webserver ist aus dem Internet erreichbar.

Sie müssen Apache so konfigurieren, dass alle Hosts bedient werden können. Andernfalls wird die Seite "Verboten" angezeigt. IIRC, Apache ist anfänglich so eingerichtet, dass nur Anforderungen vom lokalen Computer zugelassen werden.

Irgendwo in Ihrer Apache-Konfiguration gibt es wahrscheinlich einen Abschnitt wie diesen (das tatsächliche Verzeichnis kann davon abweichen):

<Directory "/home/piskvor/www">
    Allow from 127.0.0.1
    Deny from all
(...)

Wenn Sie einen Computer zulassen möchten , um Ihre Seiten zu sehen, müssen Sie die Änderungen Deny from allzu Allow from all. Weitere Informationen finden Sie in der Dokumentation zum Zugriffsmodul .

Piskvor
quelle
1

Um offene Ports zu sehen, sollten Sie wahrscheinlich nmap verwenden. Sie haben eine Windows-Version: http://nmap.org/dist/nmap-5.21-setup.exe

Es reicht nicht aus, wenn Sie Ihren Port 80 von localhost aus geöffnet sehen - vielleicht steht etwas im Weg, wenn Sie es von einem anderen Ort aus versuchen. Deshalb empfehle ich nmap

Vom Client aus geben Sie Folgendes ein: nmap ip-of-your-server

raerek
quelle
1

Wenn Sie dies in Ihrem lokalen Netzwerk testen möchten, laden Sie nmap herunter. Wenn Sie sehen möchten, ob der Port für die Außenwelt zugänglich ist, führen Sie einen Scan unter https://www.grc.com/x/ne.dll?bh0bkyd2 durch

Jared
quelle
0

Serverports können entweder an eine einzelne IP-Adresse oder an jede verfügbare IP-Adresse gebunden werden. Es hört sich so an, als wäre Ihre Apache-Installation so eingerichtet, dass sie nur an 127.0.0.1 bindet, und Sie müssen sie so einrichten, dass sie an * bindet. Suchen Sie in Ihrer httpd.conf (im conf-Verzeichnis von Apache) nach einer Zeile wie Listen localhost:80und ändern Sie sie in Listen 80.

Andrew Aylett
quelle
1
Ich habe meine httpd.conf-Datei gefunden. In der Datei habe ich "Listen 80".
Roman
0

telnet <host> <port>ist dein Freund. Es hat die Tugend, auf so ziemlich jedem Computer der Welt installiert zu sein.

Bearbeitungen nach dem erneuten Lesen der Frage:

Hier sind einige nützliche Diagnosetipps

  1. Wenn Sie über localhost auf die Site zugreifen können, jedoch nicht über Ihre lokale IP-Adresse (192.168. *) von anderen Hosts in Ihrem Netzwerk, liegt wahrscheinlich ein Windows-Firewall-Problem vor.

  2. Wenn Sie von anderen standortlokalen Computern auf den Standort zugreifen können, jedoch nicht über das Internet, um Ihre öffentliche IP-Adresse zu erhalten, liegt ein Problem mit der Router- / Portweiterleitungskonfiguration vor.

jdizzle
quelle
0

Geben Sie an einer Eingabeaufforderung Folgendes ein:

netstat -ano, look for 0.0.0.0:80 

... oder deine IP: 80. Hier erfahren Sie, ob Port 80 auf Ihrem Computer geöffnet ist. Wenn Sie nun überprüfen möchten, ob Sie von außerhalb Ihres Netzwerks darauf zugreifen können, wird festgestellt, ob eine Firewall vorhanden ist. In diesem Fall müssen Sie Port 80 an Ihren Webserver weiterleiten.

Jason H
quelle
0

Wenn Sie unter Windows arbeiten, verwenden Sie SysInternals TCPView . Es kann Ihnen sagen, welches Programm welchen Port benutzt.

Bildschirmezu

Dio Phung
quelle
Vielen Dank, Dio Phung. Das Windows-Dienstprogramm ist wirklich hilfreich.
-2

Im DOS-Befehl:

C:\Windows\system32>netstat -a -b

使用中連線

  協定   本機位址               外部位址               狀態
  TCP    0.0.0.0:80             801781-N1:0            LISTENING     [Skype.exe]
  TCP    0.0.0.0:135            801781-N1:0            LISTENING      RpcSs      [svchost.exe]
  TCP    0.0.0.0:443            801781-N1:0            LISTENING     [Skype.exe]
...
Chi-Ming Tsai
quelle