Как определить, открыт ли порт на сервере Windows?
Я пытаюсь установить сайт под альтернативным портом на сервере, но порт может быть закрыт брандмауэром. Есть ли способ отсканировать или на определенном порту, чтобы узнать, открыт ли он?
Ответы
Ответ 1
Предполагая, что это TCP-порт (а не UDP), который вы пытаетесь использовать:
-
На самом сервере используйте netstat -an
, чтобы проверить, какие порты прослушиваются
-
Извне, просто telnet host port
(или telnet host:port
в Unix-системах), чтобы узнать, отказано ли соединение, принято или тайм-ауты
В этом последнем тесте, в общем случае:
- Отключено соединение означает, что на этом порту ничего не выполняется.
- означает, что что-то работает на этом порту
- timeout означает, что брандмауэр блокирует доступ
В Win7 или Vista defaul опция "telnet" не распознается как внутренняя или внешняя команда, операционная программа или командный файл. Чтобы решить эту проблему, просто включите ее: нажмите "Пуск", "Панель управления", "Программы", а затем "Включить или отключить Windows". В списке прокрутите вниз и выберите "Клиент Telnet" и нажмите "ОК"
Ответ 2
Просто хотел добавить, что в Windows вы можете использовать
netstat -na | find "your_port"
чтобы сузить результаты. Вы также можете фильтровать для LISTENING
, ESTABLISHED
, TCP
и т.д. Имейте в виду, что он чувствителен к ошибкам.
Ответ 3
Мне понравилось:
netstat -an | find "8080"
из telnet
telnet 192.168.100.132 8080
И просто убедитесь, что на этой машине отключен брандмауэр.
Ответ 4
На компьютере с Windows вы можете использовать PortQry от Microsoft, чтобы проверить, уже ли приложение уже прослушивает определенный порт, используя следующую команду:
portqry -n 11.22.33.44 -p tcp -e 80
Ответ 5
Если вы проверяете извне, а не с самого сервера, и не хотите беспокоиться о установке telnet (так как это не относится к последним версиям Windows) или к любому другому программному обеспечению, тогда у вас есть родной PowerShell:
Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed
(К сожалению, это работает только с PowerShell 4.0 или новее. Чтобы проверить версию вашего PS, введите $PSVersionTable
.)
(Если у вас есть PSVersion < 4.0, вам не повезло. Проверьте эту таблицу:
![введите описание изображения здесь]()
Несмотря на то, что вы можете обновить версию PowerShell, установив Windows Management Framework 4.0, это не помогло мне, Test-NetConnection все еще недоступен).
Ответ 6
Если telnet недоступен, загрузите PuTTY. Это гораздо лучший клиент telnet, ssh и т.д., И он будет полезен во многих ситуациях, а не только для этого, особенно если вы управляете сервером.
Ответ 7
Вам нужен инструмент для этого? Существует веб-сайт http://www.canyouseeme.org/. В противном случае вам понадобится другой сервер, чтобы перезвонить вам, чтобы узнать, открыт ли порт...
Ответ 8
Используйте это, если вы хотите видеть все используемые и прослушивающие порты на сервере Windows:
netstat -an |find /i "listening"
Показать все открытые, прослушиваемые, установленные порты:
netstat -a
Ответ 9
На сервере Windows вы можете использовать
netstat -an | where{$_.Contains("Yourport")}
Ответ 10
psping из Sysinternals также очень хорош
Ответ 11
Другим вариантом является tcping.
Например:
tcping host port
Ответ 12
Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed
Приведенный выше пример PowerShell действителен только для версий Windows выше Windows 7. Командлет несовместим с Windows 7.
Ответ 13
Вот что сработало для меня,
- открыть командную строку
- тип telnet
- Microsoft Telnet > открыть
Он подтвердит, открыт ли порт.
Ответ 14
Я думаю, что лучшее, что я получил, это то, где вы можете проверить свои собственные порты, а также другие порты домена.
www.checkmyports.net
Ответ 15
Другая полезность, которую я нашел, и хороша и мала,
PortQry командной строки Port Scanner версии 2.0
https://www.microsoft.com/en-us/download/details.aspx?id=17148
вы можете выполнить ping сервер и порт, и он сообщит вам состояние порта, для него есть утилита командной строки и пользовательский интерфейс.