terça-feira, 26 de abril de 2016

Teste de conexão com cURL e telnet


Todo Sysadmin em algum momento de sua vida precisou testar alguma comunicação entre dois servidores. 
A maneira mais simples e mais conhecida é utilizando o ping.
willian@localhost:[~]: ping 10.0.0.1 -c3
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=1.75 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.63 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=1.96 ms
--- 10.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.630/1.782/1.966/0.147 ms
Contudo, o ping não permite testar se há alguma porta de serviço em listen. Por exemplo um webservice na porta 80 ou um postgresql na porta 5432. Desta forma surge a grande utilidade do telnet para testar comunicação de porta e serviço.

Exemplo de uma porta me listen e comunicação permitida
willian@localhost:[~]: telnet www.google.com 80
Trying 74.125.196.104...
Connected to www.google.com. Escape character is '^]'.
Agora exemplo de uma comunicação não permitida
willian@localhost:[~]: telnet www.google.com 8080
Trying 74.125.196.104...
telnet: connect to address 74.125.196.104: Connection timed out
Obs.: Não vou entrar em detalhes sobre o firewall bloquear a porta ou se o serviço não está em listen.

A syntaxe de uso do telnet é simples: comando telnet [destino]  [porta]

Houveram algumas ocasiões, onde fui impossibilitade de testar uma conectividade entre servidores pela ausência do telnet (que tristeza!)

Porém, hoje um colega de trabalho, ao ler uma documentação da VMware (é comum não ter telnet nos appliances da VMware), descobriu e compartilhou comigo, uma forma de fazer o teste de comunicação sem utilizar o telnet (bem, mais ou menos sem utilizar o telnet). Ele utiliza outro pacote muito comum pra nós SysAdmin,o cURL.

Da mesma forma, exemplo de comunicação ok
willian@localhost:[~]: curl -v telnet://www.google.com:80
* Rebuilt URL to: telnet://www.google.com:80/
*   Trying 74.125.196.103...
* Connected to www.google.com (74.125.196.103) port 80 (#0)
Exemplo de comunicação não OK
willian@localhost:[~]: curl -v telnet://www.google.com:8080
* Rebuilt URL to: telnet://www.google.com:8080/
*   Trying 74.125.196.106...
*   Trying 2607:f8b0:4002:c07::6a...
* Immediate connect fail for 2607:f8b0:4002:c07::6a: Network is unreachable
Desta forma, agora conseguimos testar conectividade de serviço e porta mesmo sem o telnet.

Nenhum comentário:

Postar um comentário

VMworld On-Demand Video Library

Link onde encontramos as palestras do VMware 2018 e muito mais. https://videos.vmworld.com/searchsite/2018