Questo articolo è il primo di una serie incentrata sui consigli di comando "follati dalla folla". Ho chiesto a un gruppo dei nostri principali contributori quali fossero i loro comandi Linux preferiti e il feedback è stato travolgente. Abbiamo ricevuto 46 singoli comandi e molti di essi sono stati sottolineati da più invii.
Questa serie rappresenta l'elenco completo, suddiviso per categoria. Ho soprannominato questi primi sette comandi "Comandi di rete che tutti dovrebbero conoscere".
Nota della redazione :Evans Amoany ha fornito le informazioni sul comando e gli esempi. Uno dei nostri sudoer e un talentuoso *nix admin. Complimenti a Evans per aver fatto il lavoro pesante qui.
[ Potrebbe interessarti anche: Rete Linux:13 usi per netstat ]
ip
Il ip
command è uno dei comandi di base di cui ogni amministratore avrà bisogno nel lavoro quotidiano, dalla configurazione di nuovi sistemi all'assegnazione di IP alla risoluzione dei problemi dei sistemi esistenti. Il ip
il comando può mostrare informazioni sull'indirizzo, manipolare il routing e visualizzare in rete vari dispositivi, interfacce e tunnel.
La sintassi è la seguente:
ip
L'OGGETTO è la parte più importante della sinossi, e sono supportati i seguenti (alcuni omessi per brevità):
indirizzo - indirizzo di protocollo (IPv4 o IPv6) su un dispositivo.
- tunnel - tunnel su IP
- percorso - voce della tabella di instradamento
- regola - regola nel database delle politiche di instradamento
- vrf:gestisci i dispositivi di inoltro e routing virtuale
- xfrm:gestisci i criteri IPSec
Ecco alcuni casi d'uso comuni per ip
comando.
Per mostrare gli indirizzi IP assegnati a un'interfaccia sul tuo server:
[root@server ~]# ip address show
Per assegnare un IP a un'interfaccia, ad esempio enps03 :
[root@server ~]# ip address add 192.168.1.254/24 dev enps03
Per eliminare un IP su un'interfaccia:
[root@server ~]# ip address del 192.168.1.254/24 dev enps03
Modifica lo stato dell'interfaccia portando l'interfaccia eth0 in linea:
[root@server ~]# ip link set eth0 up
Modifica lo stato dell'interfaccia portando l'interfaccia eth0 offline:
[root@server ~]# ip link set eth0 down
Modifica lo stato dell'interfaccia modificando l'MTU di eth0 :
[root@server ~]# ip link set eth0 mtu 9000
Modifica lo stato dell'interfaccia abilitando la modalità promiscua per eth0 :
[root@server ~]# ip link set eth0 promisc on
Aggiungi un percorso predefinito (per tutti gli indirizzi) tramite il gateway locale 192.168.1.254 raggiungibile sul dispositivo eth0 :
[root@server ~]# ip route add default via 192.168.1.254 dev eth0
Aggiungi un percorso a 192.168.1.0/24 tramite il gateway a 192.168.1.254:
[root@server ~]# ip route add 192.168.1.0/24 via 192.168.1.254
Aggiungi un percorso a 192.168.1.0/24 che può essere raggiunto sul dispositivo eth0 :
[root@server ~]# ip route add 192.168.1.0/24 dev eth0
Elimina il percorso per 192.168.1.0/24 tramite il gateway a 192.168.1.254:
[root@server ~]# ip route delete 192.168.1.0/24 via 192.168.1.254
Visualizza il percorso seguito per IP 10.10.1.4:
[root@server ~]# ip route get 10.10.1.4
ifconfig
Il ifconfig
il comando era/è un punto fermo nella cintura degli strumenti di molti amministratori di sistema per la configurazione e la risoluzione dei problemi delle reti. Da allora è stato sostituito da ip
comando discusso sopra. Tuttavia, se desideri maggiori informazioni al riguardo, dai un'occhiata al nostro articolo pubblicato in precedenza qui.
mt
MTR (Matt's traceroute) è un programma con un'interfaccia a riga di comando che funge da strumento di diagnostica e risoluzione dei problemi di rete. Questo comando combina le funzionalità del ping
e traceroute
comandi. Proprio come un traceroute
, il mtr
comando mostrerà il percorso da un computer a un host specificato. mtr
fornisce molte statistiche su ogni hop, come tempo di risposta e percentuale. Con il mtr
comando, otterrai maggiori informazioni sul percorso e potrai vedere i dispositivi problematici lungo il percorso. Se vedi un improvviso aumento del tempo di risposta o una perdita di pacchetti, allora ovviamente c'è un collegamento errato da qualche parte.
La sintassi del comando è la seguente:
mtr
Diamo un'occhiata ad alcuni casi d'uso comuni.
Il mtr
di base comando mostra le statistiche, incluso ogni hop (nomi host) con tempo e perdita%:
[root@server ~]# mtr google.com
Mostra gli indirizzi IP numerici (se utilizzi -g
, otterrai indirizzi IP (numeri) anziché nomi host):
[root@server ~]# mtr -g google.com
Mostra anche gli indirizzi IP numerici e i nomi host:
[root@server ~]# mtr -b google.com
Imposta il numero di ping che vuoi inviare:
[root@server ~]# mtr -c 10 google.com
Ottieni un rapporto del mtr
risultato del comando:
[root@server ~]# mtr -r -c 10 google.com > mtr-command-google-output
oppure:
[root@server ~]# mtr -rw -c 10 google.com > mtr-command-google-output
Forza l'uso del TCP invece dell'ICMP:
[root@server ~]# mtr –tcp google.com
Forza l'uso dell'UDP invece dell'ICMP:
[root@server ~]# mtr –udp google.com
Imposta la quantità massima di luppoli:
[root@server ~]# mtr -m 35 216.58.223.78
Definisci la dimensione del pacchetto:
[root@server ~]# mtr -r -s 50 google.com
Stampa su output CSV:
[root@server ~]# mtr –csv google.com
Stampa su output XML:
[root@server ~]# mtr –xml google.com
tcpdump
Il tcpdump
il comando è progettato per acquisire e visualizzare i pacchetti.
Puoi installare tcpdump
con il comando seguente:
[root@server ~]# dnf install -y tcpdump
Prima di iniziare qualsiasi acquisizione, devi sapere quali interfacce tcpdump
poter usare. In questo caso dovrai usare sudo o disporre dell'accesso come root.
[root@server ~]# tcpdump -D
1 eth0
2 nflog
3 nfqueue
4 usbmon1
5 any
6 lo (Loopback)
Se desideri acquisire traffico su eth0 , puoi avviarlo con tcpdump -i eth0
output di esempio:
[root@server ~]# tcpdump -i eth0
[root@server ~]# tcpdump -i eth0 -c 10
Cattura il traffico da e verso un host
Puoi filtrare il traffico proveniente da un host specifico. Ad esempio, per trovare il traffico proveniente da e verso 8.8.8.8, utilizzare il comando:
[root@server ~]# tcpdump -i eth0 -c 10 host 8.8.8.8
Per il traffico proveniente dalla versione 8.8.8.8, utilizzare:
[root@server ~]# tcpdump -i eth0 src host 8.8.8.8
Per il traffico in uscita che va a 8.8.8.8, usa:
[root@server ~]# tcpdump -i eth0 dst host 8.8.8.8
Cattura il traffico da e verso una rete
Puoi anche acquisire traffico da e verso una rete specifica utilizzando il comando seguente:
[root@server ~]# tcpdump -i eth0 net 10.1.0.0 mask 255.255.255.0
oppure:
[root@server ~]# tcpdump -i eth0 net 10.1.0.0/24
Puoi anche filtrare in base alla fonte o alla destinazione.
In base alla fonte (traffico proveniente da):
[root@server ~]# tcpdump -i eth0 src net 10.1.0.0/24
In base alla destinazione (traffico verso):
[root@server ~]# tcpdump -i eth0 dst net 10.1.0.0/24
Cattura il traffico da e verso i numeri di porta
Acquisisci solo il traffico della porta DNS 53:
[root@server ~]# tcpdump -i eth0 port 53
Per un host specifico,
[root@server ~]# tcpdump -i eth0 host 8.8.8.8 and port 53
Per acquisire solo il traffico HTTPS,
[root@server ~]# tcpdump -i eth0 -c 10 host www.google.com and port 443
Per acquisire tutte le porte tranne le porte 80 e 25,
[root@server ~]# tcpdump -i eth0 port not 53 and not 25
netstat
Il netstat
strumento per la stampa di connessioni di rete, tabelle di routing, statistiche di interfaccia, connessioni mascherate e appartenenze multicast. Questa utilità fa parte del pacchetto net-tool, così come ifconfig
. Nel nuovo pacchetto iproute2, ss
strumento viene utilizzato per raggiungere gli stessi obiettivi.
Se netstat
non si trova sul tuo sistema, installalo con questo comando:
[root@server ~]# dnf install net-tools
L'utilizzo principale di netstat
è senza alcun parametro:
[root@server ~]# netstat
Per un utilizzo avanzato, espandi netstat
comando con opzioni:
netstat <options>
Oppure elenca le opzioni una per una:
netstat <option 1> <option 2> <option 3>
Per elencare tutte le porte e le connessioni indipendentemente dal loro stato o protocollo, utilizza:
[root@server ~]# netstat -a
Elenca tutte le porte TCP eseguendo:
[root@server ~]# netstat -at
Elenca tutte le porte UDP con:
[root@server ~]# netstat -au
Per restituire un elenco di sole porte in ascolto per tutti i protocolli, utilizza:
[root@server ~]# netstat -l
Elenca tutte le porte TCP in ascolto con:
[root@server ~]# netstat -lt
Restituisci solo porte UDP in ascolto eseguendo:
[root@server ~]# netstat -lu
Per elencare le porte di ascolto UNIX, utilizzare:
[root@server ~]# netstat -lx
Visualizza le statistiche per tutte le porte indipendentemente dal protocollo con:
[root@server ~]# netstat -s
Elenca le statistiche per le porte TCP solo con:
[root@server ~]# netstat -st
Per visualizzare le connessioni TCP con il nome PID/Programma elencato, utilizzare:
[root@server ~]# netstat -tp
Per trovare un processo che utilizza un numero di porta particolare, eseguire:
[root@server ~]# netstat -an | grep ‘:<port number>’
nslookup
Usa nslookup
utility per interrogare i server dei nomi Internet in modo interattivo. Usalo per eseguire query DNS e ricevere nomi di dominio o indirizzi IP o qualsiasi altro record DNS specifico.
Considera i seguenti esempi comuni.
Per trovare il record A di un dominio:
[root@server ~]# nslookup example.com
Per controllare i record NS di un dominio:
[root@server ~]# nslookup -type=ns example.com
Per trovare i record MX responsabili dello scambio di email:
[root@server ~]# nslookup -query=mx example.com
Per trovare tutti i record DNS disponibili di un dominio:
[root@server ~]# nslookup -type=any example.com
Per verificare l'utilizzo di un server DNS specifico (in questo caso, eseguire una query utilizzando il server dei nomi specifico ns1.nsexample.com):
[root@server ~]# nslookup example.com ns1.nsexample.com
Il controllo dei record DNS A per vedere gli IP di un dominio è una pratica comune, ma a volte è necessario verificare se un indirizzo IP è correlato a un dominio specifico. A tale scopo, è necessaria una ricerca DNS inversa.
[root@server ~]# nslookup 10.20.30.40
ping
Ping è uno strumento che verifica la connettività a livello IP a un altro computer TCP/IP inviando messaggi ICMP (Internet Control Message Protocol) Echo Request. Viene visualizzata la ricezione dei messaggi Echo Reply corrispondenti, insieme ai tempi di andata e ritorno. Ping è il comando TCP/IP principale utilizzato per risolvere i problemi di connettività, raggiungibilità e risoluzione dei nomi.
Semplice ping
i comandi richiedono un solo parametro:il nome host o l'indirizzo IP dell'host che si desidera verificare. Un semplice ping
l'esempio è proprio come di seguito:
[root@server ~]# ping google.com
PING google.com (216.58.206.174) 56(84) bytes of data.
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=1 ttl=56 time=10.7 ms
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=2 ttl=56 time=10.2 ms
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=3 ttl=56 time=10.4 ms
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=4 ttl=56 time=10.4 ms
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=5 ttl=56 time=17.3 ms
^C
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 10.219/11.844/17.381/2.773 ms
Devi interrompere il ping
comando premendo CTRL+C . In caso contrario, eseguirà il ping
finché non lo fermi. Dopo ogni ping
comando, visualizzerà un report riepilogativo con le seguenti informazioni:
- Min:tempo minimo necessario per ottenere una risposta dall'host a cui è stato eseguito il ping dalla tua estremità.
- Media:tempo medio necessario per ottenere una risposta dall'host a cui è stato eseguito il ping dalla tua estremità.
- Max:tempo massimo necessario per ottenere una risposta dall'host a cui è stato eseguito il ping dalla tua estremità.
Inoltre, vedrai TTL, che sta per Time To Live. Ping utilizza un valore numerico TTL per tentare di raggiungere un determinato computer host tramite il percorso del percorso. Questo è anche noto come limite di hop.
Normalmente, quando esegui un semplice ping
comando senza passare alcun parametro aggiuntivo, Linux eseguirà il ping
quell'ospite per un tempo infinito. Se vuoi eseguire il ping
un host dieci volte, usa il seguente comando:
[root@server ~]# ping -c 10 google.com
Usa l'opzione -q
per visualizzare solo il ping
riepilogo delle statistiche:
[root@server ~]# ping -c 10 google.com
Sui sistemi con più interfacce, puoi specificare l'interfaccia per il ping
comando da usare. Se il sistema ha entrambi eth0 e eth1 e voglio ping
utilizzando eth0 :
[root@server ~]# ping -I eth0 google.com
Oppure usa l'indirizzo sull'interfaccia, supponendo che l'interfaccia sia 10.233.201.45 come IP:
[root@server ~]# ping -I 10.233.201.45 google.com
Puoi anche ping
e specifica la versione IP come v4 o v6:
[root@server ~]# ping -4 google.com
[root@server ~]# ping -6 google.com
Durante il ping di un host, troverai un output diverso dal ping
risultati, inclusi i tre esempi seguenti.
Host di destinazione irraggiungibile
Il possibile motivo migliore è che non esiste un percorso dal sistema host locale e all'host di destinazione desiderato di destinazione, oppure un router remoto segnala di non avere alcun percorso verso l'host di destinazione.
Richiesta scaduta
Questo risultato significa che nessun messaggio Echo Reply è stato ricevuto entro il tempo predefinito di un secondo o il tempo impostato durante il ping dell'host. Ciò può essere dovuto a molte cause diverse; i più comuni includono la congestione della rete, il fallimento della richiesta ARP, il filtraggio dei pacchetti/firewall, ecc.
Host sconosciuto/Richiesta ping non è riuscito a trovare host
Forse hai sbagliato a scrivere il nome host o l'host non esiste affatto nella rete.
Devi avere lo 0% di perdita di pacchetti per ogni ping
risultato con una buona latenza o tempi di risposta inferiori. A seconda del mezzo di trasmissione (UTP, cavo in fibra ottica, Wi-Fi) che stai utilizzando, la tua latenza sarà diversa.
[ Cheat sheet gratuito:ottieni un elenco di utilità e comandi Linux per la gestione di server e reti. ]
Guardando avanti
Dovresti aggiungere questi comandi ed esempi nelle tue routine mentre configuri e risolvi i problemi delle tue reti. Se hai trovato utile questo tipo di articolo, assicurati di contattarci e farci sapere. Inoltre, tieni d'occhio la seconda parte del nostro elenco di comandi della community. Il prossimo è 16 comandi Linux generali di cui non puoi fare a meno.