Jak ustalić, czy port jest otwarty na serwerze Windows? [Zamknięte]


478

Próbuję zainstalować witrynę pod alternatywnym portem na serwerze, ale port może być zamknięty przez zaporę ogniową. Czy istnieje sposób pingowania lub wejścia na określonym porcie, aby sprawdzić, czy jest on otwarty?


Odpowiedzi:


732

Zakładając, że próbujesz użyć portu TCP (zamiast UDP):

  1. Na samym serwerze użyj, netstat -anaby sprawdzić, które porty nasłuchują.

  2. Z zewnątrz po prostu użyj telnet host port(lub telnet host:portw systemach Unix), aby sprawdzić, czy połączenie zostało odrzucone, zaakceptowane, czy upłynęły limity czasu.

W tym ostatnim teście, ogólnie:

  • odmowa połączenia oznacza, że ​​nic nie działa na tym porcie
  • Akceptowane oznacza, że ​​coś działa na tym porcie
  • Limit czasu oznacza, że ​​zapora blokuje dostęp

W systemie Windows 7 lub Windows Vista domyślna opcja „telnet” nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy. Aby rozwiązać ten problem, po prostu włącz go: Kliknij * Start ** → Panel sterowaniaProgramyWłącz lub wyłącz Funkcje systemu Windows . Na liście przewiń w dół, wybierz Klient Telnet i kliknij OK.


312
W wersji domyślnej Win7 lub Vista opcja „telnet” nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy. Aby rozwiązać ten problem, po prostu włącz go: Kliknij przycisk Start, Panel sterowania, Programy, a następnie Włącz lub wyłącz Funkcje systemu Windows. Na liście przewiń w dół i wybierz Klient Telnet i kliknij OK
volody

12
@PankajKohli zamiast tego użyj klienta telnet PuTTy . Nie trzeba go instalować.
Colin Pickard

52
Co to Could not open connection to the host, on port *x*: Connect failedoznacza?
Kenny Evitt

2
@Alnitak Chciałem tylko sprawdzić, ponieważ myślę, że to już odpowiada na moje pytanie. Kiedy telnet api-3t.sandbox.paypal.com 443dostaję Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failedCzy to dlatego, że zapora go blokuje?
Popeye

2
istnieje różnica jeśli otwarte Telnet.exe a następnie wpisz o host portvs linii poleceń (cmd.exe) otwartego i wpisztelnet host port
Paweł Cioch

185

W systemie Windows możesz użyć

netstat -na | find "your_port"

zawęzić wyniki. Można również filtrować LISTENING, ESTABLISHED, TCPi takie. Pamiętaj, że wielkość liter ma znaczenie.


4
nie możesz znaleźć w ten sposób, będzie szukał plików, powinieneś użyć grep
Moataz Elmasry 17.09.13

38
@MoatazElmasry, to prawda w systemie Linux, ale dzieje się tak na serwerze Windows, gdzie polecenie find jest poprawnym poleceniem. Grep nie jest dostępny w systemie Windows. Właśnie uruchomiłem dokładnie wspomniane polecenie i zadziałało idealnie.
Ben Wyatt

4
Kiedy użyłem tego polecenia, tj. Netstat -an | znaleźć „19345”, nie otrzymałem żadnego wyniku. co to znaczy?
nanosoft

14
findnie działa w systemie Windows 10 dla mnie, ale netstat -na | findstr "8080"pracował
Arun

6
nic się nie dzieje, nie z find ani findstr
przydatneBee

83

Jeśli sprawdzasz z zewnątrz, a nie z samego serwera i nie chcesz zawracać sobie głowy instalowaniem telnetu (ponieważ nie jest on dostarczany z ostatnimi wersjami systemu Windows) lub jakiegokolwiek innego oprogramowania, masz natywną wersję programu PowerShell:

Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed

(Niestety działa to tylko z PowerShell 4.0 lub nowszym. Aby sprawdzić wersję PowerShell, wpisz $PSVersionTable.)

PS: Zauważ, że w dzisiejszych czasach istnieją twitterowe sfery, które sugerują, że tę odpowiedź można poprawić, wspominając „Test-Connection” z PowerShell Core lub skrót „tnc”. Zobacz https://twitter.com/david_obrien/status/1214082339203993600 i pomóż mi edytować tę odpowiedź, aby ją poprawić, proszę!


(Jeśli masz PSVersion <4.0, nie masz szczęścia. Sprawdź tę tabelę:

Wpisz opis zdjęcia tutaj

Mimo że możesz uaktualnić swoją wersję PowerShell, instalując system Windows Management Framework 4.0 , nie udało mi się to, cmdlet Test-NetConnection jest nadal niedostępny).


3
To najlepsza odpowiedź. Instalacja telnetu nie zawsze jest prosta na serwerach innych osób!
TrojanName

Zdecydowanie musi być najlepszą odpowiedzią.
QtRoS,

1
Jest to bardziej niezawodna opcja niż telnet, telnet po prostu zawiesił się, nie zgłaszając niczego, podczas gdy to informuje, że port jest dostępny w moim przypadku.
axk

42

Na komputerze z systemem Windows możesz użyć PortQry firmy Microsoft, aby sprawdzić, czy aplikacja nasłuchuje na określonym porcie za pomocą następującego polecenia:

portqry -n 11.22.33.44 -p tcp -e 80

4
Porty zapory ogniowej są zazwyczaj wyświetlane jako „FILTROWANE”.
dlanod

Możesz także użyć tego narzędzia, aby sprawdzić port UDP:portqry -n 11.22.33.44 -p udp -e 19132
Antony

41

Podobało mi się to:

netstat -an | find "8080" 

z telnetu

telnet 192.168.100.132 8080

I tylko upewnij się, że zapora jest wyłączona na tym komputerze.


Kiedy użyłem tego polecenia, tj. Netstat -an | znaleźć „19345”, nie otrzymałem żadnego wyniku. co to znaczy? -
nanosoft

2
oznacza to, że ten port jest bezpłatny
Sarvar Nishonboev

Gdy uruchamiam netstat -an | find "8080", no such file named "8080"
pojawia

24

Jeśli telnetnie jest dostępny, pobierz PuTTY . Jest znacznie lepszym klientem Telnet, SSH itp. I będzie przydatny w wielu sytuacjach, nie tylko w tym, szczególnie jeśli administrujesz serwerem.


Tak, ale nie do wklejania kodu Forth, powiedzmy, w AmForth (chyba że używasz PuTTY w połączeniu z Edit Overflow ).
Peter Mortensen,


12

Użyj tego, jeśli chcesz zobaczyć wszystkie używane i nasłuchujące porty na serwerze Windows:

netstat -an |find /i "listening"

Zobacz wszystkie otwarte, nasłuchujące, ustanowione porty:

netstat -a




1

Oto, co zadziałało dla mnie:

  • Otwórz wiersz polecenia
  • Rodzaj telnet
  • Microsoft Telnet> otwórz <nazwa hosta lub adres IP> <spacja> <port>

Potwierdzi to, czy port jest otwarty.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.