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

  1. Apri il terminale: su Windows il Prompt dei comandi o PowerShell, su Mac l’app Terminale, su Linux la shell.
  2. Scrivi curl mio-indirizzo-ip.it e premi Invio. In Windows PowerShell 5.1 scrivi curl.exe mio-indirizzo-ip.it.
  3. Leggi la risposta: è il tuo IP pubblico, senza altro testo. Se la linea ha anche IPv6, aggiungi -4 per avere l’indirizzo IPv4.
  4. Per l’IP locale del computer usa invece ipconfig, ipconfig getifaddr en0 o ip 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.

DoveComandoNote
Linux, macOS, Prompt dei comandi di Windowscurl mio-indirizzo-ip.itcurl è 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 IPv4curl -4 mio-indirizzo-ip.itObbliga curl a collegarsi in IPv4
Windows PowerShell 5.1curl.exe mio-indirizzo-ip.itLì 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
wgetwget -qO- mio-indirizzo-ip.it-q toglie i messaggi, -O- stampa a schermo
HTTPiehttp -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.

ComandoCosa fa
ipconfigIndirizzi IPv4 e IPv6, subnet mask e gateway di ogni scheda
ipconfig /allAggiunge indirizzo fisico (MAC), server DHCP e DNS, durata del lease
ipconfig /release e ipconfig /renewRilascia e richiede di nuovo l’indirizzo al DHCP del router: cambia l’IP locale, non quello pubblico
ipconfig /flushdnsSvuota la cache DNS del computer, utile dopo un cambio dei DNS
Get-NetIPConfigurationIn PowerShell, schede attive con indirizzo IPv4, gateway e DNS
Get-NetIPAddress -AddressFamily IPv4In 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-Fi mostra indirizzo IP, subnet mask e router del servizio Wi-Fi. Il nome del servizio è quello che compare nelle impostazioni di Rete.
  • ifconfig elenca tutte le interfacce: l’IP locale è sulla riga inet dell’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 show mostra solo gli indirizzi IPv4.
  • ip route get 1.1.1.1 dice quale indirizzo il sistema usa per uscire verso Internet: è il valore dopo src.
  • hostname -I stampa tutti gli indirizzi dell’host su una riga. È disponibile su Debian, Ubuntu e derivate, non in tutte le distribuzioni.
  • ifconfig funziona 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.

ShellEsempio
bash e zshIP=$(curl -s mio-indirizzo-ip.it)
PowerShell$ip = curl.exe -s mio-indirizzo-ip.it
Prompt dei comandifor /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

Pagina aggiornata il