Na plataforma Windows, quais opções nativas tenho para verificar se uma porta (3306, por exemplo) na minha máquina local (como em localhost
), está sendo bloqueada?
Na plataforma Windows, quais opções nativas tenho para verificar se uma porta (3306, por exemplo) na minha máquina local (como em localhost
), está sendo bloqueada?
Como você está em uma 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 nesta porta e sentir que o firewall pode estar bloqueando-as, você pode usar iniciar o log do firewall do Windows e verificar os logs para conexões perdidas
Há mais um comando para verificar o estado do firewall
(atualizado para usuários do Windows 7 - conforme referido
Nick
abaixo - use netsh advfirewall firewall )estado de exibição do firewall netsh
Este comando despejará os detalhes de configuração do firewall do Windows
configuração de exibição de firewall netsh
Se você tiver um bloco ativo (conexões de entrada estão sendo descartadas pelo firewall) depois de iniciar o log, você deverá ver isso no log.
Se você estiver executando um aplicativo/serviço que está escutando em 3306, a configuração do firewall deve mostrá-lo como Ativado. Se isso não for visto, você provavelmente esqueceu de adicionar uma exceção com o firewall para permitir este 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 para 3306 aceitando conexões de entrada. Se você não vir isso, precisará trabalhar com seu aplicativo (MySQL) para começar primeiro.
Desde o PowerShell 4.0 você pode usar o comando
Test-NetConnection
Se você quiser testar a porta 3306 como no seu exemplo, o comando é
Documentação do TechNet Test-NetConnection
NETSTAT
informará se a porta está escutando , mas não informará se a porta está aberta para o mundo exterior. O que quero dizer com isso é queNETSTAT
pode mostrar que o 0.0.0.0 está ESCUTANDO na porta 3306, mas um firewall ainda pode estar bloqueando essa porta que está impedindo conexões externas; por isso não é suficiente confiarNETSTAT
sozinho.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 varredura 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 PortQryUIPara testar todas as portas abertas:
Para testar uma porta específica:
Por exemplo, para testar a interface da Web de um roteador em 192.168.1.1:
Que retorna:
Onde o teste em uma máquina local sem HTTPD em execução retorna:
Usando um utilitário PortScan, você obterá um de 3 resultados.
Listening
significa que o servidor está escutando na porta especificadaFiltered
significa que recebeu um pacote de confirmação TCP com o sinalizador Reset definido, o que provavelmente indica um problema de firewall ou softwareNot Listening
significa que não recebeu nenhuma respostatelnet
é 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 forma rápida para ver se uma porta responde a uma solicitação de rede.Para usar
telnet
, basta emitir o seguinte comando em um prompt de comando:O comando acima deve fornecer uma indicação rápida se a porta
3306
nolocalhost
está respondendo.Se você pode telnet para a porta 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 no meio.
Observe que um firewall em sua máquina local pode impedir até mesmo a primeira ação.