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

<p>на платформе windows какие собственные опции нужно проверить, не заблокирован ли порт (например, 3306) на моей локальной машине (как в <code>localhost</code>)?</p>

<p>поскольку вы находитесь на компьютере с windows, эти вещи можно сделать,</p><ul> <li> <p>выполните следующую команду и найдите прослушиватель ": 3306" (вы не упомянули udp/tcp). это подтвердит, что что-то работает в порту.</p> <p><b>netstat -a -n</b></p> </li> <li> <p>после этого, если вы ожидаете входящие соединения через этот порт и чувствуете, что брандмауэр может их блокировать, вы можете <b>начать протоколирование брандмауэра windows</b> и проверьте журналы на предмет разорванных соединений</p> <ul> <li>зайдите в брандмауэр windows, расширенные настройки</li> <li>нажмите на кнопку настройки рядом с "подключение по локальной сети"</li> <li>выберите "журнал пропущенных пакетов"</li> <li>посмотрите на местоположение файла журнала (если нет, укажите его)</li> <li>нажмите ок</li> <li>теперь, когда сделана попытка подключения (при условии, что вы знаете, когда это будет сделано), посмотрите на файл журнала на наличие сброса порта 3306.</li> <li>если это видно, вы захотите добавить исключение для этого порта.</li> </ul> </li> <li> <p>есть еще одна команда для проверки состояния брандмауэра<br> (обновление для пользователей windows 7 - как указано в <code>nick</code> ниже - используйте <a href="http://support.microsoft.com/kb/947709"><strong> netsh advfirewall firewall </strong></a> )</p> <p><b>netsh firewall показать состояние</b></p> <ul> <li>это перечислит заблокированные порты так же как активные порты прослушивания с ассоциациями приложений</li> </ul> </li> <li> <p>эта команда выведет подробности конфигурации брандмауэра windows</p> <p><b>netsh firewall show config</b></p> </li> </ul><hr><p>если у вас есть активный блок (входящие соединения сбрасываются брандмауэром) после начала регистрации, вы должны увидеть это в журнале.</p><p>если вы используете приложение/службу, которая прослушивает 3306, <b>настройка брандмауэра</b> должен показать, что он включен. если этого не видно, вы, вероятно, пропустили добавление исключения с брандмауэром, чтобы разрешить это приложение/службу.</p><p>наконец, порт 3306 обычно используется для mysql. итак, я предполагаю, что вы используете сервер mysql на этой машине windows. поэтому вы должны увидеть слушателя 3306, принимающего входящие соединения. если вы этого не видите, вам нужно сначала поработать с вашим приложением (mysql).</p>

<p><code>netstat</code> сообщит вам, если порт <em> прослушивает</em>, но не сообщит, если порт <em> открыт</em> для внешнего мира. под этим я подразумеваю, что <code>netstat</code> может показывать, что 0.0.0.0 listening на порту 3306, но брандмауэр все еще может блокировать этот порт, который предотвращает внешние соединения; поэтому недостаточно полагаться только на <code>netstat</code>.</p><p><strong> <em> лучший способ проверить, заблокирован ли порт, - это выполнить сканирование портов с клиентского компьютера.</em> </strong></p><p>существует много способов сканирования портов, но, поскольку вы упомянули, что находитесь в windows, я предложу утилиту командной строки microsoft <a href="https://www.microsoft.com/en-us/download/details.aspx?id=17148"><code>portqry</code></a> и графическую версию <a href="https://www.microsoft.com/en-us/download/details.aspx?id=24009">portqryui</a> </p><p>чтобы проверить все открытые порты:</p><pre><code>portqry.exe -n #.#.#.# </code></pre><p>чтобы проверить определенный порт:</p><pre><code>portqry.exe -n #.#.#.# -e # </code></pre><p>например, чтобы проверить веб-интерфейс маршрутизатора на 192.168.1.1:</p><pre><code>portqry.exe -n 192.168.1.1 -e 80 </code></pre><p>который возвращает:</p><pre><code>tcp port 80 (http service): listening </code></pre><p>где, как показывает тестирование на локальной машине без запущенного httpd:</p><pre><code>tcp port 80 (http service): not listening </code></pre><p>используя утилиту portscan, вы получите один из 3 результатов.</p><ul> <li><code>listening</code> означает, что сервер прослушивает указанный порт</li> <li><code>filtered</code> означает, что он получил tcp пакет подтверждения с установленным флагом сброса, который, вероятно, указывает на проблему с брандмауэром или программным обеспечением</li> <li><code>not listening</code> означает, что он вообще не получил ответа</li> </ul><hr><p><code>telnet</code> - это еще один параметр командной строки, который обычно устанавливается в ос по умолчанию. эту утилиту командной строки можно использовать для быстрого просмотра того, реагирует ли порт на сетевой запрос.</p><p>чтобы использовать <code>telnet</code>, вы просто должны выполнить следующую команду из командной строки:</p><pre><code>telnet localhost 3306 </code></pre><p>команда выше должна дать вам быстрое указание, если порт <code>3306</code> на <code>localhost</code> отвечает.</p>

<p>начиная с powershell 4.0 вы можете использовать команду <code>test-netconnection</code></p><p>если вы хотите проверить порт 3306, как в вашем примере, команда</p><pre><code>test-netconnection -computername localhost -port 3306 </code></pre><p> <a href="https://technet.microsoft.com/de-de/library/dn372891.aspx?f=255&mspperror=-2147217396">документация technet test-netconnection</a> </p>

<p>если вы можете подключиться к порту через telnet с локального компьютера (используя внешний ip-адрес), но не с другого компьютера, он будет заблокирован где-то посередине.</p><p>обратите внимание, что брандмауэр на вашем локальном компьютере <em>может</em> предотвратить даже первое действие.</p>