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

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

14 ответов


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

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

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

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

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

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


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

netstat -na | find "your_port"

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


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

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

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


(Если у вас есть PSVersion

enter image description here

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


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

portqry -n 11.22.33.44 -p tcp -e 80

мне это понравилось:

netstat -an | find "8080" 

из telnet

telnet 192.168.100.132 8080

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


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


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


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

netstat -an |find /i "listening"

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

netstat -a

в windows server можно использовать

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


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


другой вариант:tcping.

например:

tcping host port


Я думаю, ты у меня самый лучший, где вы можете проверить свои собственные порты, а также Порты другого домена.

www.yougetsignal.com/tools/open-ports


вот что сработало для меня,

  • открыть командную строку
  • введите telnet
  • Microsoft Telnet>открыть

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


другая утилита, которую я нашел, и хорошая и маленькая, Версия 2.0 Сканера Портов Командной Строки PortQry https://www.microsoft.com/en-us/download/details.aspx?id=17148

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