Как определить, открыт ли порт на сервере Windows? [закрыто]


478

Я пытаюсь установить сайт под альтернативным портом на сервере, но порт может быть закрыт брандмауэром. Есть ли способ проверить или открыть конкретный порт, чтобы увидеть, открыт ли он?


Ответы:


732

Предполагая, что это порт TCP (а не UDP), который вы пытаетесь использовать:

  1. На самом сервере используйте netstat -anдля проверки, какие порты прослушивают.

  2. Снаружи просто используйте telnet host port(или telnet host:portв системах Unix), чтобы увидеть, отказано ли соединение, принято или истекло время ожидания.

По этому последнему тесту, тогда вообще:

  • отказ в соединении означает, что на этом порту ничего не работает
  • Принятый означает, что что-то работает на этом порту
  • тайм-аут означает, что брандмауэр блокирует доступ

В Windows 7 или Windows Vista параметр по умолчанию «telnet» не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл. Чтобы решить эту проблему, просто включите ее: Нажмите * Пуск ** → Панель управленияПрограммыВключить или отключить функции Windows . В списке прокрутите вниз, выберите Telnet Client и нажмите OK.


312
В Win7 или Vista параметр по умолчанию «telnet» не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл. Чтобы решить эту проблему, просто включите ее: Нажмите Пуск, Панель управления, Программы, а затем Включите или выключите компоненты Windows. В списке прокрутите вниз, выберите Telnet Client и нажмите «OK»
volody

12
@PankajKohli использовать вместо этого клиент Telnet PuTTy . Это не должно быть установлено.
Колин Пикард

52
Что Could not open connection to the host, on port *x*: Connect failedозначает?
Кенни Эвитт

2
@Alnitak Я просто хотел проверить, так как думаю, что это уже отвечает на мой вопрос. Когда я telnet api-3t.sandbox.paypal.com 443получу Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failedэто, потому что это блокирует брандмауэр?
Попай

2
есть разница, если вы открываете telnet.exe, а затем набираете o host portvs open командной строки (cmd.exe), а затем telnet host port
набираете

185

На Windows вы можете использовать

netstat -na | find "your_port"

сузить результаты. Кроме того, можно фильтровать LISTENING, ESTABLISHED, TCPи тому подобное. Имейте в виду, что это с учетом регистра, хотя.


4
Вы не можете использовать поиск, как это, он будет искать файлы, вы должны использовать grep
Moataz Elmasry

38
@MoatazElmasry, это верно для Linux, но это на сервере Windows, где команда find является правильной. Grep недоступен в Windows. Я только что выполнил указанную здесь команду, и она отлично сработала.
Бен Уайатт

4
Когда я использовал эту команду, т.е. netstat -an | найти "19345", я не получил никакого результата. что это значит?
нанософт

14
findне работал в Windows 10 для меня, но netstat -na | findstr "8080"работал
Arun

6
ничего не происходит, не с find или findstr
полезноBee

85

Если вы проверяете извне, а не с самого сервера и не хотите беспокоиться об установке telnet (так как он не поставляется с последними версиями Windows) или любого другого программного обеспечения, то у вас есть собственный PowerShell:

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

(К сожалению, это работает только с PowerShell 4.0 или новее. Чтобы проверить версию PowerShell, введите $PSVersionTable.)

PS: Обратите внимание, что в эти дни есть некоторые претензии к twittersphere, которые намекают, что этот ответ можно улучшить, упомянув «Test-Connection» из PowerShell Core или ярлык «tnc». Смотрите https://twitter.com/david_obrien/status/1214082339203993600 и помогите мне отредактировать этот ответ, чтобы улучшить его, пожалуйста!


(Если у вас PSVersion <4.0, вам не повезло. Проверьте эту таблицу:

Введите описание изображения здесь

Несмотря на то, что вы можете обновить версию PowerShell, установив Windows Management Framework 4.0 , для меня это не помогло, командлет Test-NetConnection по-прежнему недоступен).


3
Это лучший ответ. Установка telnet не всегда проста на чужих серверах!
TrojanName

Определенно должен быть лучший ответ.
QtRoS

1
Это более надежный вариант, чем telnet, telnet просто зависнет, ничего не сообщая, в то время как он сообщает, что порт доступен в моем случае.
Axk

42

На компьютере с Windows вы можете использовать PortQry от Microsoft, чтобы проверить, прослушивает ли приложение уже определенный порт, используя следующую команду:

portqry -n 11.22.33.44 -p tcp -e 80

4
Firewalled порты обычно отображаются как «FILTERED».
Dlanod

Вы также можете использовать этот инструмент для проверки UDP-порта:portqry -n 11.22.33.44 -p udp -e 19132
Antony

41

Я сделал это так:

netstat -an | find "8080" 

из телнета

telnet 192.168.100.132 8080

И просто убедитесь, что на этой машине выключен брандмауэр.


Когда я использовал эту команду, т.е. netstat -an | найти "19345", я не получил никакого результата. что это значит? -
Нанософт

2
это означает, что этот порт свободен
Сарвар Нишонбоев

Я получаю сообщение об ошибке , когда я бегу netstat -an | find "8080"он говорит,no such file named "8080"
Pragyaditya Дас

24

Если telnetнет в наличии, загрузите PuTTY . Это значительно превосходящий клиент Telnet, SSH и т. Д., Который будет полезен во многих ситуациях, а не только в этой, особенно если вы управляете сервером.


Да, но не для вставки кода Forth, скажем, с AmForth (если только не используется PuTTY в сочетании с Edit Overflow ).
Питер Мортенсен

13

Вы хотите инструмент для этого? Есть веб-сайт по адресу http://www.canyouseeme.org/ . В противном случае вам понадобится какой-нибудь другой сервер, чтобы перезвонить вам и посмотреть, открыт ли порт ...


12

Используйте это, если вы хотите увидеть все используемые и прослушивающие порты на сервере Windows:

netstat -an |find /i "listening"

Посмотреть все открытые, прослушивающие, установленные порты:

netstat -a




1

Вот что сработало для меня:

  • Откройте командную строку
  • Тип telnet
  • Microsoft Telnet> open <имя хоста или IP-адрес> <пробел> <порт>

Он подтвердит, открыт ли порт.


0

Еще одна полезная программа, которую я нашел, а также хорошая и небольшая, - это PortQry Command Line Port Scanner версии 2.0 .

Вы можете пропинговать сервер и порт, и он сообщит вам состояние порта. Для этого есть утилита командной строки и пользовательский интерфейс.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.