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
ol
- controlla lo stato dei dispositivi di reteindirizzo
oa
- manipola gli indirizzi IP sui dispositivipercorso
or
- gestisce le voci della tabella di routingvicino
on
- 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 Managerrete
- mostra, abilita e disabilita il networkingradio
- mostra, abilita e disabilita WiFi e WWANdispositivo
- mostra e manipola lo stato dei dispositivi di reteconnessione
- 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.
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. ]