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:
- 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.
- 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. - 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:
- None Found
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
Thank you for the feedback, I think the problem is with newer version (17+)
Your right it does not work with fedora 17
x fedora:
# /sbin/ifconfig | grep “netmask” | awk ‘{print $2}’
127.0.0.1
192.168.55.2
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.
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
Thanks for the info, I’ll test it for sure.
Great!!!
I could not get it to work on Centos 7.4 the following occurred :
upnpc -l
upnpc : miniupnpc library test client, version 2.0.
(c) 2005-2016 Thomas Bernard.
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
No IGD UPnP Device found on the network !