Я пытаюсь установить сайт под альтернативным портом на сервере, но порт может быть закрыт брандмауэром. Есть ли способ отсканировать или на определенном порту, чтобы узнать, открыт ли он?
Как определить, открыт ли порт на сервере 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
Я думаю, что лучшее, что я получил, это то, где вы можете проверить свои собственные порты, а также другие порты домена.
Ответ 15
Другая полезность, которую я нашел, и хороша и мала, PortQry командной строки Port Scanner версии 2.0 https://www.microsoft.com/en-us/download/details.aspx?id=17148
вы можете выполнить ping сервер и порт, и он сообщит вам состояние порта, для него есть утилита командной строки и пользовательский интерфейс.