GNU/Linux >> Linux Esercitazione >  >> Linux

17 migliori comandi di rete e risoluzione dei problemi di Linux per principianti

Configurazione di rete, diagnostica e Risoluzione dei problemi di Linux generale sono parti essenziali dell'amministrazione del sistema. Anche per uno sviluppatore che lavora con sistemi Linux, conoscenza dei comandi di rete Linux è un ulteriore vantaggio.

Nello specifico, se vuoi diventare un ingegnere DevOps o far parte di SRE, è fondamentale conoscere tutti i comandi per la risoluzione dei problemi di Linux poiché faranno parte delle tue attività quotidiane.

Questo post tratterà gli importanti comandi per la risoluzione dei problemi di rete e di Linux che sono nativamente disponibili nei sistemi Linux.

Quali sono i migliori comandi di rete e risoluzione dei problemi di Linux?

Di seguito è riportato l'elenco dei comandi per la risoluzione dei problemi nativamente disponibili.

Comando Descrizione
hostname Per controllare e impostare il nome host del server.
host Per ottenere i dettagli del DNS dell'host
ping Verifica se il server remoto è raggiungibile utilizzando il protocollo ICMP. Mostra anche il tempo di andata e ritorno dei pacchetti.
curl Un'utilità multipiattaforma utilizzata per trasferire i dati. Può essere utilizzato per risolvere diversi problemi di rete.
wget Utilità per scaricare file. Può essere utilizzato per la risoluzione dei problemi di connessioni e connettività proxy.
ip Un sostituto per ifconfig . Può essere utilizzato per configurare e recuperare informazioni sulle interfacce di rete dei sistemi
arp Utilità per visualizzare e gestire la cache arp.
ss/netstat Utilizzato principalmente per controllare le connessioni e il PID su porte e socket Unix.
tracerout e Questa utility utilizza il protocollo ICMP e trova gli hop coinvolti nella lettura del server di destinazione. Mostra anche il tempo impiegato tra i luppoli.
mtr mtr è un mix di ping e traceroute . Fornisce inoltre informazioni aggiuntive come host intermedi e reattività.
dig Ti aiuta a ottenere i record DNS associati a un nome di dominio.
nslookup Comando simile a dig.
nc utility per il debug dei socket TCP/UDP.
telnet Può essere utilizzato per testare la connettività remota sulle porte
route Ti aiuta a ottenere tutte le informazioni sulla tabella dei percorsi
tcpdump Questa utility ti aiuta a catturare i pacchetti di rete e ad analizzarli per problemi di rete.
lsof elenca tutti i file aperti e le informazioni sul processo che li hanno aperti

Comprendiamo ogni comando e vediamo come possiamo usarlo per risolvere i problemi di Linux.

Nota importante: Ogni comando/utilità menzionato in questo post ha molte opzioni e flag. Ogni comando ha una pagina man e puoi usarla per identificare i flag e le opzioni richieste per il tuo caso d'uso. Ad esempio, per ip comando, puoi semplicemente digitarlo man ip nel terminale per ottenere tutti i dettagli su quel comando.

1. nome host

Il comando Hostname viene utilizzato per visualizzare il nome host della macchina e per impostare il nome host.

hostname

È possibile utilizzare il comando hostname per impostare un nuovo nome host per la macchina. Ad esempio,

sudo hostname temp.com

Se imposti il ​​nome host usando “hostname ”, quando si riavvia la macchina, il nome host cambierà nel nome specificato nel file hostname (es:/etc/hostname).

Quindi, se vuoi cambiare il nome host in modo permanente, puoi usare il /etc/hosts file o file hostname rilevante presente sul server.

  1. Per le macchine Ubuntu, puoi cambiarlo in /etc/hostname file.
  2. Per RHEL, CentOS e Fedora puoi cambiarlo in /etc/sysconfig/network file.

2. ospitare

Il comando Host serve per la ricerca inversa di IP o di un nome DNS.

Ad esempio, se vuoi trovare un DNS collegato con un IP puoi utilizzare i comandi host come segue.

host 8.8.8.8

Puoi anche fare il contrario per trovare l'indirizzo IP associato al nome di dominio. Ad esempio,

host devopscube.com

3. ping

L'utilità di rete ping viene utilizzata per verificare se il server remoto è raggiungibile o meno. Viene utilizzato principalmente per controllare la connettività e la risoluzione dei problemi della rete.

Fornisce i seguenti dettagli.

  1. Byte inviati e ricevuti
  2. Pacchetti inviati, ricevuti e persi
  3. Tempo approssimativo di andata e ritorno (in millisecondi)

Il comando Ping ha la seguente sintassi.

ping <IP or DNS>

Ad esempio,

ping devopscube.com

Per eseguire il ping dell'indirizzo IP

ping 8.8.8.8

Se vuoi limitare l'output del ping senza usare ctrl+c, puoi usare il flag "-c" con un numero come mostrato di seguito.

ping -c 1 devopscube.com

4. ricciolo

L'utilità Curl viene utilizzata principalmente per trasferire dati da o verso un server. Tuttavia, puoi usarlo per la risoluzione dei problemi di rete.

Per la risoluzione dei problemi di rete, curl supporta protocolli come DICT , FILE , FTP , FTPS , GOPHER , HTTP , HTTPS , IMAP , IMAPS , LDAP , LDAPS , MQTT , POP3 , POP3S , RTMP , RTMPS , RTSP , SCP , SFTP , SMB , SMBS , SMTP , SMTPS , TELNET e TFTP

Ad esempio, curl può verificare la connettività sulla porta 22 tramite telnet.

curl -v telnet://192.168.33.10:22

Puoi controllare la connettività FTP usando curl.

curl ftp://ftptest.net 

Puoi anche risolvere i problemi di connettività del server web.

curl http://devopscube.com -I

5. wget

Il wget comando viene utilizzato principalmente per recuperare le pagine Web.

Puoi usare wget anche per risolvere i problemi di rete.

Ad esempio, puoi risolvere i problemi di connessione del server proxy utilizzando wget.

wget -e use_proxy=yes http_proxy=<proxy_host:port> http://externalsite.com

Puoi controllare se un sito web è attivo recuperando i file.

wget www.google.com

6. ip (ifconfig)

ip comando viene utilizzato per visualizzare e manipolare percorsi e interfacce di rete. ip command è la versione più recente di ifconfig . ifconfig funziona in tutti i sistemi, ma è meglio usare il comando ip invece di ifconfig.

Diamo un'occhiata ad alcuni esempi di ip comando.

Visualizza dispositivi di rete e configurazione

ip addr

Puoi usare questo comando con pipe e grep per ottenere un output più granulare come l'indirizzo IP dell'interfaccia eth0. È molto utile quando si lavora su strumenti di automazione che richiedono il recupero dinamico dell'IP.

Il comando seguente ottiene l'indirizzo IP di eth0 interfaccia di rete.

ip a | grep eth0  | grep "inet" | awk -F" " '{print $2}'

Ottieni i dettagli di un'interfaccia specifica

ip a show eth0

Puoi elencare le tabelle di instradamento.

ip route
ip route list

7. arp

ARP (Protocollo di risoluzione degli indirizzi ) mostra la tabella della cache degli indirizzi IP e degli indirizzi MAC delle reti locali con cui il sistema ha interagito.

arp

Esempio di output,

[email protected]:~$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.2.3                 ether   52:54:00:12:35:03   C                     eth0
192.168.33.1             ether   0a:00:27:00:00:00   C                     eth1
10.0.2.2                 ether   52:54:00:12:35:02   C                     eth0

8. ss (netstat)

Il ss comando è un sostituto di netstat . Puoi ancora usare netstat comando su tutti i sistemi.

Usando ss comando, puoi ottenere più informazioni di netstat comando. Il comando ss è veloce perché ottiene tutte le informazioni dallo spazio utente del kernel.

Ora diamo un'occhiata ad alcuni usi di ss comando.

Elenca tutte le connessioni

Il "ss Il comando elencherà tutte le connessioni socket TCP, UDP e Unix sulla tua macchina.

[email protected]:~$ ss
Netid  State      Recv-Q Send-Q   Local Address:Port       Peer Address:Port
u_str  ESTAB      0      0                    * 7594                  * 0
u_str  ESTAB      0      0      @/com/ubuntu/upstart 7605                  * 0  
u_str  ESTAB      0      0                    * 29701                 * 0
u_str  ESTAB      0      0      /var/run/dbus/system_bus_socket 29702                 * 0
tcp    ESTAB      0      400      172.31.18.184:ssh         1.22.167.31:61808

L'output di ss il comando sarà grande, quindi puoi usare ” ss | less comando ” per rendere scorrevole l'output.

Filtraggio di socket TCP, UDP e Unix

Se vuoi filtrare i dettagli del socket TCP, UDP o UNIX, usa il flag “-t” “-u” e “-x” con il comando “ss”. Mostrerà tutte le connessioni stabilite alle porte specifiche. Se vuoi elencare sia le porte connesse che quelle in ascolto usando "a" con l'apposito flag come mostrato di seguito.

ss -ta
ss -ua
ss -xa

Elenca tutte le porte in ascolto

Per elencare tutte le porte in ascolto, usa il flag "-l" con il comando ss. Per elencare socket TCP, UDP o UNIX specifici, usa il flag "-t", "-u" e "-x" con "-l" come mostrato di seguito.

[email protected]:~$ ss -lt
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port
LISTEN     0      128                     *:ssh                      *:*
LISTEN     0      50                     :::http-alt                 :::*
LISTEN     0      50                     :::55857                   :::*
LISTEN     0      128                    :::ssh                     :::*
LISTEN     0      50                     :::53285                   :::*
[email protected]:~$

Elenca tutto stabilito

Per elencare tutte le porte stabilite, usa lo state established flag come mostrato di seguito.

ss -t -r state established

Per elencare tutti i socket in stato di ascolto,

ss -t -r state listening

9. traceroute

Se non hai un traceroute utility nel tuo sistema o server, puoi installarlo dal repository nativo.

traceroute è un'utilità di risoluzione dei problemi di rete. Usando traceroute puoi trovare il numero di hop necessari affinché un particolare pacchetto raggiunga la destinazione.

Ad esempio,

traceroute google.com

Ecco l'output.

traceroute to google.com (173.194.33.163), 30 hops max, 60 byte packets
 1  ec2-50-112-0-84.us-west-2.compute.amazonaws.com (50.112.0.84)  1.974 ms  1.895 ms  1.899 ms
 2  100.64.1.247 (100.64.1.247)  1.414 ms 100.64.1.137 (100.64.1.137)  1.127 ms 100.64.1.97 (100.64.1.97)  1.313 ms
 3  100.64.0.198 (100.64.0.198)  1.443 ms 100.64.0.62 (100.64.0.62)  2.160 ms 100.64.0.60 (100.64.0.60)  2.116 ms
10  66.249.94.214 (66.249.94.214)  6.313 ms  7.104 ms 209.85.249.34 (209.85.249.34)  5.986 ms
11  209.85.244.65 (209.85.244.65)  6.157 ms  6.341 ms  6.574 m.
.
12  sea09s18-in-f3.1e100.net (173.194.33.163)  6.302 ms  6.517 ms  6.071 ms
[email protected]:~$

L'output sopra mostra il numero di hop (12) per raggiungere google.com dal server devopscube AWS ec2.

10. mt

Il mtr utility è uno strumento diagnostico di rete per risolvere i colli di bottiglia della rete. Combina le funzionalità di entrambi ping e traceroute

Ad esempio, il comando seguente mostra il traceroute output in tempo reale.

mtr google.com

Ecco l'output.

rapporto mtr

È possibile generare un report utilizzando il flag –report. Quando esegui il rapporto mtr, invia 10 pacchetti alla destinazione e crea il rapporto.

mtr -n --report google.com

11. scavare

Se hai attività relative alla ricerca DNS, puoi utilizzare "dig ” comando per interrogare i server dei nomi DNS.

Ottieni tutti i record DNS con dig

Il comando seguente restituisce tutti i record DNS e le informazioni TTL di twitter.com

dig twiter.com ANY

Usa +short per ottenere l'output senza dettagli.

dig google.com ANY +short

Ottieni record DNS specifico con dig

Ad esempio, se vuoi ottenere il A record per il particolare nome di dominio, puoi usare il comando dig. +short fornirà le informazioni senza dettagli

dig www.google.com A +short

Allo stesso modo, puoi ottenere le altre informazioni sui record separatamente usando i seguenti comandi.

dig google.com CNAME +short
dig google.com MX +short
dig google.com TXT +short
dig google.com NS +short

Ricerca DNS inversa con dig

È possibile eseguire una ricerca DNS inversa con dig utilizzando il comando seguente. Sostituisci 8.8.8.8 con l'IP richiesto

dig -x 8.8.8.8

12. ricerca

Nslookup L'utilità (Ricerca del server dei nomi) viene utilizzata per controllare le voci DNS. È simile al comando dig.

Per controllare i record DNS di un dominio, puoi utilizzare il seguente comando.

nslookup google.com

Puoi anche eseguire una ricerca inversa con l'indirizzo IP.

nslookup 8.8.8.8

Per ottenere tutti i record DNS di un nome di dominio, puoi utilizzare quanto segue.

nslookup -type=any google.com

Allo stesso modo, puoi eseguire query per record come mx , soa ecc

13. nc (netcat)

Il nc Il comando (netcat) è noto come l'esercito svizzero dei comandi di rete.

Usando nc , puoi verificare la connettività di un servizio in esecuzione su una porta specifica.

Ad esempio, per verificare se ssh port è aperta, puoi usare il seguente comando.

nc -v -n 192.168.33.10 22

netcat può essere utilizzato anche per il trasferimento di dati su TCP/UDP e la scansione delle porte.

La scansione delle porte non è consigliata negli ambienti cloud. Devi richiedere al provider cloud di eseguire operazioni di scansione delle porte nel tuo ambiente.

14. telnet

Il comando telnet viene utilizzato per risolvere i problemi di connessione TCP su una porta.

Per verificare la connettività della porta tramite telnet, utilizzare il comando seguente.

telnet 10.4.5.5 22

15. percorso

Il “route Il comando ” viene utilizzato per ottenere i dettagli della tabella di instradamento per il tuo sistema e per manipolarlo. Diamo un'occhiata ad alcuni esempi per il comando route.

Elenca tutte le rotte

Esegui il “route ” comando senza argomenti per elencare tutti i percorsi esistenti nel tuo sistema o server.

[email protected]:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         ip-172-31-16-1. 0.0.0.0         UG    0      0        0 eth0
172.17.0.0      *               255.255.0.0     U     0      0        0 docker0
172.31.16.0     *               255.255.240.0   U     0      0        0 eth0
[email protected]:~$

Se vuoi ottenere l'output completo in forma numerica senza alcun nome host, puoi usare il flag "-n" con il comando route.

[email protected]:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.31.16.1     0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.31.16.0     0.0.0.0         255.255.240.0   U     0      0        0 eth0
[email protected]:~$

16. tcpdump

Il tcpdump comando viene utilizzato principalmente per la risoluzione dei problemi del traffico di rete.

Nota: Per analizzare l'output di tcpdump comando richiede un po' di apprendimento, quindi spiegarlo esula dallo scopo di questo articolo.

tcpdump comando funziona con le interfacce di rete del sistema. Quindi è necessario utilizzare i privilegi di amministratore per eseguire il comando.

Elenca tutte le interfacce di rete

Utilizzare il comando seguente per elencare tutte le interfacce.

sudo  tcpdump --list-interfaces

Acquisisci pacchetti su un'interfaccia specifica

Per ottenere il dump dei pacchetti su un'interfaccia specifica, puoi utilizzare il comando seguente.

Nota: premi ctrl + c per interrompere l'acquisizione dei pacchetti.

sudo tcpdump -i eth0

Per limitare l'acquisizione di pacchetti, puoi utilizzare il -c flag con il numero.

Ad esempio,

sudo tcpdump -i eth0 -c 10

Acquisisci pacchetti su tutte le interfacce

Per acquisire pacchetti su tutte le interfacce, usa any flag come mostrato di seguito.

sudo tcpdump -i any

17. lsof

lsof è un comando che verrebbe utilizzato nella risoluzione dei problemi quotidiani di Linux. Questo comando è ugualmente importante per chiunque lavori con i sistemi Linux.

Per elencare tutti i file aperti, esegui lsof comando.

lsof

Uno degli errori più comuni incontrati da sviluppatori e ingegneri DevOps è "Errore di associazione non riuscito:indirizzo già in uso “. È possibile trovare l'ID processo associato a una porta utilizzando il comando seguente. Puoi terminare il processo per liberare la porta.

lsof -i :8080

Utilità di risoluzione dei problemi di rete di terze parti

Sono disponibili più utilità della riga di comando per la risoluzione dei problemi di rete da soluzioni di terze parti.

È necessario installarli separatamente e utilizzarli per la risoluzione dei problemi. Per motivi di conformità alla sicurezza, non tutte le organizzazioni ti consentiranno di farlo. Tuttavia, se devi scegliere di utilizzare strumenti di terze parti, puoi esplorarli.

Conclusione

In questo articolo abbiamo trattato le importanti utilità della riga di comando di Linux per la risoluzione dei problemi e configurazione della rete.

Se stai iniziando con l'amministrazione del sistema, i ruoli DevOps o SRE, è essenziale conoscere queste utilità per supportare i progetti su cui stai lavorando.

Ogni utilità ha molte funzionalità e puoi esplorare ulteriormente per soddisfare le tue esigenze.

Se pensi che abbiamo perso qualche comando importante, faccelo sapere nella sezione commenti.

Inoltre, se vuoi imparare lo scripting della shell, consulta la nostra guida su come imparare lo scripting della shell. Se sei uno sviluppatore, dai un'occhiata alla mia guida sui comandi Linux che ogni sviluppatore dovrebbe conoscere.


Linux
  1. 10 tutorial sui comandi Linux per principianti ed esperti

  2. Tutorial sul comando del nome host Linux per principianti (5 esempi)

  3. Comandi Linux - Panoramica ed esempi

  4. Comandi Linux:job, bg e fg

  5. I migliori comandi di base di Linux per principianti

Tutorial sui comandi pushd e popd di Linux per principianti (3 esempi)

Tutorial sui comandi Linux ss per principianti (8 esempi)

Comando di localizzazione Linux per principianti (8 esempi)

16 Esempi pratici di comando Linux LS per principianti

I 40 comandi utili del server Linux per principianti e professionisti

Comando Linux Head Tutorial ed esempi per principianti