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

106

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?

Boris Pavlović
fonte
11
Apenas para esclarecer, você quer dizer bloqueado, como bloqueado por um firewall ou gateway, ou você já está em uso por outra coisa?
squillman
11
O teste Audit My PC Firewall permite testar uma porta específica ou um intervalo de portas de uma fonte externa.
22413 Peter Stuer

Respostas:

111

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ê estiver esperando conexões de entrada nessa porta e achar que o firewall pode estar bloqueando-as, inicie o log de firewall do Windows e verifique se há queda de conexões nos logs

    • 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
    (a atualização para usuários do Windows 7 - conforme indicado Nickabaixo - usa o 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 escutando no 3306, a configuração do 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.

nik
fonte
4
+1 para obter mais detalhes
Sage
3
A partir do Windows Vista, o comando "netsh firewall" está obsoleto. Ele recomenda o uso do "netsh advfirewall firewall" e faz referência ao artigo go.microsoft.com/fwlink/?linkid=121488
Nick DeVore
5
Para analisar a saída na linha de comando, adicione |find "3306"ao comando, por exemplo:C:\Windows\System32>netstat -an |find "3306"
Cees Timmerman
Não consigo encontrar o botão de configurações especificado na etapa 2 da segunda recomendação ...
Bassie
23

NETSTATinformará 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 NETSTATpode 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 basta confiar NETSTATsozinho.

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 verificação de porta, mas como você mencionou estar no Windows, vou sugerir o utilitário de linha de comando da Microsoft PortQrye 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 pacote de confirmação TCP com o sinalizador Redefinir 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 usá- telnetlo, basta emitir o seguinte comando em um prompt de comando:

telnet localhost 3306

O comando acima deve dar-lhe uma indicação rápida se a porta 3306na localhostestá respondendo.

Tim Penner
fonte
Eu faço o download do PortQryUI e verifiquei depois que bloqueei e habilitei a porta 445 no tcp e no udp, está mostrando a mesma escuta no tcp e não no udp.
Liam neesan #:
17

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

Marcel Janus
fonte
+1 para isso. Uma alternativa muito boa que não requer instalação de nada na maioria das máquinas Windows modernas.
DCaugs
5

Se você puder telnetar para a porta 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 em sua máquina local pode impedir até a primeira ação.

Brent
fonte
Observe que o telnet não está mais sendo instalado no Win7 e em sistemas mais recentes.
Alexis Wilke
@AlexisWilke Isso não está correto. Telnet pode ser instalado
deepdive
4
Para instalar o telnet a partir da linha de comando: dism / online / Enable-Feature / FeatureName: TelnetClient
Jason Massey