Knowing whether your Linux system uses a Static or DHCP-assigned IP can be helpful for a variety of reasons. For example, if you are hosting a web server or running a game server, you will need to use a static IP address. You may also need to know your IP address if you are trying to troubleshoot a network problem. This article explains how to check if your IP address is static or assigned from DHCP in Linux.
It covers both manual and command-line methods, and includes a clear explanation of the difference between static and dynamic IP addresses.
Table of Contents
Introduction
An IP address is a unique identifier for a device on a network. It is used to route traffic between devices and allows them to communicate with each other.
There are two types of IP addresses: static and dynamic.
- Static IP addresses are assigned manually and remain the same until they are changed.
- Dynamic IP addresses are assigned automatically by a DHCP server and can change over time.
Most home and office networks use DHCP to assign IP addresses to devices. This is because it is easier to manage and helps to prevent IP address conflicts.
However, there are some cases where it is necessary to use a static IP address, such as for hosting a web server or running a game server.
If you are unsure whether your IP address is static or assigned from DHCP in Linux, you can use any one of the following methods.
In Linux, you can determine if an IP address is assigned statically or via DHCP by examining the system's network configuration files or using command line tools like nmcli
or by checking the lease information.
1. Determine if IP Address is Static or DHCP by Checking Network Configuration Files
For Linux systems that uses NetworkManager, you can use this method to find if an IP address is static or dynamic.
The configuration might be stored in /etc/NetworkManager/system-connections/
. You can check individual connection files here.
$ sudo ls /etc/NetworkManager/system-connections/ Auto Ostechnix_jio_5g.nmconnection Auto Sk vivo V21e 5G.nmconnection Wired connection 1 Auto Ostechnix.nmconnection Ostechnix_jio_4g.nmconnection
For instance, to check if the 'Wired Connection 1
' uses whether static IP or dynamic IP by viewing the contents of its configuration file using command:
$ sudo cat /etc/NetworkManager/system-connections/Wired\ connection\ 1
Look for a line starting with method=
under [ipv4]
and [ipv6]
sections. If it says auto
, it's DHCP. If it says manual
, it's static.
[connection] id=Wired connection 1 uuid=5cfE09f2EG-20a6-3089-8577-5269e5cf08gh type=ethernet permissions= timestamp=1650630622 [ethernet] mac-address-blacklist= [ipv4] address1=192.168.29.55/24,192.168.29.1 dns=8.8.8.8; dns-search= method=manual [ipv6] addr-gen-mode=eui64 dns-search= ip6-privacy=2 method=auto [proxy]
As you can see in the output, I have assigned static IP address to my wired Ethernet connection.
If you want to view the details of all available network connections, run:
$ sudo cat /etc/NetworkManager/system-connections/*
For Debian/Ubuntu systems or derivatives that do not use NetworkManager:
Check the /etc/network/interfaces
file.
$ cat /etc/network/interfaces
If you see iface <nic-name> inet dhcp
, it's using DHCP. If you see iface <nic-name> inet static
, it's static.
[...] source /etc/network/interfaces.d/* auto lo iface lo inet loopback iface enp89s0 inet manual auto vmbr0 iface vmbr0 inet static address 192.168.1.101/24 bridge-ports none bridge-stp off bridge-fd 0 [...]
For older Red Hat/Fedora systems or derivatives that do not use NetworkManager:
Check the files in /etc/sysconfig/network-scripts/
.
$ cat /etc/sysconfig/network-scripts/ifcfg-*
Look for a line starting with BOOTPROTO=
. If it says dhcp
, it's DHCP. If not, it's static.
2. Check if IP Address is Static or DHCP using nmcli Command
You can also use this method on Linux systems with NetworkManager.
The nmcli
tool is a command-line client for NetworkManager. You can use it to quickly determine the source of your IP address.
$ nmcli con show [connection-name]
Replace [connection-name]
with the name of your connection.
For example, to view the source of the 'Auto Ostechnix_jio_5g' connection, you would run:
$ nmcli con show 'Auto Ostechnix_jio_5g'
In the output, look for the ipv4.method
or ip6.method
line. If it says auto
, it's DHCP. If it says manual
, it's static.
The output will be usually long. So you can use grep command like below to filter the exact details you want.
$ nmcli con show 'Auto Ostechnix_jio_5g' | grep ipv4.method ipv4.method: auto
As you can see in the above output, the IP address is dynamically assigned using a DHCP server in my network.
If you want to view the source of the IP version 6, replace ipv4.method
with ipv6.method
in the above command.
3. Find if IP Address is Static or Dynamic by Checking DHCP Lease Information
The DHCP client on Linux typically logs its activity, and you can inspect these logs to find if an IP address was obtained via DHCP. Additionally, the DHCP client usually stores its lease information in a lease file.
For the dhclient
:
The lease file is often located at /var/lib/dhcp/dhclient.leases
or /var/lib/dhclient/dhclient.leases
.
$ cat /var/lib/dhcp/dhclient.leases
If you see recent leases in this file, then the system has been obtaining its IP via DHCP.
Remember, the method to check can vary based on the Linux distribution and the version, as well as which networking tools are in use (NetworkManager, traditional ifup/ifdown
, systemd-networkd
, etc.). The methods provided above cover many common scenarios, but not every potential configuration.
Conclusion
In this brief guide, we discussed a few ways to check if your IP address is static or dynamically allocated from a DHCP server. Understanding whether your system uses a Static or DHCP-assigned IP can be beneficial for troubleshooting a network issue in Linux. Pick a method that suits you and determine your IP's origin in a matter of seconds.
Related Read: How To Configure Static IP Address In Linux And Unix