На платформе Windows, какие собственные опции нужно проверить localhost
, не заблокирован ли порт (например, 3306) на моей локальной машине (как в )?
На платформе Windows, какие собственные опции нужно проверить localhost
, не заблокирован ли порт (например, 3306) на моей локальной машине (как в )?
Ответы:
Поскольку вы находитесь на компьютере с Windows, эти вещи можно сделать,
Выполните следующую команду и найдите прослушиватель «: 3306» (вы не упомянули UDP / TCP). Это подтвердит, что что-то работает в порту.
netstat -a -n
После этого, если вы ожидаете входящие соединения через этот порт и чувствуете, что брандмауэр может их блокировать, вы можете запустить ведение журнала брандмауэра Windows и проверить журналы на наличие сброшенных соединений.
Существует еще одна команда для проверки состояния брандмауэра
(обновление для пользователей Windows 7 - как указано Nick
ниже - используйте netsh advfirewall firewall )
netsh firewall показать состояние
Эта команда выведет подробности конфигурации брандмауэра Windows
netsh firewall show config
Если у вас есть активный блок (входящие соединения сбрасываются брандмауэром) после начала регистрации, вы должны увидеть это в журнале.
Если вы используете приложение / службу, которая прослушивает 3306, конфигурация брандмауэра должна показать, что она включена. Если этого не видно, вы, вероятно, пропустили добавление исключения с брандмауэром, чтобы разрешить это приложение / службу.
Наконец, порт 3306 обычно используется для MySQL. Итак, я предполагаю, что вы используете сервер MySQL на этой машине Windows. Поэтому вы должны увидеть слушателя 3306, принимающего входящие соединения. Если вы этого не видите, вам нужно сначала поработать с вашим приложением (MySQL).
|find "3306"
в команду, например,C:\Windows\System32>netstat -an |find "3306"
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
.
Начиная с PowerShell 4.0 вы можете использовать команду Test-NetConnection
Если вы хотите проверить порт 3306, как в вашем примере, команда
Test-NetConnection -ComputerName localhost -Port 3306
Если вы можете подключиться к порту через telnet с локального компьютера (используя внешний IP-адрес), но не с другого компьютера, он будет заблокирован где-то посередине.
Обратите внимание, что брандмауэр на вашем локальном компьютере может предотвратить даже первое действие.