Introduzione

Conoscere l'indirizzo IP del dispositivo è importante per la risoluzione dei problemi di rete, l'impostazione di una nuova connessione o la configurazione di un firewall e molto altro.

L'indirizzo IP può essere classificato in due categorie, pubblico e privato. Un IP pubblico è un indirizzo IP univoco a cui è possibile accedere da Internet. Gli indirizzi IP privati ​​sono riservati per uso interno nella rete privata senza essere esposti direttamente a Internet. Inoltre, esistono due tipi di indirizzi IP, IP versione 4 (IPv4) e IP versione 6 (IPv6).

Questo articolo spiega diversi metodi per determinare gli indirizzi IP pubblici e privati ​​di un sistema Linux.

Trovare il proprio indirizzo IP privato

Gli indirizzi IP privati ​​non sono instradabili su Internet e devono funzionare solo all'interno della rete locale. Di solito, gli indirizzi IP privati ​​vengono assegnati a ciascun dispositivo all'interno della rete locale dal router. Ciò fornisce un indirizzo IP univoco per i dispositivi all'interno della rete locale, come telefono, laptop, smart TV, stampante, media center e così via. I dispositivi sulla rete locale si connettono a Internet tramite NAT (traduzione dell'indirizzo di rete).

I seguenti intervalli di indirizzi IPv4 sono riservati per le reti private:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

È possibile determinare l'indirizzo IP privato del sistema eseguendo una query sullo stack di rete con comandi come ip, ifconfig e hostname.

In Linux, lo strumento standard per visualizzare e configurare le interfacce di rete è ip.

Per visualizzare un elenco di tutte le interfacce di rete e l'indirizzo IP associato digitare il comando seguente:

ip addr

L'output sarà simile al seguente. L'indirizzo IP privato è successivo al parametro inet:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 96:00:00:19:12:df brd ff:ff:ff:ff:ff:ff
    inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2a01:4f8:1c1c:c73d::1/64 scope global deprecated
       valid_lft forever preferred_lft 0sec
    inet6 fe80::9400:ff:fe19:12df/64 scope link
       valid_lft forever preferred_lft forever

È inoltre possibile utilizzare i seguenti comandi per visualizzare l'indirizzo IP privato:

hostname -I

L'output sarà simile al seguente:

195.201.18.78 2a01:4f8:1c1c:c73d::1

Utilizzando il comando ifconfig:

ifconfig

L'output sarà simile al seguente:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 195.201.18.78  netmask 255.255.255.255  broadcast 195.201.18.78
        inet6 2a01:4f8:1c1c:c73d::1  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::9400:ff:fe19:12df  prefixlen 64  scopeid 0x20<link>
        ether 96:00:00:19:12:df  txqueuelen 1000  (Ethernet)
        RX packets 1729570  bytes 622568810 (622.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1691830  bytes 248886911 (248.8 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 775  bytes 76140 (76.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 775  bytes 76140 (76.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Trovare il proprio indirizzo IP pubblico

Un indirizzo IP pubblico è un indirizzo IP instradabile a livello globale assegnato a un dispositivo di rete, che consente l'accesso diretto a Internet. Sono assegnati al dispositivo dal suo ISP e ogni dispositivo ha un indirizzo IP pubblico univoco. Gli indirizzi IP pubblici sono utilizzati dai router domestici, dai server Web, dai server di posta e così via.

Determinare l'indirizzo IP pubblico implica contattare un server remoto tramite il protocollo HTTP / HTTPS o DNS e ottenere l'indirizzo IP dalla risposta del server remoto.

Su macchine desktop, il modo più semplice per scoprire il tuo indirizzo IP pubblico è digitare "find my ip" nel tuo browser.

Se ci si trova su un server Linux  o se si desidera per qualche altra ragione trovare il proprio indirizzo IP pubblico in altro modo, è possibile utilizzare strumenti da riga di comando come dig, curl e wget.

La maggior parte dei provider DNS come OpenDNS e Google ti consente di interrogare i loro server e ottenere il tuo indirizzo IP pubblico.

Puoi usare uno dei comandi seguenti per ottenere il tuo IP:

dig ANY +short @resolver2.opendns.com myip.opendns.com
dig ANY +short @resolver2.opendns.com myip.opendns.com
dig ANY +short @ns1-1.akamaitech.net ANY whoami.akamai.net

Esistono molti servizi HTTP / HTTPS online che rispondono con il tuo indirizzo IP pubblico, eccone alcuni:

curl -s http://tnx.nl/ip
curl -s https://checkip.amazonaws.com
curl -s api.infoip.io/ip
curl -s ip.appspot.com
wget -O - -q https://icanhazip.com/

Se uno dei comandi sopra non funziona, potrebbe esserci un problema con il servizio online.

Puoi persino creare un alias nel file ~/.bashrc o ~/.zshrc in modo da non dover digitare e ricordare un comando lungo. Ad esempio, è possibile aggiungere il seguente alias:

alias pubip='dig ANY +short @resolver2.opendns.com myip.opendns.com'

Ora, ogni volta che devi trovare il tuo IP pubblico, digita semplicemente il pubip tuo terminale.

Conclusione

Abbiamo visto diversi comandi e servizi online che è possibile utilizzare per trovare il proprio indirizzo IP privato e pubblico.