it-swarm-ru.tech

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

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

109
Boris Pavlović

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

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

    netstat -a -n

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

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

    netsh firewall показать состояние

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

    netsh firewall show config


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

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

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

113
nik

NETSTAT сообщит вам, если порт прослушивает, но не сообщит, если порт открыт для внешнего мира. Под этим я подразумеваю, что NETSTAT может показывать, что 0.0.0.0 LISTENING на порту 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 отвечает.

25
Tim Penner

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

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

Test-NetConnection -ComputerName localhost -Port 3306

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

21
Marcel Janus

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

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

5
Brent