Está a procurar formas de verificar a comunicação entre dois pontos de uma rede?
Uma das tarefas rotineiras de um administrador de sistemas é confirmar a conectividade para diagnosticar problemas de rede. Isto pode abranger situações como uma aplicação que não consegue ligar-se a um serviço de backend, a incapacidade de obter dados de um URL externo ou a simples verificação de uma porta aberta.
Independentemente do cenário, as ferramentas e comandos que se seguem podem ser de grande ajuda. Foram testados em CentOS, mas devem funcionar sem problemas noutras distribuições Linux.
Vamos explorá-los em detalhe…
Telnet
O telnet é um dos comandos mais utilizados para testar a conectividade básica entre servidores ou entre um servidor e o IP de outro dispositivo na rede. A sua sintaxe é bastante intuitiva.
telnet $IP_destino $PORTA
Por exemplo, se precisar testar a ligação à porta 8080 no endereço IP 10.0.0.1, o comando será:
telnet 10.0.0.1 8080
Se a conexão for estabelecida com sucesso, deverá visualizar uma mensagem de conexão confirmada:
A tentar 10.0.0.1... Conectado a 10.0.0.1. Caracter de escape é '^]'.
Nota: Se ao executar o telnet receber uma mensagem de “comando não encontrado”, precisará instalar o telnet. O processo de instalação pode ser encontrado aqui.
Na maioria dos casos, o telnet é suficiente. No entanto, se precisar de outras opções, apresentamos algumas alternativas.
Ncat ou nc
Ncat (também conhecido como nc) é uma ferramenta de rede muito potente com diversas funcionalidades, como estabelecer e aceitar uma conexão, executar comandos remotamente e manipular dados. É compatível com IPv4 e IPv6.
Para um teste básico de verificação de porta, use o seguinte comando:
nc -vz $HOSTNAME $PORTA
Vamos exemplificar testando a porta 443 em etechpt.com.com:
[[email protected] ~]# nc -vz etechpt.com.com 443 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Conectado a 104.25.133.107:443. Ncat: 0 bytes enviados, 0 bytes recebidos em 0.02 segundos. [[email protected] ~]#
Como mencionado, também pode usar o nc para vincular a conexão e escutar uma porta específica. Isto é útil se não tiver serviços ativos, mas precisar garantir a conectividade.
Para iniciar a escuta numa porta:
nc -l $NÚMERO_PORTA
Isto associará a porta ao número especificado.
Se o ncat não estiver instalado, pode instalá-lo com `yum install nc` em servidores CentOS/RHEL.
wget
O wget é um comando muito útil para descarregar e testar conexões HTTP, HTTPS e FTP. Se trabalha na área de desenvolvimento web, é uma ferramenta imprescindível. Testar com o wget é bastante simples:
wget $URL
Aqui está um exemplo com tools.etechpt.com.com:
[[email protected] ~]# wget tools.etechpt.com.com --2019-05-09 20:40:01-- http://tools.etechpt.com.com/ A resolver tools.etechpt.com.com (tools.etechpt.com.com)... 104.25.134.107, 104.25.133.107, 2606:4700:20::6819:866b, ... A conectar a tools.etechpt.com.com (tools.etechpt.com.com)|104.25.134.107|:80... conectado. Pedido HTTP enviado, a aguardar resposta... 301 Moved Permanently Localização: https://tools.etechpt.com.com/ [a seguir] --2019-05-09 20:40:01-- https://tools.etechpt.com.com/ A conectar a tools.etechpt.com.com (tools.etechpt.com.com)|104.25.134.107|:443... conectado. Pedido HTTP enviado, a aguardar resposta... 200 OK Comprimento: não especificado [text/html] A gravar em: 'index.html.2' [ <=> ] 15,139 --.-K/s em 0.001s 2019-05-09 20:40:02 (12.8 MB/s) - 'index.html.2' gravado [15139] [[email protected] ~]#
A mensagem “conectado” indica uma conexão bem-sucedida.
Pode consultar este link para exemplos adicionais de comandos wget.
curl
O curl é uma ferramenta extremamente versátil.
Sabia que também pode fazer telnet numa porta usando o curl?
Agora já sabe.
curl -v telnet://$IP:$PORTA
A seguir está um exemplo prático:
[[email protected] ~]# curl -v telnet://chandan.io:443 * Prestes a conectar a chandan.io porta 443 (#0) * A tentar 104.31.68.106... * Conectado a chandan.io (104.31.68.106) porta 443 (#0)
Se não existir uma porta de escuta ou ocorrer um problema de firewall, verá a mensagem “A tentar…”:
[[email protected] ~]# curl -v telnet://chandan.io:4434 * Prestes a conectar a chandan.io porta 4434 (#0) * A tentar 104.31.68.106...
O curl também pode ser usado para transferir dados, suportando diversos protocolos como HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER, etc.
nmap
Uma ferramenta muito popular com diversas funções. Muitas vezes considerada uma ferramenta de segurança, nmap permite testar um único IP/porta ou um intervalo.
Para testar uma única porta:
nmap -p $PORTA $IP
Exemplo de teste da porta 443 em siterelic.com:
[[email protected] ~]# nmap -p 443 siterelic.com A iniciar Nmap 7.70 ( https://nmap.org ) a 2019-05-10 06:55 UTC Relatório do scan Nmap para siterelic.com (104.27.174.50) Host está ativo (0.0079s de latência). Outros endereços para siterelic.com (não verificados): 104.27.175.50 2606:4700:30::681b:ae32 2606:4700:30::681b:af32 PORTA ESTADO SERVIÇO 443/tcp aberta https Nmap concluído: 1 endereço IP (1 host ativo) verificado em 0.13 segundos [[email protected] ~]#
Observe a coluna “estado”. O estado “aberto” indica que a conexão está estabelecida. Se o estado for “filtrado”, a conectividade não existe.
Ping
Um dos comandos mais comuns para verificar se um host remoto está a responder a pedidos ICMP ECHO_REQUEST. Tenha em atenção que o ping pode não apresentar resultados precisos quando o ICMP está bloqueado na firewall remota. Assumindo que não é o caso, pode executar ping para IPv4 ou nomes de domínio:
ping $endereço_ip ping $url
Exemplo de sucesso para etechpt.com.com:
[email protected] ~ % ping etechpt.com.com PING etechpt.com.com (104.27.119.115): 56 bytes de dados 64 bytes de 104.27.119.115: icmp_seq=0 ttl=53 time=7.944 ms 64 bytes de 104.27.119.115: icmp_seq=1 ttl=53 time=8.870 ms
Exemplo de falha com um IP interno:
[email protected] ~ % ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1): 56 bytes de dados Tempo limite do pedido para icmp_seq 0 Tempo limite do pedido para icmp_seq 1
Se o ponto de acesso suportar IPv6, pode usar o comando ping6:
[email protected] ~ % ping6 etechpt.com.com PING6(56=40+8+8 bytes) 2a01:4b00:88e4:8700:d8ca:bf50:159c:2a1d --> 2606:4700:20::681b:7673 16 bytes de 2606:4700:20::681b:7673, icmp_seq=0 hlim=250 time=8.650 ms 16 bytes de 2606:4700:20::681b:7673, icmp_seq=1 hlim=250 time=8.738 ms
Se precisar de realizar um ping remoto pela internet, pode usar uma ferramenta de ping online.
Conclusão
O telnet está a ser desativado nas versões mais recentes do Linux. Felizmente, existem as alternativas mencionadas acima.
Se é novo no Linux e pretende aprender mais, pode consultar este curso da Udemy.