Ti stai chiedendo come controllare la connettività tra due endpoint di rete?
Una delle attività comuni per l’amministratore di sistema è controllare la connettività per risolvere i problemi di rete. Potrebbe essere qualcosa come l’applicazione non può connettersi al servizio di back-end, non è in grado di recuperare i dati da un URL esterno, verificare se il flusso è aperto, ecc.
Qualunque cosa possa essere, la seguente utilità/comandi ti aiuterebbe. Sono testati su CentOS e non vedo alcun motivo per non lavorare su un’altra distribuzione Linux.
Esploriamo…
Sommario:
telnet
Uno dei comandi ampiamente utilizzati per testare la connettività essenziale tra i server, dal server all’IP di un altro dispositivo di rete. La sintassi del comando è semplice.
telnet $destinationIP $PORT
Supponiamo che tu voglia verificare se riesci a connetterti alla porta 8080 sull’indirizzo IP 10.0.0.1; allora il comando sarebbe.
telnet 10.0.0.1 8080
Se non ci sono problemi nella connessione, dovresti vedere il messaggio connesso.
Trying 10.0.0.1... Connected to 10.0.0.1. Escape character is '^]'.
Nota: se ricevi un comando non trovato durante l’esecuzione di telnet, devi installare telnet come ho spiegato qui.
Nella maggior parte degli scenari, telnet dovrebbe aiutare. Tuttavia, se hai bisogno di qualche altra opzione, ecco alcune alternative telnet.
ncat o nc
Ncat (alias nc) è una potente utility di rete con molte funzionalità come associare e accettare una connessione, eseguire comandi in remoto, scrivere e leggere dati, ecc. Funziona su IPv4 e IPv6, entrambi.
Per fare un semplice test per verificare se la porta è aperta o meno, eseguirai quanto segue.
nc -vz $HOSTNAME $PORT
Facciamo un esempio di test della porta 443 su winadmin.it.com.
[[email protected] ~]# nc -vz winadmin.it.com 443 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Connected to 104.25.133.107:443. Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds. [[email protected] ~]#
Come accennato, puoi anche usare nc per associare la connessione all’ascolto su una particolare porta. Questo può essere utile quando non hai servizi effettivi in esecuzione ma vuoi assicurarti che la connettività esista.
Per iniziare l’ascolto su una porta:
nc -l $PORTNUMBER
Associa la porta a un determinato numero.
Se ncat non è installato, puoi farlo con yum install nc sui server CentOS/RHEL.
wget
wget è un comando utile per scaricare/testare HTTP, HTTPS e FTP. Se lavori come ingegnere web o hai spesso a che fare con problemi relativi al web, allora wget è tuo amico. Il test con wget è semplice.
wget $URL
Ecco un esempio di test tools.winadmin.it.com
[[email protected] ~]# wget tools.winadmin.it.com --2019-05-09 20:40:01-- http://tools.winadmin.it.com/ Resolving tools.winadmin.it.com (tools.winadmin.it.com)... 104.25.134.107, 104.25.133.107, 2606:4700:20::6819:866b, ... Connecting to tools.winadmin.it.com (tools.winadmin.it.com)|104.25.134.107|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://tools.winadmin.it.com/ [following] --2019-05-09 20:40:01-- https://tools.winadmin.it.com/ Connecting to tools.winadmin.it.com (tools.winadmin.it.com)|104.25.134.107|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'index.html.2' [ <=> ] 15,139 --.-K/s in 0.001s 2019-05-09 20:40:02 (12.8 MB/s) - 'index.html.2' saved [15139] [[email protected] ~]#
Se mostra connesso significa che non ci sono problemi di connettività.
Dai un’occhiata a questo per vedere alcuni degli esempi di comando wget usati di frequente.
arricciare
Un ricciolo è uno strumento multiuso.
Sai che puoi telnet a una porta usando curl?
Bene, ora lo sai.
curl -v telnet://$IP:$PORT
Di seguito è riportato un esempio funzionante.
[[email protected] ~]# curl -v telnet://chandan.io:443 * About to connect() to chandan.io port 443 (#0) * Trying 104.31.68.106... * Connected to chandan.io (104.31.68.106) port 443 (#0)
E, quando non ci sono problemi con la porta di ascolto o con il firewall, vedrai provare…
[[email protected] ~]# curl -v telnet://chandan.io:4434 * About to connect() to chandan.io port 4434 (#0) * Trying 104.31.68.106...
Puoi anche usare curl per scaricare i dati. Supporta più protocolli: HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER, ecc.
nmap
Uno strumento popolare con centinaia di funzionalità. Spesso questo è considerato uno strumento di sicurezza, nmap consente di testare un singolo IP/porta o nell’intervallo.
Per testare una singola porta
nmap -p $PORT $IP
Un esempio di test della porta 443 su siterelic.com
[[email protected] ~]# nmap -p 443 siterelic.com Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-10 06:55 UTC Nmap scan report for siterelic.com (104.27.174.50) Host is up (0.0079s latency). Other addresses for siterelic.com (not scanned): 104.27.175.50 2606:4700:30::681b:ae32 2606:4700:30::681b:af32 PORT STATE SERVICE 443/tcp open https Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds [[email protected] ~]#
Guarda la colonna dello stato. Se vedi aperto significa che la connessione è ok. E, se lo stato è filtrato, significa che la connettività non esiste.
Ping
Uno dei comandi ampiamente utilizzati è controllare se un host remoto sta rispondendo o meno a ICMP ECHO_REQUEST. Tieni presente che questo potrebbe non fornire risultati accurati quando ICMP è bloccato nel firewall della rete remota. Supponendo che non sia così, puoi eseguire il ping all’endpoint di rete IPv4 o IPv4 come di seguito.
ping $ipaddress ping $url
Ad esempio, risultato di successo di winadmin.it.com
[email protected] ~ % ping winadmin.it.com PING winadmin.it.com (104.27.119.115): 56 data bytes 64 bytes from 104.27.119.115: icmp_seq=0 ttl=53 time=7.944 ms 64 bytes from 104.27.119.115: icmp_seq=1 ttl=53 time=8.870 ms
Ad esempio, il risultato dell’errore dell’IP interno.
[email protected] ~ % ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1
Se l’endpoint supporta IPv6, puoi utilizzare il comando ping6 come di seguito.
[email protected] ~ % ping6 winadmin.it.com PING6(56=40+8+8 bytes) 2a01:4b00:88e4:8700:d8ca:bf50:159c:2a1d --> 2606:4700:20::681b:7673 16 bytes from 2606:4700:20::681b:7673, icmp_seq=0 hlim=250 time=8.650 ms 16 bytes from 2606:4700:20::681b:7673, icmp_seq=1 hlim=250 time=8.738 ms
Se devi eseguire il ping remoto su Internet, puoi utilizzare lo strumento di ping online.
Conclusione
telnet sta uscendo dall’ultima versione di Linux. Grazie all’alternativa telnet di cui sopra.
Se sei nuovo su Linux e stai cercando di imparare, dai un’occhiata a questo Corso Udem.