Como determino se uma porta está aberta em um servidor Windows? [fechadas]

478

Estou tentando instalar um site em uma porta alternativa em um servidor, mas a porta pode estar fechada por um firewall. Existe uma maneira de efetuar ping ou entrar, em uma porta específica, para ver se está aberta?

Jason
fonte

Respostas:

732

Supondo que seja uma porta TCP (em vez de UDP) que você está tentando usar:

  1. No próprio servidor, use netstat -anpara verificar quais portas estão escutando.

  2. Do lado de fora, basta usar telnet host port(ou telnet host:portnos sistemas Unix) para ver se a conexão é recusada, aceita ou expirou.

Nesse último teste, em geral:

  • conexão recusada significa que nada está sendo executado nessa porta
  • aceito significa que algo está sendo executado nessa porta
  • timeout significa que um firewall está bloqueando o acesso

No Windows 7 ou Windows Vista, a opção padrão 'telnet' não é reconhecida como um comando interno ou externo, programa operável ou arquivo em lote. Para resolver isso, ative-o: Clique em * Iniciar ** → Painel de controleProgramasAtivar ou desativar os recursos do Windows . Na lista, role para baixo, selecione Cliente Telnet e clique em OK.

Alnitak
fonte
312
No Win7 ou Vista, a opção padrão 'telnet' não é reconhecida como um comando interno ou externo, programa operável ou arquivo em lote. Para resolver isso, ative-o: Clique em Iniciar, Painel de controle, Programas e ative ou desative os Recursos do Windows. Na lista, role para baixo e selecione Cliente Telnet e clique em OK
volody
12
@PankajKohli usa o cliente de telnet PuTTy . Não precisa ser instalado.
Colin Pickard
52
O que Could not open connection to the host, on port *x*: Connect failedindica?
9119 Kenny Evitt
2
@ Alnitak Eu só queria verificar, pois acho que isso já responde à minha pergunta. Quando telnet api-3t.sandbox.paypal.com 443recebo Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failedÉ por que o firewall está bloqueando?
Popeye
2
há uma diferença se você telnet.exe aberto e, em seguida, digite o host portvs linha de comando aberta (cmd.exe) e digitetelnet host port
Pawel Cioch
185

No Windows você pode usar

netstat -na | find "your_port"

para restringir os resultados. Você também pode filtrar para LISTENING, ESTABLISHED, TCPe tal. Lembre-se de que diferencia maiúsculas de minúsculas.

J.Celmer
fonte
4
você não pode usar achado como este, ele vai estar à procura de arquivos, você deve usar grep
Moataz Elmasry
38
@MoatazElmasry, isso é verdade no Linux, mas isso é em um servidor Windows, onde find é o comando correto. O Grep não está disponível no Windows. Acabei de executar o comando exato mencionado aqui e funcionou perfeitamente.
Ben Wyatt
4
Quando eu usei esse comando, ie netstat -an | encontrar "19345", não obtive nenhum resultado. O que isso significa?
Nanosoft 22/07
14
findnão funcionou no Windows 10 para mim, mas netstat -na | findstr "8080"funcionou
arun
6
nada acontece, não com localização ou findstr
usefulBee
84

Se você estiver verificando de fora, não do próprio servidor, e não quiser se preocupar em instalar o telnet (como ele não vem nas últimas versões do Windows) ou em qualquer outro software, você possui o PowerShell nativo:

Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed

(Infelizmente, isso funciona apenas com o PowerShell 4.0 ou mais recente. Para verificar sua versão do PowerShell, digite $PSVersionTable.)

PS: Observe que, atualmente, existem algumas alegações na twittersphere que sugerem que essa resposta poderia ser melhorada ao mencionar "Conexão de teste" do PowerShell Core ou o atalho "tnc". Consulte https://twitter.com/david_obrien/status/1214082339203993600 e ajude-me a editar esta resposta para melhorá-la, por favor!


(Se você tem uma PSVersion <4.0, não tem sorte. Verifique esta tabela:

Digite a descrição da imagem aqui

Embora você possa atualizar sua versão do PowerShell instalando o Windows Management Framework 4.0 , ele não fez o truque para mim, o cmdlet Test-NetConnection ainda não está disponível).

knocte
fonte
3
Esta é a melhor resposta. A instalação do telnet nem sempre é direta nos servidores de outras pessoas!
TrojanName 25/02/19
Definitivamente deve ser a melhor resposta.
QtRoS
1
Esta é uma opção mais confiável que o telnet, o telnet simplesmente não relatou nada enquanto informa que a porta está disponível no meu caso.
axk 3/01
42

Em uma máquina Windows, você pode usar o PortQry da Microsoft para verificar se um aplicativo já está escutando uma porta específica usando o seguinte comando:

portqry -n 11.22.33.44 -p tcp -e 80
Gunjan Moghe
fonte
4
As portas com firewall geralmente aparecem como "FILTRADAS".
dlanod
Você pode usar essa ferramenta para verificar a porta UDP, bem como:portqry -n 11.22.33.44 -p udp -e 19132
Antony
41

Eu fiz assim:

netstat -an | find "8080" 

do telnet

telnet 192.168.100.132 8080

E apenas verifique se o firewall está desativado nessa máquina.

Sarvar Nishonboev
fonte
Quando eu usei esse comando, ie netstat -an | encontrar "19345", não obtive nenhum resultado. O que isso significa? -
Nanosoft
2
isso significa que esta porta está livre
Sarvar Nishonboev
Eu recebo um erro quando o executo netstat -an | find "8080", diz #no such file named "8080"
Pragyaditya Das 11/11
24

Se telnetnão estiver disponível, faça o download do PuTTY . É um cliente Telnet, SSH etc. muito superior e será útil em muitas situações, não apenas nesta, especialmente se você estiver administrando um servidor.

Machtyn
fonte
Sim, mas não para colar o código Forth, digamos, com a AmForth (a menos que você use PuTTY em combinação com Edit Overflow ).
Peter Mortensen
13

Você quer uma ferramenta para fazer isso? Existe um site em http://www.canyouseeme.org/ . Caso contrário, você precisará de outro servidor para ligar de volta para ver se uma porta está aberta ...

Douglas Mayle
fonte
12

Use isso se desejar ver todas as portas usadas e de escuta em um servidor Windows:

netstat -an |find /i "listening"

Veja todas as portas abertas, de escuta e estabelecidas:

netstat -a
zehnaseeb
fonte
7

No Windows Server você pode usar

netstat -an | where{$_.Contains("Yourport")}
Derbium
fonte
Não resolve o problema do firewall de forma alguma.
Marquês de Lorne
5
Isso funciona em powershell
Paco Zarate
Ou você quer dizer "um servidor Windows"?
Peter Mortensen
4

Outra opção é tcping .

Por exemplo:

tcping host port

Vadzim
fonte
4

PsPing da Sysinternals também é muito bom.

Peter Mortensen
fonte
Boa ferramenta O código de exemplo seria: PsPing -n 20 -i 0 servername: port
Asher
1

Aqui está o que funcionou para mim:

  • Abra um prompt de comando
  • Tipo telnet
  • Microsoft Telnet> abra <nome do host ou endereço IP> <espaço> <porta>

Ele confirmará se a porta está aberta.

p_champ
fonte
0

Outro utilitário que eu achei e também é bom e pequeno, é o PortQry Command Line Port Scanner versão 2.0 .

Você pode executar ping em um servidor e uma porta e ele informará o estado da porta. Há um utilitário de linha de comando e uma interface do usuário para ele.

Gilberto
fonte