Muitas vezes, é preciso testar diretamente se uma conexão TCP abre até determinada porta. No Windows, a ferramenta padrão para esse teste é o Test-NetConnection, executado no PowerShell.
Exemplos de uso
Test-NetConnection 192.168.1.10 -Port 3306: testa a porta do banco de dados no servidor da loja;Test-NetConnection matriz.ddns.example.com -Port 9000: testa, pelo nome DDNS, a porta do serviço de sincronização na matriz.
Sem a opção -Port, o comando faz apenas um ping, e o resultado aparece no campo PingSucceeded.
Os campos mais importantes
A saída reúne a tradução do nome, a rota e o resultado do teste TCP. Três campos merecem atenção:
- RemoteAddress: o endereço para o qual o nome foi traduzido. Com DDNS, esse campo já mostra se o nome aponta para o lugar certo.
- SourceAddress: o endereço local pelo qual o teste saiu. Um adaptador virtual no lugar da placa da rede indica um problema de rota.
- TcpTestSucceeded: o valor True indica que o handshake TCP se completou, e o valor False indica que a conexão não abriu.
Recusa ou tempo esgotado
O resultado False não informa qual das duas falhas aconteceu, mas o tempo do teste informa:
- quando o resultado volta na hora, a conexão foi recusada, e a investigação segue para o serviço;
- quando o resultado demora até o limite, cerca de vinte segundos, a conexão provavelmente esgotou o tempo, e a investigação segue para o caminho e para os filtros.
Testar várias portas de uma vez
3306,445,9000 | ForEach-Object { Test-NetConnection 192.168.1.10 -Port $_ -WarningAction SilentlyContinue | Select-Object RemotePort, TcpTestSucceeded }: testa as três portas no mesmo endereço e mostra o resultado de cada uma.
Onde o comando existe
O Test-NetConnection está disponível a partir do Windows 8.1 e do Windows Server 2012 R2. Em sistemas mais antigos, o mesmo teste precisa ser feito com outras ferramentas.
No suporte
O Test-NetConnection mostra se o caixa 01 consegue abrir uma conexão com o banco de dados e se a filial alcança a porta da matriz. O sucesso prova o handshake, e não o funcionamento do sistema.
Para guardar
- A opção -Port testa uma conexão TCP.
- Os campos RemoteAddress, SourceAddress e TcpTestSucceeded resumem o teste.
- O tempo até o resultado False separa a recusa do tempo esgotado.
- O sucesso do teste não garante que a aplicação funcione.
O comando ping 192.168.0.50 responde, mas o comando Test-NetConnection 192.168.0.50 -Port 9000 retorna False imediatamente. O que isso indica?
Um padrão de recusa. Provavelmente nenhum serviço escuta na porta 9000, a porta está errada ou o serviço não aceita conexões naquele endereço. A recusa também pode vir de um firewall configurado para rejeitar a conexão.
E se o mesmo teste demorar cerca de vinte segundos antes de retornar False?
O padrão passa a ser de tempo esgotado: um firewall que descarta a conexão, perda de pacotes no caminho ou uma regra de encaminhamento incorreta. O ping bem-sucedido prova apenas o ICMP.