Skip to Content

3 commands to Find MAC Address In Linux

How to list MAC address on Linux is a commonly asked question during a Linux job interview. Here are some methods to get the MAC address. These commands are safe to run without changing anything.

The following commands can get you the MAC address of your network interface in Linux.

  • ifconfig -a
  • ifconfig eth0
  • ip link show
  • ip -o link show eth0
  • ip -o link show |cut -d ‘ ‘ -f 2,20
  • cat /sys/class/net/*/address

 

I usually ask some basic Linux command questions at the beginning when I am doing interviews. Basic Linux commands provide insight into a candidate’s familiarity with the operating system and their ability to navigate and manage it effectively. 

Asking about commands like listing MAC addresses, manipulating files, managing processes, or network configuration can reveal the depth of a candidate’s Linux expertise. This approach can help in assessing both foundational knowledge and problem-solving skills in a Linux environment.

Procedures to find MAC address in Linux

  • Open the terminal application.
  • Type ifconfig -a or ip link show or cat /sys/class/net/*/address command
  • Press Enter to run the command.
  • The output will display the MAC address for all the network interfaces in Linux.

 

This article is part of the following series.

 

What is MAC address?

From Wikipedia, A MAC address is the unique identifier that is assigned by the manufacturer to a piece of network hardware (like a wireless card or an ethernet card). 

I think of it like a permanent, hardware-based identity for my device’s network interface card (NIC).

The MAC address consists of six sets of two characters, each separated by a colon. 00:1B:44:11:3A:B7 is an example of a MAC address. The MAC address is usually printed on the card itself. The MAC address can also be found in the BIOS of the computer or device.

A MAC address can be used to uniquely identify a device on a network. This allows for better security and more efficient networking. MAC addresses are usually assigned by the manufacturer of the network adapter. However, it is possible to change the MAC address of a device.

Related: Step by Step to troubleshoot a network issue in Linux

Find MAC address with ifconfig command in Linux

The best Linux command to find MAC address is using ifconfig command.  All we need is to open the terminal then type ifconfig -a in the prompt. The number next to ether is the MAC address. This command will list MAC address, IP address, MTU size and other information about a network interface.

# ifconfig -a

ens1f0: flags=4163 mtu 1500
inet 10.124.202.230 netmask 255.255.255.128 broadcast 10.124.202.255
ether 70:ca:9b:ce:67:ae txqueuelen 1000 (Ethernet)
RX packets 12187970 bytes 7390885300 (6.8 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16813496 bytes 16253942714 (15.1 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xb1960000-b197ffff

By default, the ifconfig command will display information for all the network interfaces on the Linux system.

If you receive a message “ifconfig command not found” when you try to use it, you can run the following command to install it.

On Debian based distros:
# apt update
# apt install net-tools

On Red Hat based distros:
# dnf install net-tools

Check this post to get more info about how to fix ifconfig command not found

 

Related: Solving a Networking Issue on Linux in 20 minutes

Find MAC address for a specific interface with ifconfig command in Linux

You can append the name of the interface to the end of the command (e.g. “ifconfig eth0”) to view the MAC address about a specific interface.

So if you want to display information only for specific device like eth0, you can use this command ifconfig eth0.

$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.254.222.37 netmask 255.255.254.0 broadcast 10.254.223.255
ether fa:16:3e:18:3a:76 txqueuelen 1000 (Ethernet)
RX packets 94405374 bytes 5781082518 (5.3 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 23249315 bytes 1034177108 (986.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

The ifconfig command can be used to configure a network interface. The basic syntax for the ifconfig command is: ifconfig interface ip address netmask BROADCAST_ADDRESS

This will set the IP address, netmask and gateway for the specified network interface.You can also use the ifconfig command to enable or disable a network interface. The basic syntax for this is: ifconfig interface up or down

The “ifconfig” command is a command-line utility that is used to display information about your network interfaces. This command is available on most Unix-like operating systems, including Linux and macOS. We can also use ifconfig command to troubleshoot network issues.

Related: 10 Linux Interview Questions about networking You Need to Know

Find MAC address with ip link show command in Linux

Another way to find MAC address in Linux is using “ip link show” command.  The number next to link/ether is the MAC address. This command will list the interface status, MAC address, MTU size, etc.

# ip link show

1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens1f0: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 70:ca:9b:ce:67:ae brd ff:ff:ff:ff:ff:ff

To view information about a specific network link, you can use the “ip link show” command followed by the name of the network interface. For example, if you want to view information about the eth0 interface, you can run the following command: “ip link show eth0”.

The following command lists the interface names on the left and the associated MAC addresses on the right.

ip -o link show |cut -d ‘ ‘ -f 2,20
lo: 00:00:00:00:00:00
eth0: 02:01:e4:a2:3a:31

Related article: 3 ip commands you need to know about Linux networking

Find MAC address from /sys in Linux

If you want to get MAC information about the network interface, you can use this command cat /sys/class/net/*/address.

sysfs is a virtual filesystem in Linux that provides a way to access and manipulate the parameters of devices. sysfs is mounted on /sys when your system boots. 

The sysfs filesystem contains a directory for each device on your system. The name of the directory is the name of the device. The contents of the directory depend on the type of device.If you want to get information about the network interfaces on your system, you can cd to /sys/class/net/. 

# cat /sys/class/net/ens1f0/address
70:ca:9b:ce:67:ae

$ cat /sys/class/net/*/address
02:01:e4:a2:3a:31
00:00:00:00:00:00

Difference between MAC address and IP address

MAC addresses are physical addresses, while ip addresses are logical addresses. MAC addresses are used to identify devices on a network, while ip addresses are used to identify the location of devices on a network.

The two most common types of ip addresses are IPv4 and IPv6. IPv4 is a 32-bit address that can support up to 4.3 billion unique addresses. IPv6 is a 128-bit address that can support up to 3.4×1038 unique addresses.

MAC addresses are assigned by the manufacturer of the device. Ip addresses can be assigned by the user or by the network administrator.

 

Related Post:

3 Essential Commands to Find Your IP Address in Linux

4 Ways to Check Network Status on Linux

4 Ways to check Ubuntu Version

Daniel Lim

Saturday 2nd of December 2023

Recently I got a new command ipcal. It is a simple tool used to calculate IP subnetting.

Suppose you have the IP address 192.168.1.10 and you want to understand its subnetting details with a subnet mask of 255.255.255.0 (or /24). You would use ipcalc as follows:

ipcalc 192.168.1.10/24

The output of this command would typically provide details like:

Address: 192.168.1.10 11000000.10101000.00000001.00001010 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111.00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000.11111111 => Network: 192.168.1.0/24 11000000.10101000.00000001.00000000 HostMin: 192.168.1.1 HostMax: 192.168.1.254 Broadcast: 192.168.1.255 Hosts/Net: 254 Class C, Private Internet

David Cao

Sunday 3rd of December 2023

Thanks a lot for sharing Daniel.

Dan Gli

Monday 6th of November 2023

I remember struggling with connectivity issues in my early days, and these commands saved a lot of time and frustration.

This article is a must-read for anyone looking to enhance their network administration skills in a Linux environment.

Daxie

Thursday 24th of August 2023

cat /sys/class/net/*/address is pretty cool. I got all the MAC addresses this way.

Meaga

Wednesday 23rd of August 2023

It is very helpful. Thanks.