ti-enxame.com

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

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

109
Boris Pavlović

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

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

    netstat -a -n

  • Depois disso, se você espera conexões de entrada nessa porta e sente que o firewall pode estar bloqueando-as, você pode iniciar o registro do firewall do windows e verifique os logs para ver se há conexões perdidas

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

    estado da mostra do firewall netsh

    • isso listará as portas bloqueadas e as portas de escuta ativas com associações de aplicativos
  • Este comando irá despejar os detalhes de configuração do firewall do Windows

    configuração da mostra do firewall netsh


Se você tiver um bloco ativo (as conexões de entrada estão sendo descartadas pelo firewall) depois de iniciar o log, você deverá vê-lo no log.

Se você estiver executando um aplicativo/serviço que esteja atendendo no 3306, o configuração de firewall deve mostrar que está ativado. Se isso não for visto, você provavelmente não adicionou uma exceção ao firewall para permitir esse aplicativo/serviço.

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

113
nik

NETSTAT dirá se a porta está - escutando mas não dirá 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 a porta que está impedindo conexões externas; portanto, não é suficiente confiar em NETSTAT sozinho.

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

Existem várias maneiras de fazer uma varredura de porta, mas como você mencionou estar no Windows, sugerirei 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, como retorna o teste em uma máquina local sem HTTPD em execução:

TCP port 80 (http service): NOT LISTENING

Usando um utilitário PortScan, você obtém um dos três resultados.

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

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

Para usar telnet, basta 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.

25
Tim Penner

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

Se você deseja testar a porta 3306, como no seu exemplo, o comando é

Test-NetConnection -ComputerName localhost -Port 3306

documentação do TechNet Test-NetConnection

21
Marcel Janus

Se você puder telnetar para a porta a partir da máquina local (usando o endereço IP externo), mas não de outra máquina - ela estará sendo bloqueada em algum lugar.

Observe que um firewall na sua máquina local poderia impede até a primeira ação.

5
Brent