Read in 3 minutes

last updated 

How to Find your IP Address in Linux

Knowing the IP address of your device is important when troubleshooting network issues, setting up a new connection or configuring a firewall.

IP Address can be classified into two categories, public and private. A public IP is an IP Address that is unique and can be accessed from the Internet. Private IP addresses are reserved for internal use within your private network without being directly exposed to the Internet. Furthermore, there are two types of IP addresses, IP version 4 (IPv4) and IP version 6 (IPv6).

This article explains several different methods of determining the public and private IP Addresses of a Linux system.

Find Your Private IP Address

Private IP addresses are not routable over the Internet and are meant to work within the local network only. Usually, the private IP addresses are assigned to each device inside your local network by your router. This provides a unique IP address for devices that are within your local network, such as your phone, laptop, smart TV, printer, media center, and so on. Devices on the local network are connecting to the Internet through NAT (network address translation).

The following IPv4 address ranges are reserved for the private networks:

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

You can determine your system private IP address by querying the network stack with commands such as ip, ifconfig or hostname.

In Linux, the standard tool for displaying and configuring network interfaces is ip.

To display a list of all network interfaces and the associated IP address type the following command:

ip addr

The output will look something like below. The private IP address is highlighted.

You can also use following commands to display the private IP address:

hostname -I
ifconfig

Find Your Public IP Address

A Public IP address is a globally routable IP address that is assigned to a network device, allowing it direct access to the Internet. They are assigned to the device by its ISP and each device has a unique public IP address. The public IP addresses are used by the home routers, web servers, mail servers, and so on.

Determining the public IP address involves contacting a remote server over the HTTP/HTTPS or DNS protocol and obtaining the IP address from the remote server response.

On Desktop machines, the easiest way to find out your public IP address is to type “what is my ip” in your browser.

If you are on a headless Linux server or you want to assign the IP address to a shell script variable you can use command-line tools such as dig, curl and wget.

Most of the DNS providers such as OpenDNS and Google allows you to query their servers and obtain your public IP address.

You can use any of the commands below to get your 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

There are many online HTTP/HTTPS services which respond with your public IP address. Here are some of them:

  • 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/

If any of the command above is not working, there may be a problem with the online service.

You can even create an alias in your ~/.bashrc or ~/.zshrc file so you don’t have to type and remember a long command. For example, you can add the following alias:

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

Now, whenever you need to find your public IP just type pubip in your terminal.

Conclusion

We have shown you several different commands and online services that you can use to find out your private and public IP address.

If you have any question or remark, please leave a comment below.