Configuring an Ethernet Port (`eth0`) with NetworkManager on Raspberry Pi

 

 

📂 Key Files Involved in NetworkManager Configuration

Below is a visual representation of how NetworkManager manages network configurations and how different files interact:

Output image

File/Command

Purpose

Managed By

/etc/NetworkManager/system-connections/

Stores network profiles

NetworkManager

/etc/NetworkManager/NetworkManager.conf

Controls NetworkManager behavior

NetworkManager

/etc/resolv.conf

Stores DNS settings (dynamically managed)

`systemd-resolved` or NetworkManager

/var/lib/NetworkManager/

Stores runtime network data

NetworkManager

nmcli connection show

Lists all configured network connections

NetworkManager CLI

nmcli device show

Shows detailed information about interfaces

NetworkManager CLI

🔧 Steps to Add an Ethernet Port (`eth0`) with a Static IP in NetworkManager

1️⃣ Check Available Network Interfaces

 

nmcli device status

 

2️⃣ Add a New Ethernet Connection

 

sudo nmcli con add type ethernet ifname eth0 con-name "MyEthernet" ipv4.addresses 192.168.100.51/24 ipv4.gateway 192.168.100.1 ipv4.dns "192.168.100.1" ipv4.method manual

 

This command creates a new NetworkManager connection profile and stores it in:

/etc/NetworkManager/system-connections/MyEthernet.nmconnection

 

3️⃣ Activate the Connection

 

sudo nmcli connection up "MyEthernet"

ip a show eth0

nmcli device status

 

4️⃣ Set Ethernet to Auto-Connect on Boot

 

sudo nmcli connection modify "MyEthernet" connection.autoconnect yes

 

Alternatives:

Command

Effect

Persistent?

Managed By

ip addr add

Temporarily assigns an IP

No (resets on reboot)

Linux Kernel

nmcli connection modify

Configures a persistent static IP

Yes (applies on reboot)

NetworkManager

Editing /etc/NetworkManager/system-connections/

Manually sets a static IP

Yes (if modified correctly)

NetworkManag

 

5️⃣ Verify the Configuration

 

nmcli connection show "MyEthernet"

ping -c 3 192.168.100.1

 

🛠️ Troubleshooting

Ethernet Shows as 'Unmanaged'?

 

sudo nmcli device set eth0 managed yes

sudo systemctl restart NetworkManager

 

Check Network Logs

 

journalctl -u NetworkManager --no-pager | tail -n 20

 

🚀 Final Check

Run the following commands after reboot:

 

sudo reboot

ip a show eth0

ip route

nmcli device status

ping -c 3 192.168.100.1

 

 

✅ Summary

Step

Command

Check interfaces

nmcli device status

Add Ethernet port

sudo nmcli con add type ethernet ifname eth0 con-name "MyEthernet" ipv4.addresses 192.168.100.51/24 ipv4.gateway 192.168.100.1 ipv4.dns "192.168.100.1" ipv4.method manual

Bring up connection

sudo nmcli connection up "MyEthernet"

Enable auto-connect

sudo nmcli connection modify "MyEthernet" connection.autoconnect yes

Verify settings

nmcli connection show "MyEthernet"

Check connection

ip a show eth0 & ping -c 3 192.168.100.1