Как определить, открыт ли порт на сервере Windows? - PullRequest
450 голосов
/ 07 ноября 2008

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

Ответы [ 14 ]

694 голосов
/ 07 ноября 2008

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

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

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

В последнем тесте, в общем:

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

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

.
166 голосов
/ 11 апреля 2013

Просто хотел добавить, что в Windows вы можете использовать

netstat -na | find "your_port"

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

70 голосов
/ 25 февраля 2016

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

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

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


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

enter image description here

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

42 голосов
/ 29 мая 2014

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

portqry -n 11.22.33.44 -p tcp -e 80
38 голосов
/ 06 марта 2014

Я так и сделал:

netstat -an | find "8080" 

из телнета

telnet 192.168.100.132 8080

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

24 голосов
/ 11 января 2011

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

13 голосов
/ 07 ноября 2008

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

10 голосов
/ 23 июня 2014

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

netstat -an |find /i "listening"

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

netstat -a
5 голосов
/ 03 мая 2013

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

netstat -an | where{$_.Contains("Yourport")}

3 голосов
/ 12 декабря 2014

psping от Sysinternals тоже очень хорошо

...