Appunti per comandi network per linux
Quando si aggiorna la rete domestica con nuovi apparati e/o si vuole configurare un homelab, è probabile che sia necessario risolvere varie casistiche inerenti alla rete, di seguito ho compilato un elenco di comandi utili per la risoluzione di vari problemi di connettività e per quando si cerca di configurare vari Linux containers o VM.
Informazioni sulle interfacce di rete
Per avere informazioni sulle interfacce di rete nei dispositivi nel quale si è acceduti e per verificare se ha un indirizzo ip appropiatamente configurato.
Comandi IP
Per vedere tutti gli indirizzi IP, puoi usare il comando ip
.
1
ip a
Puoi aggiungere ulteriore opzioni per vedere i vari protocolli IPv4 o IPv6, usando le opzioni -4
o -6
.
1
2
ip -4 a
ip -6 a
Alternativamente si può usare anche il comando ifconfig
. Necessità però l’installazione del pacchetto net-tools
se non presente di default sulla distro linux, è leggermente più leggibile come comando per reperire informazioni a colpo d’occhio sulle interfaccie di rete. L’unica differenza con il precedente comando è che ifconfig mostra alcune informazioni basiche riguardo i pacchetti di rete trasmessi/ricevuti.
1
ifconfig
Netstat
Utile per scoprire le varie porte in ascolto sul server dei vari servizi presenti sulla tua macchina. Anche questo necessità del pacchetto net-tools. Usando il comando senza opzioni, si andrà incontro a un grosso output a lista che mostra i socket di dominio locale in uso sulla macchina. Principalmente usati per le connessioni locali tra i processi. Per Filtrare useremo l’opzione -t
per quanto riguarda i protocolli TCP e -u
per UDP. Con opzione -l
saranno mostrate le porte in ascolto. Se preferisci vedere gli ip piuttosto chei nomi host, usa l’opzione -n
.
Puoi utilizzarli anche contemporanemente per filtrare al meglio il comando netstat come mostrato sotto:
1
netstat -tul
Se vuoi vedere l’ID del processo (pid) del servizio in ascolto su quella porta, usiamo l’opzione -p
. Da usare con sudo. Altrimenti non sarà mostrato. Utile se si vuole interrompere un processo (kill) specificando l’id assegnato al processo.
1
sudo netstat -tulp
ormai il
netstat
è considerato obsoleto, al suo posto andrebbe usato il comandoss
Comando ss
Più semplice e veloce del netstat, può mostrare gli attributi dei PACKET, TCP, UDP, DCCP, RAW e domain sockets di Unix. Mostra tante informazioni dettagliate di come la tua macchina linux comunica con le altre macchine, reti e servizi.
per mostrare i vari sockets in ascolto sulla macchina basta:
1
ss -l
per fare ricerche più specifiche con -t
per connessioni TCP, per quelle UDP -u
, o per vedere le connesioni UNIX -x
.
Disponibilità di rete
In questa categorie troveremo quei comandi utili per capire velocemente se raggiungi un host sulla rete o per determinare se effettivamente è acceso il server.
Ping
Con il ping
puoi capire velocemente se puoi raggiungere un determinato device sulla tua stessa rete presupponendo che non è bloccato da un firewall.
Pings sulla stessa network sono sempre permessi dato che il traffico non viene ridiretto dal router (il traffico rimane locale).
Possibile usarlo sia tramite indirizzo IP o hostname.
1
2
ping 192.168.1.10
ping hostnamemacchina
continuerà a “pingare” fino a che non fermi il comando (dipende dal terminale che usi, puoi terminare il comando con la scorciatoia di tasti Ctrl + Shift + C)
per specificare il numero di ping, con l’opzione -c
configureremo il numero di volte che verrà eseguito.
1
ping -c 3 192.168.1.10
se hai indirizzi con protocollo IPv6 abilitati, va specificato anche nelle opzioni:
1
2
ping -4 192.168.1.10
ping -6 192.168.1.10
puoi specificarlo anche conteporanemente come segue:
1
ping -4 -c 3 192.168.1.10
La maggiorparte dei firewall/ambienti sono configurati per disabilitare la possibilità di ping nella rete, ma spesso è uno dei comandi che consiglio maggiormente anche per un semplice troubleshooting. Una delle possibili eccezioni è quella di permettere i ping dalla tua rete interna verso una possbile rete DMZ (acronimo di delimitarized zone, zona demilitarizzata, si indica una rete di computer, che funge tra due reti come zona cuscinetto con un proprio indirizzo IP delimitata mediante regole di accesso restrittive e rigide). Non Permettere il ping Da/A sulla rete DMZ aiuta maggiormente ad isolarla.
Trace Route
Il Trace route è utile per visualizzare il percorso che viene intrapreso per raggiungere un altra rete/network su internet. Principalmente è meno utile in un ambiente casalingo nella tua rete LAN, a meno che non sei in possesso di più punti router. In alcuni scenari homelab è possibile trovare l’utilizzo di un router per separare ulteriormente una rete interna. Puoi notare dall’output del comando che viene visualizzato asterischi o dei punti di domanda, in ambienti restrittivi è probabile anche che non tutto il percorso viene mostrato specialmente se ti trovi in una rete in presenza di policy firewall che bloccano/drop il traffico per il protocollo ICMP per ragioni di sicurezza.
il comando base è il seguente:
1
2
traceroute 8.8.8.8
traceroute google.com
Come il ping, puoi filtrarlo anche per i protocolli ip ipv4 e ipv6.
1
2
traceroute -4 google.com
traceroute -6 google.com
DNS
Comandi DNS sono utili nello specifico se si vuole assegnare hostname e/o sovascrivere i valori dns del tuo router. Questo per aiutarti in caso a determinare in primis che l’hostname punti correttamente all’indirizzo ip.
Comando Host
Per verificate l’indirizzo IP associato ad un domain name, vale sia sulla tua network locale sia su internet, usa il seguente comando host:
1
host google.com
Se vuoi specificare il server DNS da usare per il DNS lookup.
1
host google.com 1.1.1.1
Comando Dig
Se desideri avere più informazioni dettagliate riguardo il DNS, il comando giusto è il dig. l’uso di base è identico a quello host:
1
dig google.com
Puoi anche specificare quale server DNS utilizzare per il lookup (in questo caso @8.8.8.8
):
1
dig @8.8.8.8 google.com
se vuoi vedere tutti i record DNS associati al dominio, utilizzare l’opzione any
:
1
dig google.com any
puoi anche specificare nelle opzioni quale record dns nello specifico visualizzare (in questo caso i record mx):
1
dig google.com mx
Utile per quando vuoi conosce l’hostname/nome di dominio per un dato indirizzo ip. Tutto quello che occorre è specificare nelle opzioni -x
insieme l’indirizzo IP:
1
dig -x 8.8.8.8
Systemd Resolve
il systemd-resolve viene usato per verificare il server dns in uso. Può essere utile durante del troubleshooting riguardo i problemi DNS quando si cerca di configurare una rete interna o quando si smanetta nei parametri dns, se configurabili, sul proprio router. se lanciato puoi verificare il server DNS corrente e se quest’ultimo è configurato e acquisito attraverso il DHCP del router o manualmente.
1
systemd-resolve --status
Quando si cambiano configurazioni DNS, può essere utile per pulire le cache del DNS resolver in modo che il proprio PC riesca a risolvere più velocemente il nuovo indirizzo ip assegnato. Basta semplicemente usare l’opzione --flush-caches
.
1
sudo systemd-resolve --flush-caches
systemd-resolve è utile esclusivamente in quelle distro linux che usano
systemd
. Se su usa Ubuntu 22.04 o versioni successive, conviene utilizzare il resolvectl descritto poco sotto. Dato che il systemd-resolve non viene più supportato.
Resolvectl
Va usato il seguente comando per reperire le informazioni DNS o per pulire le cache DNS:
Per Vedere le statistiche DNS, incluse le cache hit rate:
1
resolvectl statistics
per pulire prima le cache DNS utilizzare i lseguente comando simile al systemd-resolve:
1
resolvectl flush-caches
DHCP
I comandi DHCP sono utili se vuoi rilasciare e rinnovare manualmente il DHCP lease per delle modifiche effettuate sul tuo router o su i tuoi switch.
Comando Dhclient
Se si assegna staticamente un indirizzo IP nel router per una macchina tramite il servizio DHCP, per modificare gli intervalli di indirizzi disponibili del servizio DHCP sul router/switch o se si esegue un’altra modifica di rete relativa al DHCP, è possibile utilizzare il comando dhclient
per semplificare l’aggiornamento del lease DHCP dei dispositivi. Senza utilizzare il comando, sarà necessario disconnettersi e riconnettersi dalla rete fisicamente, tramite il pannello di controllo del sistema operativo o attendere fino alla scadenza del lease DHCP. L’esecuzione di un semplice comando sarà sicuramente più conveniente rispetto gli altri approcci.
Per rilasciare e rinnovare il lease DHCP sul dispositivo, è necessario immettere entrambi i seguenti comandi nell’ordine indicato. Necessiti dei privilegi sudo
per questo comando.
1
2
sudo dhclient -r
sudo dhclient