Como verificar se uma porta está bloqueada em uma máquina Windows?

93

Na plataforma Windows, quais opções nativas devo verificar se uma porta (3306, por exemplo) na minha máquina local (como em localhost ) está sendo bloqueada?

    
por Boris Pavlović 16.06.2009 / 16:21

4 respostas

102

Como você está na máquina Windows, essas coisas podem ser feitas,

  • Execute o seguinte comando e procure por um listener ": 3306" (você não mencionou o UDP / TCP). Isso confirmará que há algo em execução na porta.

    netstat -a -n

  • Depois disso, se você está esperando conexões de entrada nesta porta e acha que o firewall pode estar bloqueando-as, você pode iniciar o log de firewall do Windows e verificar se há conexões perdidas nos logs

    • Ir para o Firewall do Windows, Configurações avançadas
    • Clique no botão Configurações ao lado de "Conexão local"
    • Selecione "Registrar pacotes ignorados"
    • Observe o local do arquivo de log (se não estiver presente, defina um)
    • Clique em OK
    • Agora, quando a tentativa de conexão é feita (supondo que você saiba quando isso é feito), procure no arquivo de log por uma queda na porta 3306.
    • Se isso for visto, você desejará adicionar uma exceção para essa porta.
  • Existe mais um comando para verificar o estado do firewall
    (Atualização para usuários do Windows 7 - conforme mencionado por Nick abaixo - use netsh advfirewall firewall )

    netsh estado de exibição do firewall

    • isso listará as portas bloqueadas, bem como as portas de escuta ativas com associações de aplicativos
  • Este comando irá descarregar o detalhe de configuração do firewall do Windows

    netsh firewall show config

Se você tem um bloco ativo (conexões de entrada estão sendo descartadas pelo firewall) depois de iniciar o registro, você deve ver isso no log.

Se você estiver executando um aplicativo / serviço que está escutando em 3306, a configuração de firewall deve mostrá-la como Ativada. Se isso não for visto, provavelmente você perdeu a adição de uma exceção com o firewall para permitir esse aplicativo / serviço.

Finalmente, a porta 3306 é normalmente usada para o MySQL. Então, eu presumo que você esteja executando o servidor MySQL nesta máquina windows. Portanto, você deve ver um ouvinte para 3306 aceitando conexões de entrada. Se você não vê isso, você precisa trabalhar com seu aplicativo (MySQL) para que ele seja iniciado primeiro.

    
por 16.06.2009 / 16:28
18

NETSTAT informará se a porta está escutando , mas não informará se a porta está aberta para o mundo externo. O que quero dizer com isso é que NETSTAT pode mostrar que o 0.0.0.0 está LISTENING na porta 3306, mas um firewall ainda pode estar bloqueando aquela porta que está impedindo conexões externas; por isso não é suficiente confiar apenas em NETSTAT .

A melhor maneira de verificar se uma porta está bloqueada é fazer uma varredura de porta na máquina cliente.

Existem muitas maneiras de fazer uma verificação de porta, mas como você mencionou estar no Windows, sugiro o utilitário de linha de comando da Microsoft PortQry e a versão gráfica PortQryUI

Para testar todas as portas abertas:

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

Para testar uma porta específica:

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

Por exemplo, para testar a interface da Web de um roteador em 192.168.1.1:

portqry.exe -n 192.168.1.1 -e 80

Que retorna:

TCP port 80 (http service): LISTENING

Onde um teste em uma máquina local sem HTTPD em execução retorna:

TCP port 80 (http service): NOT LISTENING

Usando um utilitário PortScan, você obterá um dos 3 resultados.

  • Listening significa que o servidor está escutando na porta especificada
  • Filtered significa que recebeu um pacote de confirmação TCP com o conjunto de sinalizadores Reset que provavelmente indica um problema de firewall ou de software
  • Not Listening significa que não recebeu nenhuma resposta

telnet é outra opção de linha de comando que normalmente é instalada no sistema operacional por padrão. Esse utilitário de linha de comando pode ser usado de maneira rápida para ver se uma porta responde a uma solicitação de rede.

Para usar telnet , você simplesmente emitirá o seguinte comando em um prompt de comando:

telnet localhost 3306

O comando acima deve fornecer uma indicação rápida se a porta 3306 no localhost está respondendo.

    
por 04.04.2016 / 02:47
9

Desde o PowerShell 4.0, você pode usar o comando Test-NetConnection

Se você quiser testar a porta 3306 como em seu exemplo, o comando é

Test-NetConnection -ComputerName localhost -Port 3306

Documentação do TechNet Test-NetConnection

    
por 17.01.2018 / 15:56
5

Se você pode fazer telnet para a porta a partir da máquina local (usando o endereço IP externo), mas não de outra máquina - então ela está sendo bloqueada em algum lugar entre.

Observe que um firewall em sua máquina local poderia impedir até mesmo a primeira ação.

    
por 16.06.2009 / 16:27