IP pubblico e IP locale: cosa mostra il terminale
Il terminale conosce solo gli indirizzi configurati sulle schede di rete del computer, cioè l’IP locale. Comandi come ipconfig o ip addr mostrano quindi indirizzi privati come 192.168.1.20, assegnati dal router. L’IP pubblico appartiene al router, o all’operatore se c’è il CGNAT: il computer non lo vede, e per conoscerlo bisogna chiedere a un server su Internet da quale indirizzo arriva la richiesta. È quello che fa curl mio-indirizzo-ip.it, lo stesso dato che trovi nella pagina qual è il mio IP.
Con IPv6 la distinzione è meno netta: ogni dispositivo ha indirizzi IPv6 pubblici propri, visibili sia con ipconfig sia dai siti. Il sistema però naviga di solito con un indirizzo temporaneo, che cambia nel tempo, e non sempre è il primo dell’elenco.
Come vedere il tuo IP pubblico dal terminale
- Apri il terminale: su Windows il Prompt dei comandi o PowerShell, su Mac l’app Terminale, su Linux la shell.
- Scrivi
curl mio-indirizzo-ip.ite premi Invio. In Windows PowerShell 5.1 scrivicurl.exe mio-indirizzo-ip.it. - Leggi la risposta: è il tuo IP pubblico, senza altro testo. Se la linea ha anche IPv6, aggiungi
-4per avere l’indirizzo IPv4. - Per l’IP locale del computer usa invece
ipconfig,ipconfig getifaddr en0oip addr, a seconda del sistema.
IP pubblico con curl, wget e HTTPie
Quando riceve una richiesta da curl, wget, HTTPie o xh, la home di mio-indirizzo-ip.it risponde con il tuo IP in testo semplice, seguito da un a capo, invece della pagina HTML. Funziona anche in http senza la www, quindi basta il comando più corto.
| Dove | Comando | Note |
|---|---|---|
| Linux, macOS, Prompt dei comandi di Windows | curl mio-indirizzo-ip.it | curl è già presente su macOS, Windows 11 e Windows 10 dalla build 17063. Su alcune distribuzioni Linux va installato, per esempio con sudo apt install curl |
| Solo IPv4 | curl -4 mio-indirizzo-ip.it | Obbliga curl a collegarsi in IPv4 |
| Windows PowerShell 5.1 | curl.exe mio-indirizzo-ip.it | Lì curl è un alias di Invoke-WebRequest |
| PowerShell senza curl | (Invoke-WebRequest -UseBasicParsing https://www.mio-indirizzo-ip.it/ -UserAgent curl/8).Content.Trim() | Lo user agent dice al sito di rispondere in testo |
| wget | wget -qO- mio-indirizzo-ip.it | -q toglie i messaggi, -O- stampa a schermo |
| HTTPie | http -b mio-indirizzo-ip.it | -b stampa solo il corpo della risposta |
Secondo la documentazione Microsoft, in Windows PowerShell 5.1 curl e wget sono alias di Invoke-WebRequest, che scarica la pagina HTML completa: per questo serve curl.exe. In PowerShell 7 l’unico alias rimasto è iwr, quindi curl richiama il programma vero. Invoke-WebRequest si presenta al sito con uno user agent da browser: senza -UserAgent curl/8 riceveresti la pagina intera. Nella versione 5.1 aggiungi sempre -UseBasicParsing, che dopo l’aggiornamento di sicurezza del 9 dicembre 2025 evita una richiesta di conferma.
Il comando mostra l’indirizzo con cui il tuo computer si collega in quel momento. Oggi il sito risponde solo in IPv4, quindi ricevi sempre il tuo IPv4. Negli script che devono avere l’IPv4, per esempio da comunicare a un fornitore per una whitelist, usa comunque curl -4. Con una VPN attiva vedrai l’IP del server VPN.
Con curl mio-indirizzo-ip.it/json ricevi anche ASN, operatore e rete CIDR in JSON, senza chiave né registrazione. Gli altri endpoint e i limiti d’uso sono nella pagina dell’API IP gratuita.
IP locale su Windows: ipconfig e PowerShell
Su Windows l’IP locale si legge con ipconfig, nel Prompt dei comandi o in PowerShell. Cerca la scheda in uso (Wi-Fi o Ethernet) e la riga “Indirizzo IPv4”. Nella stessa scheda trovi la subnet mask e il gateway predefinito, cioè l’indirizzo del router, spiegato nella guida all’IP del router.
| Comando | Cosa fa |
|---|---|
ipconfig | Indirizzi IPv4 e IPv6, subnet mask e gateway di ogni scheda |
ipconfig /all | Aggiunge indirizzo fisico (MAC), server DHCP e DNS, durata del lease |
ipconfig /release e ipconfig /renew | Rilascia e richiede di nuovo l’indirizzo al DHCP del router: cambia l’IP locale, non quello pubblico |
ipconfig /flushdns | Svuota la cache DNS del computer, utile dopo un cambio dei DNS |
Get-NetIPConfiguration | In PowerShell, schede attive con indirizzo IPv4, gateway e DNS |
Get-NetIPAddress -AddressFamily IPv4 | In PowerShell, tutti gli indirizzi IPv4, compresi loopback e schede virtuali |
ipconfig elenca anche le schede di VPN, macchine virtuali e Bluetooth. Un indirizzo che inizia con 169.254 indica una scheda che non ha ricevuto risposta dal DHCP: quasi sempre non è quella che stai usando.
IP locale su macOS: ipconfig getifaddr e networksetup
Sul Mac il comando più diretto è ipconfig getifaddr en0, che stampa solo l’indirizzo IPv4 dell’interfaccia en0. Il nome dell’interfaccia Wi-Fi dipende dal modello: se la risposta è vuota, networksetup -listallhardwareports elenca le porte con il loro nome (en0, en1…) e puoi ripetere il comando con quello giusto.
networksetup -getinfo Wi-Fimostra indirizzo IP, subnet mask e router del servizio Wi-Fi. Il nome del servizio è quello che compare nelle impostazioni di Rete.ifconfigelenca tutte le interfacce: l’IP locale è sulla rigainetdell’interfaccia attiva.
L’ipconfig del Mac ha lo stesso nome di quello di Windows ma è un altro programma: si usa con un sottocomando, come getifaddr. Le opzioni complete sono nel manuale del sistema, con man ipconfig e man networksetup.
IP locale su Linux: ip addr e hostname -I
Su Linux il comando standard è ip addr (o la forma breve ip a) del pacchetto iproute2. L’IP locale è sulla riga inet dell’interfaccia collegata, per esempio eth0, enp3s0 o wlan0.
ip -4 addr showmostra solo gli indirizzi IPv4.ip route get 1.1.1.1dice quale indirizzo il sistema usa per uscire verso Internet: è il valore doposrc.hostname -Istampa tutti gli indirizzi dell’host su una riga. È disponibile su Debian, Ubuntu e derivate, non in tutte le distribuzioni.ifconfigfunziona ancora dove è installato il vecchio pacchetto net-tools, che molte distribuzioni non installano più.
Usare l’IP in uno script
La risposta di curl mio-indirizzo-ip.it contiene solo l’indirizzo, quindi la salvi direttamente in una variabile. L’opzione -s toglie la barra di avanzamento.
| Shell | Esempio |
|---|---|
| bash e zsh | IP=$(curl -s mio-indirizzo-ip.it) |
| PowerShell | $ip = curl.exe -s mio-indirizzo-ip.it |
| Prompt dei comandi | for /f %i in ('curl -s mio-indirizzo-ip.it') do set IP=%i (in un file .bat scrivi %%i) |
Un uso tipico è controllare se l’IP è cambiato, per esempio da un’attività pianificata: lo script confronta l’indirizzo con quello salvato la volta precedente e, se è diverso, aggiorna una regola del firewall o manda un avviso. Per una linea di casa basta un controllo all’ora, e in ogni caso non interrogare il sito più di una volta ogni pochi minuti. Se l’indirizzo cambia di frequente, la guida IP statico o dinamico spiega perché.
Per diagnosticare un problema di rete usa anche il ping e il traceroute, disponibili qui come strumenti online da un server in Italia.
Domande frequenti
Qual è il comando per vedere l’IP su Windows?
Per l’IP locale è ipconfig, nella riga “Indirizzo IPv4” della scheda Wi-Fi o Ethernet. Per l’IP pubblico è curl mio-indirizzo-ip.it nel Prompt dei comandi, oppure curl.exe mio-indirizzo-ip.it in Windows PowerShell.
Perché ipconfig non mostra il mio IP pubblico?
Perché il tuo computer non ha l’IP pubblico: ce l’ha il router, che con il NAT fa uscire tutti i dispositivi di casa dallo stesso indirizzo. ipconfig mostra solo gli indirizzi delle schede del computer. Per l’IP pubblico serve un servizio esterno come curl mio-indirizzo-ip.it o la pagina qual è il mio IP.
Come vedo l’IP pubblico dal terminale di Mac o Linux?
Scrivi curl mio-indirizzo-ip.it: curl è già installato su macOS e su molte distribuzioni Linux, nelle altre si aggiunge dal gestore dei pacchetti. In alternativa usa wget -qO- mio-indirizzo-ip.it. Aggiungi -4 a curl se vuoi l’indirizzo IPv4 su una linea che ha anche IPv6.
Come salvo l’IP pubblico in una variabile?
In bash e zsh usa IP=$(curl -s mio-indirizzo-ip.it), in PowerShell $ip = curl.exe -s mio-indirizzo-ip.it. La risposta contiene solo l’indirizzo, quindi non serve filtrarla.
Cosa fanno ipconfig /release e ipconfig /renew?
/release restituisce al router l’indirizzo locale ottenuto con il DHCP e /renew ne chiede uno nuovo. Servono a risolvere problemi di connessione nella rete di casa. Non cambiano l’IP pubblico, che dipende dal router e dall’operatore.
Fonti e riferimenti
- Microsoft Learn – comando ipconfig
- Microsoft Learn – Get-NetIPAddress
- Microsoft Learn – Invoke-WebRequest in Windows PowerShell 5.1 (alias, -UseBasicParsing, -UserAgent)
- Microsoft Learn – Invoke-WebRequest in PowerShell 7.5
- Microsoft Command Line blog – Tar and Curl Come to Windows! (gennaio 2018)
- curl – manuale (opzioni -4 e -s)
- wget(1) – pagina di manuale (Debian)
- HTTPie – opzioni di output
- ip-address(8) – pagina di manuale Linux (iproute2)
- hostname(1) – pagina di manuale (Debian), opzione -I
Pagina aggiornata il