Jak mogę sprawdzić, czy port jest otwarty, czy nie?

22

Zainstalowałem serwer Apache na moim komputerze z systemem Windows 7. Byłem w stanie wyświetlić domyślny index.php, wpisując http: // localhost / w wierszu adresu mojej przeglądarki.

Jednak nadal nie widzę tej strony, wpisując adres IP mojego komputera (ani lokalnie (z tego samego komputera), nie globalnie (z innego komputera podłączonego do Internetu)).

Powiedziano mi, że muszę otworzyć port 80. Zrobiłem to (w sposób opisany tutaj ), ale to nie rozwiązało problemu.

Przede wszystkim chciałbym sprawdzić, które porty są otwarte, a które nie. Na przykład nie jestem pewien, że mój port 80 został zamknięty przed próbą otwarcia. Nie jestem również pewien, czy jest otwarty po próbie otwarcia.

Próbowałem uruchomić bardzo prosty serwer WWW napisany w języku Python. Do tego użyłem portu 81 i zadziałało! I nie próbowałem otwierać portu 81. Więc został on domyślnie otwarty. Więc jeśli 81 jest domyślnie otwarte, dlaczego 80 nie jest? Czy to jest?

INFORMACJE DODATKOWE:
1. W moim pliku httpd.conf mam „Listen 80”.
2. Ta strona mówi mi, że port 80 na moim komputerze jest otwarty.
3. Otrzymuję różne odpowiedzi, jeśli spróbuję http: // myip: 80 i http: // myip: 81 . W ostatnim przypadku przeglądarka (Chrome) pisze, że link jest uszkodzony. W pierwszym przypadku otrzymuję: Zabronione Nie masz uprawnień dostępu / na tym serwerze.
4. IE pisze, że „Witryna odmówiła wyświetlenia tej strony”.

rzymski
źródło
3
Jeśli w pierwszym przypadku jest napisane „Zabronione”, katalog główny lub host wirtualny nie jest poprawnie skonfigurowany.
Urda
Zakładając, że jesteś za routerem, czy skonfigurowałeś przekierowanie portów na routerze? Twój router (najprawdopodobniej) prawdopodobnie korzysta już z portu 80 dla własnego interfejsu administratora. W każdym razie musisz przesłać żądania na swój publiczny adres IP (router) na lokalny adres IP komputera, na porcie 80 (lub cokolwiek innego).
Jongosi,

Odpowiedzi:

16

Jeśli chcesz tylko sprawdzić swoje porty z zewnątrz. Użyj tego narzędzia:

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

Spróbuje połączyć się z twoim adresem IP na określonym porcie i poinformuje cię, czy jest otwarty, czy zamknięty dla świata zewnętrznego.

Problemy lokalne też? Wygląda na to, że zapora systemu Windows 7 Cię odcina. Dodaj wyjątek w tym samouczku ...

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

Urda
źródło
Sprawdziłem moje porty za pomocą yougetsignal.com/tools/open-ports . Ta strona pisze, że mój port 80 jest otwarty (podczas gdy 79 i 81 są zamknięte).
Rzym.
Czy sprawdziłeś wyjątki zapory systemu Windows 7? Wyjaśniałoby to, dlaczego można do niego dotrzeć za pośrednictwem localhostinnych komputerów, a nie z niego.
Urda
Urda, otworzyłem port 80 w ten sposób maximumpcguides.com/windows-7/… . Tak więc należy go otworzyć dla wszystkich adresów IP. Co więcej, witryna, którą mi podałeś, mówi, że port 80 jest otwarty.
Rzym.
1
Jeśli w pierwszym przypadku jest napisane „Zabronione”, katalog główny lub wirtualny host nie jest poprawnie skonfigurowany w większości przypadków. Uszkodzony link, ponieważ 81 nie jest w stanie rozwiązać.
Urda,
1
@Kirk to w końcu świetna strona internetowa!
Urda
13

Uruchomienie netstat -a -nlub ss -a -nz wiersza polecenia pokaże wszystkie połączenia sieciowe otwarte i porty nasłuchujące na twoim komputerze. 0.0.0.0:80oznaczałoby, że nasłuchuje na porcie 80wszystkich adresów IP (localhost i twój publiczny / prywatny adres IP), co 127.0.0.1:80oznacza, że ​​nasłuchuje tylko na localhost. Możesz dodać -bdo polecenia, aby pokazać, który plik wykonywalny używa tego portu. Te same informacje można uzyskać za pomocą Monitora zasobów w systemie Windows 7 w sekcji Porty nasłuchiwania na karcie Sieć.

Greg Bray
źródło
5

Jeśli chcesz sprawdzić, czy jest otwarty z innego serwera, możesz po prostu telnet serverName 80sprawdzić, czy sesja się otworzy. Jeśli nie, to albo serwer nie nasłuchuje, albo port jest blokowany przez zaporę ogniową.

Jeśli otworzy się, a następnie natychmiast zamknie, przynajmniej Windows 2003, oprogramowanie (takie jak Exchange) może nie być skonfigurowane do nasłuchiwania na tym konkretnym interfejsie lub adresie IP, ale nasłuchuje na innych portach. Widziałem, jak IIS zachowują się w ten sposób, ponieważ jest głupi, Apache może nie.

Kyle Brandt
źródło
2

Napisałeś:

W pierwszym przypadku otrzymuję: Zabronione Nie masz uprawnień dostępu / na tym serwerze.

Chociaż może to zabrzmieć dziwnie, tak naprawdę nie masz problemu z otwartymi portami (ale z konfiguracją Apache).

Ta wiadomość „Zakazana” pochodzi z twojego serwera Apache; oznacza to, że twój serwer jest dostępny z Internetu.

Musisz skonfigurować Apache, aby zezwalał na serwowanie wszystkim hostom - w przeciwnym razie otrzymają stronę „Zabronione”. IIRC, Apache jest początkowo skonfigurowany tak, aby zezwalał tylko na żądania z komputera lokalnego.

Gdzieś w konfiguracji Apache'a prawdopodobnie znajduje się taka sekcja (rzeczywisty katalog może być inny):

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

Jeśli chcesz, aby każdy komputer, aby zobaczyć swoje strony, trzeba zmienić Deny from allsię Allow from all. Aby uzyskać więcej informacji, zobacz dokumentację modułu dostępu .

Piskvor
źródło
1

Aby zobaczyć otwarte porty, prawdopodobnie powinieneś użyć nmap. Mają wersję Windows: http://nmap.org/dist/nmap-5.21-setup.exe

Nie wystarczy, jeśli widzisz swój port 80 otwarty z lokalnego hosta - być może coś stoi na przeszkodzie, jeśli spróbujesz go z innego miejsca, dlatego polecam nmap

Od klienta wpisz: nmap ip-of-your-server

Raerek
źródło
1

Jeśli chcesz to sprawdzić w sieci lokalnej, pobierz nmap. Jeśli chcesz zobaczyć pogodę, port jest dostępny dla świata zewnętrznego, uruchom skan na https://www.grc.com/x/ne.dll?bh0bkyd2

Jared
źródło
0

Porty serwera mogą być powiązane z jednym adresem IP lub z każdym dostępnym adresem IP. Wygląda na to, że instalacja Apache jest skonfigurowana tak, aby wiązała się tylko z 127.0.0.1, i musisz ją skonfigurować, aby wiązała się z *. W httpd.conf (w katalogu conf Apache) poszukaj linii podobnej Listen localhost:80i zmień ją na Listen 80.

Andrew Aylett
źródło
1
Znalazłem mój plik httpd.conf. W pliku mam „Listen 80”.
Rzym.
0

telnet <host> <port>jest twoim przyjacielem. Ma tę zaletę, że jest instalowana na prawie każdym komputerze na świecie.

Edycje po ponownym przeczytaniu pytania:

Oto kilka przydatnych wskazówek diagnostycznych

  1. jeśli możesz uzyskać dostęp do witryny za pośrednictwem localhost, ale nie przez lokalny adres IP witryny (192.168. *) z innych hostów w sieci, prawdopodobnie jest to problem z zaporą systemu Windows.

  2. jeśli możesz uzyskać dostęp do witryny z innych komputerów lokalnych, ale nie z Internetu do publicznego adresu IP, jest to problem z konfiguracją routera / przekierowania portów.

jdizzle
źródło
0

W wierszu polecenia wpisz:

netstat -ano, look for 0.0.0.0:80 

... lub twój adres IP: 80. Dzięki temu dowiesz się, czy port 80 jest otwarty na twoim komputerze. Teraz, jeśli chcesz sprawdzić i sprawdzić, czy możesz uzyskać do niego dostęp spoza sieci, określisz, czy masz rodzaj zapory ogniowej. Jeśli to zrobisz, musisz przekierować port 80 na swój serwer WWW.

Jason H.
źródło
0

Jeśli korzystasz z systemu Windows, użyj SysInternals TCPView . Może ci powiedzieć, który program używa jakiego portu.

Screenshto

Dio Phung
źródło
Dzięki Dio Phung. To narzędzie Windows jest naprawdę pomocne.
-2

W poleceniu DOS:

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
źródło