What is the difference between the network interface name ethX
(e.g. eth1
) and enoX
(e.g. eno1
), given by ifconfig
or lshw
?
3 Answers
eth1
is the onboard Ethernet (wired) adapter on your Linux machine.
eno1
is your embedded NIC (onboard Network Interface Card). It is a regular physical network interface.
You can use this link as reference.
This is a way of representing the Ethernet names. If machine has already eth1
in its config file for the second adapter it will use eno1
rather than using eth2.
They both are same. Its just a name of config file. You can also change the name eno1
to eth2
by doing a simple Google search.
Here is the link for changing the same: Click
-
6
-
4Why is this the accepted answer? It's a bad copy and paste of other Stackoverflow answers and does not even give a good explanation. What is the difference between "onboard Ethernet (wired) adapter" and "embedded NIC (onboard Network Interface Card"? There is none. The statement "If machine has already eth1 in its config file for the second adapter it will use eno1 rather than using eth2" is just wrong! Why make things up?– thomasJun 17, 2021 at 23:15
The difference between eth0
and eno1
is the method/scheme the Linux kernel used to assign a name the Ethernet interface in question.
In the 1990s, Linux assigned the names of the form ethX
(where X
is a numeral) to Ethernet network interfaces.
However, on a machine with multiple network interfaces, an interface would not receive the same name consistently across reboots due to boot-time race conditions.
Consequently, a new naming scheme was introduced. Most commonly (at least in my experience), these names were of the form enpXsY
, where X
and Y
are numerals. These interface names were consistent across boots (provided no hardware was added, removed, or moved to a different slot between boots).
I suspect (but have not been able to confirm) that interface names of the form enoX
or ensY
are more likely to appear when the machine boots via UEFI (as opposed to booting via legacy BIOS).
Freedesktop.org says that as of Systemd v197:
The following different naming schemes for network interfaces are now supported by udev natively:
- Names incorporating Firmware/BIOS provided index numbers for on-board devices (example:
eno1
)- Names incorporating Firmware/BIOS provided PCI Express hotplug slot index numbers (example:
ens1
)- Names incorporating physical/geographical location of the connector of the hardware (example:
enp2s0
)- Names incorporating the interfaces's MAC address (example:
enx78e7d1ea46da
)- Classic, unpredictable kernel-native ethX naming (example:
eth0
)
You may also find additional information at these links:
https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
https://wiki.debian.org/NetworkInterfaceNames
https://en.wikipedia.org/wiki/Consistent_Network_Device_Naming
-
3
Consistent Network Device Naming
Red Hat Enterprise Linux 7 introduces a new network naming scheme as part of systemd (Also in Ubuntu 16x, 17x, 18x)
Onboard interfaces at firmware index numbers eno[1-N]
Then, eno1, eno2, etc, are embedded network interfaces (usually we can see them on HP Proliant servers, among others)