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>

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)"

}

Este script é como ter um assistente que verifica as portas para você. Basta escolher as portas desejadas e o servidor alvo. Simples assim!

Exemplos

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

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

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

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

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

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. 

Link para a documentação oficial da microsoft:

Test-NetConnection (NetTCPIP) | Microsoft Learn