Testar conectividade de Rede: Test-NetConnection para validar acesso a porta específica
PowerShell e Test-NetConnection -
Hoje, exploraremos uma ferramenta incrivelmente útil que simplifica a administração de redes e infraestrutura: o Test-NetConnection com PowerShell no Windows. Em diversas situações, a validação do acesso de um servidor a outro vai além do simples ping. É crucial verificar se uma porta específica pode ser acessada a partir de um servidor ou rede.
Em ambientes corporativos complexos, essa tarefa pode tornar-se tediosa e demorada, especialmente quando requer a colaboração de equipes distintas. O processo geralmente envolve a comunicação com a equipe de Rede para monitorar o tráfego entre os servidores, filtrar os resultados e, finalmente, identificar se a porta desejada está acessível.
É aqui que o Test-NetConnection entra em cena, acelerando significativamente esse procedimento. Ele fornece ao administrador uma visão clara da acessibilidade da porta no servidor de destino, simplificando o processo de trabalho e aliviando a carga sobre a equipe de Rede. Essa ferramenta eficiente se destaca ao proporcionar respostas diretas sobre a conectividade, agilizando o fluxo de trabalho e promovendo uma administração de rede mais eficaz.
PowerShell: Mais que uma Linguagem, uma Ferramenta Poderosa:
Não podemos falar sobre o Test-NetConnection sem destacar a importância do PowerShell. Aqueles que exploraram essa ferramenta sabem que ela vai muito além da funcionalidade do CMD, mas também é uma linguagem de script robusta. O PowerShell é como um canivete suíço imprescindível para administradores de sistemas, e o Test-NetConnection é uma de suas ferramentas.
Conhecendo o Test-NetConnection:
O Test-NetConnection é um comando no PowerShell que se destaca quando precisamos verificar a conectividade de portas TCP/IP em servidores para garantir que as comunicações entre eles estejam fluindo como deveriam.
Seu formato básico é:
Test-NetConnection -ComputerName <hostname ou IP de destino> -Port <Número da porta>
Test-NetConnection: Este é o próprio comando que executa a verificação de conexão de rede.
-ComputerName: Parâmetro que especifica o nome do host ou endereço IP do destino que você deseja testar.
-Port: Parâmetro que indica o número da porta que será verificado quanto à conectividade. Caso não seja incluído um teste the ping (ICMP) será realizado.
Ao executar esse comando, o PowerShell testará a conexão com um determinado destino (indicado pelo nome do host ou endereço IP) em uma porta específica. O resultado do teste fornece informações sobre a disponibilidade e viabilidade da conexão nesta porta. Tornamos assim as verificações de conectividade entre servidores mais rápidas e eficientes.
Script básico utilizando o Test-NetConnection:
Vamos dar uma olhada em um script rápido usando o Test-NetConnection para testar várias portas de uma vez. É simples, prático e sem enrolação.
# Lista de portas a serem testadas
$ports = 80, 443, 22
$computerName = "Nome ou Endereço IP"
# Loop para testar cada porta na lista
foreach ($port in $ports) {
# Executa o Test-NetConnection para o servidor e porta específicos
$result = Test-NetConnection -ComputerName $computerName -Port $port
# Exibe o resultado indicando se a conexão foi bem-sucedida ou não
Write-Host "Porta $port`: $($result.TcpTestSucceeded)"
}
$ports: Variável que guardará a lista de portas a serem testadas (80, 443, 22).
$computerName: Variável que define o endereço ou hostname do servidor que queremos testar.
foreach ($port in $ports): Iniciamos um loop para percorrer cada porta na lista.
$result = Test-NetConnection...: Executamos o Test-NetConnection para o servidor e a porta especificados.
Write-Host "Porta $port`: $($result.TcpTestSucceeded)": Exibe o resultado indicando se a conexão foi bem-sucedida ou não.
Nota: depois de "$port" temos "`:" ★ no PowerShell precisamos usar o acento crase para identificar que o caractere em seguida a ele não faz parte da variável e, neste exemplo, deve ser interpretado como parte do texto que queremos exibir com o "Write-Host".
Este script é como ter um assistente que verifica as portas para você. Basta escolher as portas desejadas e o servidor alvo. Simples assim!
Exemplos
Teste de ping para o Google:
PS C:\Users\JBitCORE> Test-NetConnection -ComputerName www.google.com
ComputerName : www.google.com
RemoteAddress : 142.251.132.36
InterfaceAlias : Wi-Fi
SourceAddress : 172.21.251.52
PingSucceeded : True
PingReplyDetails (RTT) : 5 ms
Teste de porta HTTP para o Google:
PS C:\Users\JBitCORE> Test-NetConnection -ComputerName www.google.com -CommonTCPPort HTTP
ComputerName : www.google.com
RemoteAddress : 216.58.222.4
RemotePort : 80
InterfaceAlias : Wi-Fi
SourceAddress : 172.21.251.52
TcpTestSucceeded : True
Teste de porta TCP específica para o Google:
PS C:\Users\JBitCORE> Test-NetConnection -ComputerName www.google.com -Port 443
ComputerName : www.google.com
RemoteAddress : 216.58.222.4
RemotePort : 443
InterfaceAlias : Wi-Fi
SourceAddress : 172.21.251.52
TcpTestSucceeded : True
Realizar diagnóstico de roteamento para o Google:
PS C:\Users\JBitCORE> Test-NetConnection -ComputerName www.google.com -DiagnoseRouting
ComputerName : www.google.com
RemoteAddress : 216.58.222.4
SelectedSourceAddress : 172.21.251.52
OutgoingInterfaceIndex : 15
SelectedNetRoute : DestinationPrefix: 0.0.0.0/0
NextHop: 172.21.251.1
RouteDiagnosticsSucceeded : True
Realizar traceroute para o Google:
PS C:\Users\JBitCORE> Test-NetConnection -ComputerName www.google.com -TraceRoute
ComputerName : www.google.com
RemoteAddress : 216.58.222.4
InterfaceAlias : Wi-Fi
SourceAddress : 172.21.251.52
PingSucceeded : True
PingReplyDetails (RTT) : 7 ms
TraceRoute : 172.21.251.1
0.0.0.0
177.126.108.254
170.84.35.86
100.127.6.146
170.84.34.73
74.125.48.112
142.250.58.65
142.251.76.111
216.58.222.4
Realizar diagnóstico de roteamento para o Google com restrições de roteamento:
PS C:\Users\JBitCORE> Test-NetConnection -ComputerName www.google.com -DiagnoseRouting -ConstrainInterface 5
ComputerName : www.google.com
RemoteAddress : 216.58.222.4
ConstrainInterfaceIndex : 5
SelectedSourceAddress :
OutgoingInterfaceIndex : 0
SelectedNetRoute : DestinationPrefix:
NextHop:
RouteDiagnosticsSucceeded : True
Saiba mais: Uso de -Port <numero da porta> no Test-NetConnection:
Ao utilizar -Port <número da porta> no comando Test-NetConnection, neste exemplo usaremos a porta 53.
Exemplos de como isso se encaixa nas camadas dos Modelos OSI e TCP/IP:
Modelo OSI:
Usando -Port 53 (Camada 4 - Camada de Transporte): Essa opção está associada à camada de transporte (Transport Layer) do Modelo OSI (Camada 4). Indica que além de verificar a conectividade na camada de rede (Internet Layer - Camada 3), você está especificamente interessado em garantir que a porta 53 esteja acessível, o que pertence à camada de transporte.
Não usando -Port 53 (Camada 3 - Camada de Rede): Nesse caso, o teste se concentra principalmente na camada de rede (Internet Layer - Camada 3), garantindo a conectividade básica entre os dispositivos sem especificar uma porta específica.
Modelo TCP/IP:
Usando -Port 53 (Camada 4 - Camada de Transporte): A camada de transporte (Transport Layer - Camada 4) é mais destacada, pois você está verificando uma porta específica. Isso é crucial para garantir a acessibilidade do serviço DNS.
Não usando -Port 53 (Camada 3 - Camada de Internet): A ênfase permanece na camada de rede (Internet Layer - Camada 3), garantindo a comunicação básica sem considerar portas específicas.
Diferenças entre definir a porta na visão dos modelos OSI e TCP/IP:
Usando -Port 53: Útil quando você deseja garantir não apenas a conectividade na camada de rede (Camada 3), mas também verificar se um serviço específico (neste caso, DNS) está operacional na camada de transporte (Camada 4). Essencial para diagnósticos mais detalhados e específicos.
Não usando -Port 53: Adequado quando a ênfase está na verificação da conectividade básica na camada de rede (Internet Layer - Camada 3), sem a necessidade de especificar uma porta. Isso é suficiente para determinar se o destino é alcançável.
Conclusão:
O Test-NetConnection é uma ferramenta essencial que potencializa a eficiência na administração de redes e infraestrutura por meio do PowerShell. Proporcionando testes ágeis e diagnósticos precisos, essa dica busca contribuir para um cotidiano profissional ainda mais tranquilo e eficaz.