Вопрос: Как проверить, заблокирован ли порт на Windows-машине?


На платформе Windows, какие собственные параметры мне нужно проверить, если порт (например, 3306) на моей локальной машине (как в localhost), блокируется?


88
2018-06-16 14:21


Источник


Просто для того, чтобы уточнить, вы имеете в виду блокировку, как в заблокированном брандмауэре или шлюзе, или вы уже имеете в виду что-то еще? - squillman
Аудит теста My Firewall Firewall позволяет протестировать определенный порт или диапазон портов из внешнего источника. - Peter Stuer


Ответы:


Поскольку вы находитесь на машине под Windows, это можно сделать,

  • Выполните следующую команду и найдите прослушиватель «: 3306» (вы не указали UDP / TCP). Это подтвердит, что на порту что-то работает.

    netstat -a -n

  • После этого, если вы ожидаете входящих соединений на этом порту и чувствуете, что брандмауэр может блокировать их, вы можете запуск брандмауэра Windows и проверить журналы для сброшенных соединений

    • Перейти к брандмауэру Windows, расширенным настройкам
    • Нажмите кнопку «Настройки» рядом с «Подключение по локальной сети»
    • Выберите «Пакеты с отложенным протоколом»
    • Посмотрите на местоположение файла журнала (если не указано его определение)
    • Нажмите ОК.
    • Теперь, когда попытка подключения сделана (если вы знаете, когда это будет сделано), посмотрите файл журнала для перехода на порт 3306.
    • Если это видно, вам нужно добавить исключение для этого порта.
  • Существует еще одна команда для проверки состояния брандмауэра
    (Обновление для пользователей Windows 7 - как указано Nick ниже - использование Сетевой экран netsh advfirewall)

    Состояние экрана netsh firewall

    • в этом списке будут указаны заблокированные порты, а также активные порты прослушивания с ассоциациями приложений
  • Эта команда удалит детали конфигурации брандмауэра Windows

    показать конфигурацию брандмауэра netsh


Если у вас есть активный блок (входящие соединения удаляются брандмауэром) после начала регистрации, вы должны увидеть это в журнале.

Если вы используете приложение / службу, которая прослушивает 3306, настройка брандмауэра должен показать, что он включен. Если этого не видно, вы, вероятно, пропустили добавление исключения из брандмауэра, чтобы разрешить это приложение / службу.

Наконец, порт 3306 обычно используется для MySQL. Итак, я полагаю, вы используете сервер MySQL на этой машине Windows. Поэтому вы должны видеть слушателя, принимающего входящие соединения. Если вы этого не видите, вам нужно работать с вашим приложением (MySQL), чтобы начать сначала.


98
2018-06-16 14:28



+1 для отличных деталей - Sage
Начиная с Windows Vista, команда «netsh firewall» устарела. Он рекомендует использовать «netsh advfirewall firewall» вместо этого и ссылается на статью go.microsoft.com/fwlink/?linkid=121488 - Nick DeVore
Чтобы проанализировать вывод в командной строке, добавьте |find "3306" к команде, например. C:\Windows\System32>netstat -an |find "3306" - Cees Timmerman
Я не могу найти кнопку настроек, указанную в шаге 2 второй рекомендации ... - Bassie
@Bassie, попробуйте docs.microsoft.com/en-us/windows/access-protection/... - nik


NETSTAT сообщит вам, если порт прослушивание но он не скажет вам, является ли порт открытый к внешнему миру. Я имею в виду, что NETSTAT может показать, что 0.0.0.0 - ПРОСЛУШИВАНИЕ на порту 3306, но брандмауэр все еще может блокировать этот порт, который предотвращает внешние соединения; поэтому недостаточно полагаться на NETSTAT в одиночестве.

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

Существует много способов выполнить сканирование портов, но, поскольку вы упомянули о том, что находитесь в Windows, я предлагаю утилиту командной строки Microsoft PortQry и графическая версия PortQryUI

Чтобы проверить все открытые порты:

portqry.exe -n #.#.#.#   

Чтобы проверить конкретный порт:

portqry.exe -n #.#.#.# -e #

Например, чтобы протестировать веб-интерфейс маршрутизатора по адресу 192.168.1.1:

portqry.exe -n 192.168.1.1 -e 80

Что возвращает:

TCP port 80 (http service): LISTENING

Если тестирование на локальной машине без запуска HTTPD возвращает:

TCP port 80 (http service): NOT LISTENING

Используя утилиту PortScan, вы получите один из 3 результатов.

  • Listening означает, что сервер прослушивает указанный порт
  • Filtered означает, что он получил пакет подтверждения TCP с установленным флагом сброса, который, вероятно, указывает на проблему с брандмауэром или программным обеспечением
  • Not Listening означает, что он вообще не получил ответа

telnet это еще один параметр командной строки, который обычно устанавливается в ОС по умолчанию. Эта утилита командной строки может быть использована быстро, чтобы узнать, отвечает ли порт на сетевой запрос.

Использовать telnet вы просто выпустите следующую команду из командной строки:

telnet localhost 3306

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


15
2018-04-04 00:47



Я загружаю PortQryUI, и я проверил после того, как заблокировал и включил порт 445 как в tcp, так и в udp, он показывает то же прослушивание в tcp и не прослушивание в udp. - Liam neesan


Если вы можете telnet подключиться к порту с локального компьютера (используя внешний IP-адрес), но не с другого компьютера, то он блокируется где-то между ними.

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


5
2018-06-16 14:27



Обратите внимание, что telnet больше не устанавливается на Win7 и более новые системы. - Alexis Wilke
@AlexisWilke Это неверно. Telnet можно установить - deepdive
Чтобы установить telnet из командной строки: dism / online / Enable-Feature / FeatureName: TelnetClient - Jason Massey


С PowerShell 4.0 вы можете использовать команду Test-NetConnection

Если вы хотите протестировать порт 3306, как в вашем примере, команда

Test-NetConnection -ComputerName localhost -Port 3306

Документация TechNet Test-NetConnection


5
2018-01-17 14:56



+1 для этого. Действительно хорошая альтернатива, которая не требует установки чего-либо на большинстве современных оконных машин. - DCaugs