Rete dal Terminale

Bentornato.
Nella lezione precedente hai imparato a controllare processi e monitorare il sistema.
Ora usciamo dal tuo computer.
Entriamo nella rete.
Perché la tua macchina non vive da sola. Parla con router, server, siti web, API, repository di pacchetti e a volte con una stampante che rifiuta di collaborare perché le stampanti sono mobili maledetti.
Cosa Imparerai
In questa lezione imparerai a:
- testare se un host è raggiungibile con
ping; - controllare siti web e API con
curl; - vedere indirizzi IP con
ip; - controllare il gateway predefinito;
- vedere porte in ascolto con
ss; - capire una base di DNS;
- risolvere problemi di rete semplici.
La Missione
La tua missione è semplice:
Usare il terminale per rispondere a queste domande:
- Sono connesso?
- Posso raggiungere un sito?
- Qual è il mio indirizzo IP?
- Quali porte sono aperte?
- Il problema è il computer, il router o internet che sta facendo teatro?
Testare una Connessione con ping
Il comando ping controlla se un host è raggiungibile.
Prova:
ping -c 4 example.com
L’opzione -c 4 significa “invia 4 pacchetti”.
Potresti vedere:
64 bytes from example.com: icmp_seq=1 ttl=56 time=22.4 ms
64 bytes from example.com: icmp_seq=2 ttl=56 time=21.9 ms
64 bytes from example.com: icmp_seq=3 ttl=56 time=22.1 ms
64 bytes from example.com: icmp_seq=4 ttl=56 time=22.0 ms
Questo significa che il computer riesce a raggiungere example.com.
Se fallisce, può voler dire:
- sei offline;
- DNS non funziona;
- il server blocca ping;
- la rete sta passando una brutta giornata.
ping non è perfetto, ma è un buon primo controllo.
Come chiedere: “Ciao internet, sei vivo?”
Ping a un Indirizzo IP
Prova a fare ping a un IP pubblico:
ping -c 4 1.1.1.1
Se questo funziona, ma questo no:
ping -c 4 example.com
allora internet potrebbe funzionare, ma DNS potrebbe essere rotto.
DNS trasforma nomi come example.com in indirizzi IP.
Senza DNS, internet diventa una città dove ogni edificio ha solo coordinate e nessun nome.
Molto tecnico.
Molto fastidioso.
Scaricare una Pagina con curl
curl permette di fare richieste web dal terminale.
Prova:
curl https://example.com
Vedrai l’HTML della pagina.
Potrebbe sembrare disordinato.
È normale.
HTML è ciò di cui sono fatti i siti. A volte belli nel browser, terrificanti nel terminale.
Mostrare Solo gli Header
Per mostrare solo gli header HTTP, usa:
curl -I https://example.com
Potresti vedere:
HTTP/2 200
content-type: text/html
server: ...
Il codice di stato è importante.
Esempi comuni:
200 = OK
301 = spostato permanentemente
403 = vietato
404 = non trovato
500 = errore del server
Se lavori con siti o API, curl diventa la tua piccola macchina della verità.
I browser possono nascondere cose.
curl non si preoccupa dei sentimenti.
Controllare gli Indirizzi IP
Per vedere interfacce di rete e indirizzi IP, usa:
ip addr
Potresti vedere interfacce come:
lo
wlan0
eth0
enp3s0
Significati comuni:
loè l’interfaccia loopback;wlan0spesso è Wi-Fi;eth0oenp...spesso è Ethernet.
Cerca qualcosa come:
inet 192.168.1.35/24
Questo è il tuo IP locale.
L’IP locale viene usato dentro la rete di casa o ufficio.
Di solito non è il tuo IP pubblico su internet.
Controllare la Route Predefinita
Per vedere dove passa il traffico di default, usa:
ip route
Potresti vedere:
default via 192.168.1.1 dev wlan0
Questo significa che il computer manda il traffico internet attraverso 192.168.1.1.
Di solito è il router.
Il router è quella piccola scatola che sembra semplice ma controlla segretamente tutta la tua vita digitale.
Controllare Porte Aperte con ss
Il comando ss mostra socket e connessioni di rete.
Per vedere porte TCP e UDP in ascolto:
ss -tuln
Potresti vedere:
Netid State Local Address:Port
tcp LISTEN 0.0.0.0:3000
tcp LISTEN 127.0.0.1:5432
Questo mostra quali servizi stanno ascoltando.
Esempi:
3000può essere un server di sviluppo Next.js;5432spesso è PostgreSQL;8080spesso è un server web locale;22di solito è SSH.
Molto utile quando l’app dice:
“Server is running.”
ma il browser dice:
“No.”
Uno dei due mente.
ss ti aiuta a indagare.
Controllare Se un Server Locale Funziona
Se la tua app gira sulla porta 3000, prova:
curl http://localhost:3000
Oppure controlla le porte in ascolto:
ss -tuln | grep 3000
Se vedi un risultato, qualcosa sta ascoltando sulla porta 3000.
Se non vedi nulla, probabilmente il server non è avviato.
Il terminale ha parlato.
Freddamente, ma chiaramente.
Controllo DNS di Base
Per controllare se un dominio viene risolto, puoi usare:
getent hosts example.com
Potresti vedere:
93.184.216.34 example.com
Questo significa che il sistema riesce a risolvere il dominio.
Se fallisce, il problema potrebbe essere DNS.
I problemi DNS sono speciali: internet può funzionare, ma i nomi no.
È come avere un telefono ma dimenticare il nome di tutti.
Errori Comuni
Pensare che ping dimostri tutto
Alcuni server bloccano ping.
Quindi se questo fallisce:
ping -c 4 example.com
non significa sempre che il sito sia giù.
Prova anche:
curl -I https://example.com
Testa sempre in più modi.
La rete non è una sola porta.
È un palazzo con troppi corridoi.
Confondere IP locale e IP pubblico
Il tuo IP locale può essere:
192.168.1.35
Il tuo IP pubblico è quello visto da internet.
Non sono la stessa cosa.
Il router di solito sta in mezzo.
Come un buttafuori con luci lampeggianti.
Dimenticare che le porte contano
Un server può essere attivo, ma su una porta diversa.
Per esempio:
http://localhost:3000
http://localhost:8080
http://localhost:5173
Sono indirizzi diversi perché le porte sono diverse.
I numeri di porta contano.
Il browser non è telepatico.
Pratica
Prova questo:
ping -c 4 example.com
ping -c 4 1.1.1.1
curl -I https://example.com
ip addr
ip route
ss -tuln
getent hosts example.com
Poi rispondi:
- Cosa testa
ping? - Cosa mostra
curl -I? - Quale comando mostra gli indirizzi IP?
- Quale comando mostra la route predefinita?
- Quale comando mostra porte in ascolto?
Mini Sfida
Avvia un server di sviluppo locale, se ne hai uno.
Per esempio, in un progetto Next.js:
npm run dev
Poi, in un altro terminale:
ss -tuln | grep 3000
curl http://localhost:3000
Se la tua app usa un’altra porta, sostituisci 3000.
Congratulazioni.
Ora controlli il tuo server locale come una persona seria.
Progresso pericoloso.
Riassunto
Oggi hai imparato che:
pingtesta la raggiungibilità;curlfa richieste web;curl -Imostra header HTTP;ip addrmostra indirizzi IP;ip routemostra informazioni di routing;ss -tulnmostra porte in ascolto;getent hostspuò controllare la risoluzione DNS;- IP locale e IP pubblico sono diversi;
- le porte fanno parte dell’indirizzo.
La rete dal terminale è una competenza potente.
Ti aiuta a capire se il problema è nel codice, nel server, nel router, nel DNS o nella palude misteriosa chiamata “internet”.
Prossima Lezione
Nella prossima lezione parleremo di archivi e compressione.
Impacchetteremo file, li estrarremo e finalmente capiremo cosa sono quei .tar.gz.
Spoiler: non è pasta.