Jan 272013
 

Sia per un server reale, una VPS o semplicemente per il vostro desktop è utile sapere quale indirizzo IP il tuo sistema Linux sta utilizzando, questo può essere facilmente visto con un po’ di comando se si è collegati direttamente a Internet tramite un modem o un IP pubblico della propria azienda, ma a volte ci si trova dietro un router , un dispositivo che inoltra i pacchetti di dati tra reti di computer. Un router è collegato a due o più linee di dati di reti diverse, ed in casa è utilizzato per “condividere” la propria ADSL che normalmente fornisce 1 IP pubblico tra tutti i dispositivi, i quali avranno ciascuno un IP privato diverso.

Per esempio a casa mia ho un router Wi-Fi ADSL che uso per dare la connessione Wi-Fi ai miei 3 PC, 1 smartphone e 1 tablet android, una stampante e il mio Kindle, ogni dispositivo ha un IP privato, si chiama privato perché non è visibile sulla rete pubblica che può che vedere solo l’IP del mio router Wi-Fi, ma ora vediamo come controllare il proprio IP sui computer Linux.

Ottenere l’Ip del proprio computer

Come ho scritto a seconda della configurazione di rete questo può essere un IP pubblico e IP privato, vi consiglio di leggere la voce su Wikipedia per quanto riguarda le reti private per avere maggiori informazioni su questo tipo di rete, per farla breve il tuo IP è privato, se si vede un numero in questi intervalli, per le persone più esperte sto parlando solo di IPv4 in questo articolo:

10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255

Ci sono almeno 2 vie per ottenere il vostro indirizzo IP:

1) Questo comando è deprecato, ma è ancora utilizzato da tutti gli amministratore di sistema: ifconfig

Basta aprire un terminale e digitare /sbin/ifconfig si otterrà un output simile a questo:

#/sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr ac:2f:f1:14:28:d3  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:7305 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7305 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:934870 (934.8 KB)  TX bytes:934870 (934.8 KB)
 
wlan0     Link encap:Ethernet  HWaddr 18:11:7c:12:3e:82  
          inet addr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::2a10:7bff:fe42:3e82/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4742986 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6167198 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3913304848 (3.9 GB)  TX bytes:1211469656 (1.2 GB)

Da questo output posso avere le seguenti informazioni:

  1. Il computer dispone di 2 dispositivi di rete reali: eth0 e wlan0 e lo standard lo ( loopback ), questo dispositivo è un dispositivo speciale usato per compiti che coinvolgono solo la macchina e utilizza sempre l’indirizzo IP 127.0.0.1.
  2. Il dispositivo di rete eth0 non è collegato o non è configurato, come si può vedere non ha alcun campo denominato inet addr , campo che dovrebbe contenere il suo indirizzo IP. Nel mio caso questo è il dispositivo Ethernet 100 MB della scheda madre che io non uso.
  3. Il dispositivo di rete wlan0 ha l’indirizzo IP 192.168.1.4, quindi so che utilizza una rete privata per la connessione ad un router.

Se si desidera solo ottenere il vostro indirizzo IP, senza tutte le altre informazioni è possibile utilizzare questo piccolo script:

/sbin/ifconfig | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
127.0.0.1
192.168.1.4

Questo piccolo script di solito funziona su tutte le distribuzioni Debian, Ubuntu e Mint, ma su altre distro che hanno cambiato l’output di ifconfig questo potrebbe non funzionare (es. Fedora).

2) La suite iproute2

iproute2è una collezione di tool a riga di comando per il controllo del networking e del traffico di rete, sia IPv4 che IPv6 ed è l’erede naturale della suite net-tools.

Il comando equivalente per ifconfig è ip addr che dà un output simile :

#ip addr
1: lo: <loopback ,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <no -CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether bc:5f:f4:12:18:d3 brd ff:ff:ff:ff:ff:ff
3: wlan0: <broadcast ,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 18:11:7c:12:3e:82 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.4/24 brd 192.168.0.255 scope global wlan0
    inet6 fe80::2a10:7bff:fe42:3e82/64 scope link </broadcast></no></loopback>
       valid_lft forever preferred_lft forever

Come si può vedere il formato è leggermente diverso, ma si ottengono le stesse informazioni, per ottenere solo gli indirizzi IP utilizzare questo piccolo script:

ip addr | awk '/inet / {sub(/\/.*/, "", $2); print $2}'
127.0.0.1
192.168.0.4


Ottenere il tuo Ip pubblico

Così ora sappiamo che stiamo utilizzando una rete privata, ma come possiamo conoscere il nostro vero indirizzo IP?
Il modo migliore è quello di utilizzare un sito web pubblico che mostri l’IP del computer richiedente, questo è un buon modo per conoscere l’indirizzo IP che si utilizza per navigare in rete, di seguito sono solo alcuni esempi, con alcuni tra i più noti siti web che offrono questo servizio:

http://ipecho.net/plain

Questo sito mostra alla url /plain solo l’indirizzo IP quindi è utile se usato con uno script di shell, per ottenere queste informazioni è possibile utilizzare uno di questi comandi:

#wget -qO- http://ipecho.net/plain
79.35.56.153

O se preferite curl:

#curl http://ipecho.net/plain
79.35.56.153

ifconfig.me

Se si naviga questo sito con il proprio normale browser si vedrà come ottenere un sacco di informazioni dalla riga di comando, utilizzando curl , per ottenere l’IP è possibile utilizzare semplicemente:

#curl ifconfig.me
79.35.56.153

Quindi, come potete vedere entrambi i comandi restituiscono l’indirizzo IP 79.35.56.153 come mio IP pubblico ed è davvero facile ottenere il proprio IP pubblico con 1 solo comando dal terminale linux.

Popular Posts:

flattr this!

  8 Responses to “Ottieni il tuo IP pubblico e privato dal terminale Linux”

  1. Hello,

    I have tested your command :
    /sbin/ifconfig | grep “inet addr” | awk -F: ‘{print $2}’ | awk ‘{print $1}’
    on fedora 15 and it works ! It has the same output as your example.

    Fatiha

  2. x fedora:
    # /sbin/ifconfig | grep “netmask” | awk ‘{print $2}’
    127.0.0.1
    192.168.55.2

  3. Here’s a useful one…. If you have multiple interfaces and switch between them sometimes (eth0 for work, wlan1 for home, tun0 for vpn) and you want to get the ip and gateway of the interface actually used for internet try this:

    ip route get 8.8.8.8

    It doesn’t actually connect to 8.8.8.8 (googles DNS server), it just shows you the ip route the connection to that ip would take.

    • Thanks Jimmy

      This is realyl useful, probablu I’ll do a post in teh next days about iproute2 and some useful commands, and this is in that list.

  4. If you go to http://miniupnp.tuxfamily.org
    you will get a library which gives you upnp commands
    The command upnpc -l gives you a lot of upnp info about your dsl router, including your external IP.

    No need for an external site to feed you the data, just a simple compilation

 Leave a Reply

(required)

(required)


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>