GNU/Linux >> Linux Esercitazione >  >> Linux

5 Comandi per la risoluzione dei problemi di rete Linux

La configurazione della rete e la risoluzione dei problemi sono attività cruciali che gli amministratori di sistema devono eseguire regolarmente. Alcuni di questi compiti possono essere impegnativi. Tuttavia, quando si affrontano problemi di connettività, l'utilizzo degli strumenti giusti ti aiuterà a raggiungere i risultati in modo più rapido e coerente.

Il comando IP

Il ip command è un'utilità completa per mostrare e manipolare oggetti di rete sul tuo sistema Linux, inclusi indirizzi IP, percorsi e tabelle ARP. È uno strumento utile per configurare la rete e per risolvere i problemi di connettività di rete.

Il ip command sostituisce la funzionalità di molti comandi forniti con i vecchi net-tools pacchetto come ifconfig , percorso e arp , ma aggiunge molte altre funzionalità.

Nella sua forma più semplice, puoi semplicemente eseguire ip e fornire un oggetto di rete da manipolare, come un indirizzo, un collegamento o un percorso, e un sottocomando per eseguire un'azione. Se non dai un sottocomando, molti oggetti hanno per default show sottocomando per visualizzare le informazioni relative a quell'oggetto.

Ecco la sintassi di base:

ip  [COMANDO] 

Ad esempio, per vedere lo stato del collegamento su tutti i dispositivi di rete, esegui ip link show :

$ ip link1:lo: mtu 65536 qdisc noqueue state modalità SCONOSCIUTO DEFAULT gruppo default qlen 1000    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:002:enp1s0: mtu 1500 qdisc fq_codel state UP mode DEFAULT gruppo default qlen 1000    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff 

Perché mostra è il sottocomando predefinito, puoi anche ottenere lo stesso risultato eseguendo ip link o anche ip l (molti oggetti riconoscono un'abbreviazione).

Il ip comando gestisce molti oggetti. I principali sono:

  • collegamento o l - controlla lo stato dei dispositivi di rete
  • indirizzo o a - manipola gli indirizzi IP sui dispositivi
  • percorso o r - gestisce le voci della tabella di routing
  • vicino o n - controlla le voci della tabella ARP

Puoi vedere un elenco completo di oggetti e comandi eseguendo ip help .

Alcuni utili esempi del comando ip

Mostra le statistiche di rete -s in formato leggibile dall'uomo -h per un'interfaccia di rete specifica:

$ ip -s -h l show dev enp1s02:enp1s0: mtu 1500 qdisc fq_codel state UP mode DEFAULT gruppo default qlen 1000    link/ether 52:54:00:b5:C7:2B BRD FF:FF:FF:FF:FF:FF RX:Errori di pacchetti byte Errori rilasciati superano McAst 820M 303K 0 182K 0 0 TX:byte Errori di trasporto abbandonati CollSns 19.9M 60.9K 0 0 0  

Mostra gli indirizzi IP di tutte le interfacce:

$ ip a1:lo: mtu 65536 qdisc noqueue state UNKNOWN gruppo predefinito qlen 1000    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo       valid_lft forever preferred_lft forever    inet6 ::1/128 scope host        valid_lft forever preferred_lft forever2:enp1s0: mtu 1500 qdisc fq_codel state UP gruppo predefinito qlen 1000. 7ecf:5cc8:5c1f:1009/64 scope link noprefixroute        valid_lft per sempre preferred_lft per sempre 

Mostra l'indirizzo IP di una singola interfaccia, ad esempio enp1s0 :

$ ip a show dev enp1s0 

Aggiungi un altro indirizzo IP a un'interfaccia (richiede sudo o root utente):

$ sudo ip a change 192.168.122.170 dev enp1s0 

Visualizza la tabella di instradamento:

$ ip routedefault tramite 192.168.122.1 dev enp1s0 proto static metrica 100 192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.169 metrica 100 

Aggiungi un percorso (gateway predefinito):

$ sudo ip route aggiungi predefinito tramite 192.168.122.1 dev enp1s0 

Il ip command è un'interfaccia di livello inferiore per configurare le opzioni di rete sul tuo sistema Linux. Sebbene sia utile come strumento di risoluzione dei problemi, potrebbe essere più difficile impostare la rete con esso. Per questo motivo, molte distribuzioni forniscono un'interfaccia di livello superiore per svolgere la stessa attività. Quindi, diamo un'occhiata allo strumento di configurazione di Network Manager nmcli , che fornisce un modo integrato per configurare la rete.

Lo strumento nmcli

Network Manager è un'applicazione di configurazione di rete disponibile per impostazione predefinita con molte distribuzioni Linux, tra cui RHEL e Fedora. Network Manager funziona come un demone e il suo obiettivo è fornire un'interfaccia di livello superiore per rendere la configurazione della rete più semplice e automatizzata.

È normale che gli utenti di desktop Linux o server con un'interfaccia grafica utilizzino i client della GUI di Network Manager per configurare la rete. Per i casi in cui lavori con server headless o se desideri automatizzare la configurazione tramite script di shell, nmcli strumento è utile.

Gestore di rete e nmcli sono una combinazione versatile che consente di verificare e configurare molte opzioni di rete. La sintassi di base per nmcli è:

nmcli  [COMANDO] [ARGOMENTI] 

Gli oggetti più comuni sono:

  • generale - mostra lo stato e le autorizzazioni di Network Manager
  • rete - mostra, abilita e disabilita il networking
  • radio - mostra, abilita e disabilita WiFi e WWAN
  • dispositivo - mostra e manipola lo stato dei dispositivi di rete
  • connessione - gestisce i profili di connessione di Network Manager

È impossibile coprire tutte le opzioni su un singolo post del blog. Diamo un'occhiata ad alcuni esempi di come usare nmcli per attività di configurazione di rete comuni. Per ulteriori esempi, consulta la pagina ufficiale di nmcli-examples o le pagine man con man nmcli-examples .

Controlla lo stato dei dispositivi di rete:

$ nmcli device statusDEVICE  TYPE      STATE      CONNECTION enp1s0  ethernet connesso  enp1s0enp7s0  ethernet disconnesso  --lo      loopback  non gestito  --  

Mostra tutti i profili di connessione:

$ nmcli con show NAME    UUID                                  TYPE      DEVICE enp1s0  1bb35a4a-ad02-4cad-978a-4a97ea9527cb  ethernet  enp1s0 

Mostra i dettagli su una connessione specifica (ad es. enp1s0 ):

Connessione $ nmcli show enp1s0  

Recupera parametri specifici da una connessione (ad es. indirizzo IP e DNS):

$ nmcli -g ip4.address,ip4.dns connection show enp1s0192.168.122.169/24192.168.122.1 

Modificare i parametri di connessione, ad es. passare da DHCP a connessione manuale:

$ sudo nmcli con mod enp1s0 ipv4.method manual ipv4.addresses 192.168.122.169/24 ipv4.dns 192.168.122.1 ipv4.gateway 192.168.122.1 

Riavvia la connessione per abilitare nuove opzioni:

$ sudo nmcli con down enp1s0$ sudo nmcli con up enp1s0 

Aggiungi un nuovo profilo di connessione:

$ sudo nmcli connection add con-name enp7s0 ifname enp7s0 tipo ethernet ip4 192.168.64.88/24  

nmcli consente inoltre di modificare un profilo di connessione in modo interattivo. Questa interfaccia fornisce assistenza e completamento automatico tramite la scheda chiave, che guida l'utente attraverso le numerose opzioni disponibili. Attiva l'editor usando nmcli connection edit CONNECTION-NAME :

$ sudo nmcli connection modifica enp7s0 ===| editor di connessione interattiva nmcli |===Modifica della connessione '802-3-ethernet' esistente:'enp7s0'Digita 'help' o '?' per i comandi disponibili. Digitare 'print' per mostrare tutte le proprietà della connessione. Digitare 'describe [.
]' per una descrizione dettagliata della proprietà. È possibile modificare le seguenti impostazioni:connection, 802-3-ethernet (ethernet) , 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy. 


Nell'editor puoi definire parametri specifici con il set comando. Utilizza la scheda completamento automatico del tasto per vedere tutte le opzioni disponibili:

  nmcli> imposta ipv4.  indirizzi dhcp-hostname dhcp-timeout dns-search may-fail routesdad-timeout dhcp-hostname-flags dns metodo gateway per rotta-tietedhcp-lient-id-ID DHCP-IID DNS DNS -options          ignore-auto-dns      never-default        routing-rulesdhcp-fqdn            dhcp-send-hostname   priorità dns         ignore-auto-routes   route-metric         nmcli> set ipv4.addresses 192.9.1 

Quindi puoi stampare i valori attuali:

nmcli> print ipv4.addresses ipv4.addresses:192.168.64.88/24, 192.168.64.90/24 

Al termine delle modifiche, salva alla connessione e chiudi per completare l'operazione:

nmcli> saveConnection 'enp7s0' (94170029-5620-4f90-ad78-704b21480b1a) aggiornato correttamente.nmcli> esci 

Infine, riavvia la connessione per rendere effettive le modifiche.

Gestore di rete e nmcli sono una soluzione completa per la configurazione di rete. Se non l'hai mai usato prima, inizia con alcuni dei comandi di base e passa gradualmente a impostazioni più complesse. Consulta le pagine man e gli esempi per eseguire attività specifiche.

Successivamente, esaminiamo alcuni comandi che ti aiutano con la risoluzione dei problemi di rete, a partire dalla risoluzione dei nomi.

Il comando nslookup

Quando si gestiscono problemi di connettività, la risoluzione dei nomi DNS è spesso fonte di mal di testa. Il nslookup l'utilità ti aiuta a controllare e risolvere i problemi di risoluzione dei nomi DNS.

Questo comando è disponibile con bind-utils pacchetto su sistemi RHEL8 e Fedora. Installalo con dnf :

$ sudo dnf install -y bind-utils 

Per controllare rapidamente la risoluzione dei nomi per un particolare host, usa nslookup con il nome host come argomento. Il comando utilizza la configurazione DNS predefinita per la risoluzione dei nomi:

$ nslookup redhat.comServer:        192.168.122.1Indirizzo:    192.168.122.1#53Risposta non autorevole:Nome:    redhat.comIndirizzo:209.132.183.105 

Se la risoluzione del nome non riesce, puoi utilizzare un server dei nomi alternativo per la risoluzione fornendo il suo indirizzo come terzo argomento:

$ nslookup redhat.com 192.168.0.9Server:        192.168.0.9Indirizzo:    192.168.0.9#53Risposta non autorevole:Nome:    redhat.comIndirizzo:209.132.183.105 

Queste informazioni sono utili per la risoluzione dei problemi in quanto aiutano a identificare se il problema è locale dovuto a un server specifico oa qualcosa di più esteso.

Puoi anche usarlo per eseguire query DNS inverse fornendo l'indirizzo IP anziché un nome host:

$ nslookup 209.132.183.105105.183.132.209.in-addr.arpa    name =redirect.redhat.com. 

Il nslookup L'utilità è uno strumento utile per aiutare a risolvere i problemi di rete relativi alla risoluzione dei nomi DNS. Successivamente, diamo un'occhiata alla risoluzione dei problemi relativi ai socket di rete locali.

L'utilità SS

Un'altra attività comune durante la risoluzione dei problemi di connettività di rete è determinare se è stata stabilita una connessione o se un particolare servizio è disponibile su un server.

Il ss comando, abbreviazione di statistiche socket , è un comodo strumento che visualizza le informazioni sui socket di rete. È il moderno sostituto di netstat che fornisce funzionalità simili, ma include alcune funzionalità extra.

Usa ss senza opzioni per visualizzare l'elenco completo di tutti i socket di rete stabiliti per i tipi di socket TCP, UDP e UNIX.

; 0 0* 22566* 22171icmp6 unconn 0 0*:ipv6-icmp*:* Icmp6 unconn 0 0*:IPv6-ICMP*:* TCP Estab 0 0 192.168.122.169:SSH 192.168.122.1:45626

Poiché il comando predefinito visualizza tutte le connessioni di rete stabilite, questo elenco può essere esteso su una macchina occupata, con oltre mille voci. Per aiutarti con la risoluzione dei problemi, ss fornisce diverse opzioni di filtro.

È possibile visualizzare le informazioni sui socket per tipi di socket specifici con i seguenti parametri della riga di comando:-t per TCP, -u per UDP e -x per UNIX.

Ad esempio, visualizza le informazioni sul socket TCP con ss -t :

;

Puoi anche filtrare l'elenco per nome host o indirizzo IP di origine o di destinazione. Ad esempio, ecco un elenco di connessioni stabilite per l'indirizzo IP di destinazione 192.168.122.1:

  $ SS DST 192.168.122.1Netid State Recv-Q Send-Q Indirizzo locale:Porta Peer Indirizzo:Porttcp Estab 0 0 192.168.122.169 :ssh 192.168.122.1:45626  

Questi comandi sono utili per risolvere i problemi di connettività di rete in generale o tra host specifici nella rete. Un'altra pratica applicazione per ss è verificare se i servizi di rete sono in ascolto sulla macchina locale con l'indirizzo e la porta corretti. Per verificare le prese di ascolto, utilizzare l'opzione -l :

  $ ss -lnetid statale recv-q send-q indirizzo locale:porta peer porta:portnl unconn 0 0 rtnl:networkmanager/909 *nl unconn 0 0 rtnl:systemd-resolve/1122 *... troncated OutputUdp unconn 0 0 0.0.0.0:hostmon 0.0.0.0:*udp unconn 0 0 127.0.0.53%LO:dominio 0.0.0.0:udp unconn 0 0 127.0.0.1:323 0.0.0.0:*Uudp Unconn 0 0 [::]:hostmon [::]:*udp unconn 0 0 [::1]:323 [::]:*tcp ascolta 0 128 0 .0.0.0:ssh 0.0.0.0 :*tcp ascolta 0 128 0.0.0.0:hostmon 0.0.0.0:*tcp Ascolta 0 128 [::]:ssh [::]:TCP ascolta 0 128 [::] [::]:* 

È possibile utilizzare le stesse opzioni di filtro descritte sopra per filtrare tipi di socket specifici. Ad esempio, per elencare tutti i socket TCP in ascolto, immettere:

  $ ss -ltstate recv-q send-q Indirizzo locale:Porta peer Indirizzo:Portlisten 0 128 0.0.0.0 :ssh 0.0.0.0 :*listen 0 128 0.0.0.0:Hostmon 0.0.0.0:Listen 0 128 [::]:ssh [::]:ascolta 0 128 [::]:hostmon [::]: 

Invece di visualizzare il nome del servizio, come ssh o hostmon , ss può visualizzare i numeri di porta usando il -n opzione:

  $ ss -ltnstate recv-q send-q Indirizzo locale:Porta peer Indirizzo:Portlisten 0 128 0.0.0.0:22 0.0.0.0:Listen 0 128 0.0.0.0:5355 0.0.0.0:Listen 0 128 [::]:22 [::]:Ascolta 0 128 [::]:5355 [::]: 

Infine, un'altra opzione utile è -p per visualizzare informazioni relative al processo come nome utente e ID processo (PID). Alcuni servizi potrebbero richiedere privilegi elevati tramite sudo o come root per elencare le informazioni sul processo:

  $ sudo ss -tnlpstate recv-q send-q indirizzo locale:porta peer porta:portlisten 0 128 0.0.0.0:22 0.0.0.0 :* utenti:(("sshd", pid =919, fd =5)) Ascolta 0 128 0.0.0.0:5355 0.0.0.0:* Utenti:(("SystemD-Resolve", PID =1122, FD =13)) Ascolta 0 128 [::]:22 [::]:*         users:(("sshd",pid=919,fd=7))LISTEN     0          128                     [::]:5355                   [::]:*         users:(("systemd-12,d2,pid )) 

Il ss tool è un comando essenziale nella casella degli strumenti sysadmin per le attività di risoluzione dei problemi di rete. Quindi, diamo un'occhiata a tracepath per tracciare la connettività di rete tra host.

Il comando tracepath

Il traccia percorso command è uno strumento di risoluzione dei problemi di rete che mostra il percorso di connettività di rete tra l'host locale e un host remoto, identificando tutti i router utilizzati per instradare il traffico tra di loro.

Se non riesci a connetterti a un servizio di rete in un host remoto, tracepath ti aiuta a determinare dove si trova il problema.

traccia percorso è un sostituto di traceroute , offrendo funzionalità simili. La differenza principale è che tracepath utilizza porte UDP casuali invece del protocollo ICMP per la traccia, quindi non richiede privilegi elevati per l'esecuzione.

Per l'utilizzo di base, fornire il nome host o l'indirizzo IP dell'host di destinazione. Puoi anche fornire l'opzione -n per visualizzare gli indirizzi IP dei router invece dei loro nomi:

  $ tracepath -n sat65server 1?:[localhost] pmtu 1500 1:192.168.122.1 0.415ms 1:192.168.122.1 0.299ms 2:192.168.10.10 0.904ms 3:192.168.88.1 1.127ms 4:192.168 .0.95                                          2.020 ms     Riprendi:pmtu 1500  

Se traccia percorso non riesce a connettersi a un hop di rete, viene visualizzato nessuna risposta . Per impostazione predefinita, il numero massimo di hop che prova è 30, che di solito è sufficiente. Puoi cambiarlo con l'opzione -m .

Supponiamo che non riceva risposte dopo un particolare hop. Questo è un buon indicatore di dove andare per la tua attività di risoluzione dei problemi. traccia percorso l'informazione non è definitiva, in quanto il traffico potrebbe essere bloccato per diversi motivi. Tuttavia, ti aiuta a restringere il problema e concentrarti sugli sforzi di risoluzione.

Per motivi di sicurezza, molti router su Internet bloccano il traffico, quindi tracepath potrebbe non essere così utile per tracciare la connettività con i servizi Internet. È comunque utile per la risoluzione dei problemi della rete locale.

Cosa c'è dopo?

In questo articolo, abbiamo esplorato cinque strumenti essenziali per la configurazione di rete e la risoluzione dei problemi per i sistemi Linux. Questi strumenti sono potenti e offrono molte opzioni difficili da coprire in un unico post. Ti invitiamo a controllarli ea consultare la documentazione e le pagine di manuale per vedere come puoi incorporarli nel tuo flusso di lavoro.

Ci sono altri utili strumenti di rete Linux, come tcpdump , nmap e firewall-cmd . Questi strumenti sono trattati in altri articoli di Enable Sysadmin.

[ Rete difficile da gestire? Dai un'occhiata a Network Automation for Everyone, un libro gratuito di Red Hat. ]


Linux
  1. 5 Errori da principiante di Linux

  2. 10 comandi Linux per la diagnostica di rete

  3. Comandi di ricerca di Linux

  4. Comando eco di Linux

  5. Sistema operativo Linux Servizio "rete"

Una guida per principianti alla risoluzione dei problemi di rete in Linux

I miei comandi per la risoluzione dei problemi di rete Linux

40 utili comandi di rete Linux per i moderni amministratori di sistema

I 50 comandi IP utili di Linux per gli amministratori di rete

comando Linux nload

Comandi Nmap - 17 comandi di base per la rete Linux