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?
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:
Zakładając, że próbujesz użyć portu TCP (zamiast UDP):
Na samym serwerze użyj, netstat -an
aby sprawdzić, które porty nasłuchują.
Z zewnątrz po prostu użyj telnet host port
(lub telnet host:port
w systemach Unix), aby sprawdzić, czy połączenie zostało odrzucone, zaakceptowane, czy upłynęły limity czasu.
W tym ostatnim teście, ogólnie:
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 sterowania → Programy → Włącz lub wyłącz Funkcje systemu Windows . Na liście przewiń w dół, wybierz Klient Telnet i kliknij OK.
Could not open connection to the host, on port *x*: Connect failed
oznacza?
telnet api-3t.sandbox.paypal.com 443
dostaję Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failed
Czy to dlatego, że zapora go blokuje?
o host port
vs linii poleceń (cmd.exe) otwartego i wpisztelnet host port
W systemie Windows możesz użyć
netstat -na | find "your_port"
zawęzić wyniki. Można również filtrować LISTENING
, ESTABLISHED
, TCP
i takie. Pamiętaj, że wielkość liter ma znaczenie.
find
nie działa w systemie Windows 10 dla mnie, ale netstat -na | findstr "8080"
pracował
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ę:
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).
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
portqry -n 11.22.33.44 -p udp -e 19132
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.
netstat -an | find "8080"
, no such file named "8080"
Jeśli telnet
nie 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.
Czy potrzebujesz narzędzia do tego? Istnieje strona internetowa pod adresem http://www.canyouseeme.org/ . W przeciwnym razie potrzebujesz innego serwera, aby oddzwonić, aby sprawdzić, czy port jest otwarty ...
W systemie Windows Server możesz używać
netstat -an | where{$_.Contains("Yourport")}
Innym narzędziem, które znalazłem i jest dobre i małe, jest PortQry Command Line Port Scanner wersja 2.0 .
Możesz pingować serwer i port, a poinformuje ono o stanie portu. Istnieje narzędzie wiersza polecenia i interfejs użytkownika.