When the desktop network manager disappears
You SSH into a fresh Fedora Server installation to configure a static IP for a new application. The graphical network settings panel does not exist. You only have a terminal and a working internet connection that you need to replace with a fixed address, gateway, and DNS servers. You run sudo nmtui and see a blue menu with three options. You are not sure which path handles static routing, how to save your changes, or why the interface name in the menu does not match what ip addr shows.
How NetworkManager actually stores your settings
NetworkManager does not keep network configuration in a single monolithic file. It uses connection profiles. Each profile is a self-contained record that describes how a specific interface should behave. The profile contains the IP address, subnet mask, gateway, DNS servers, MTU, and whether the connection should activate automatically at boot. When you apply a profile, NetworkManager translates those settings into kernel commands, updates the routing table, and writes the configuration to disk.
The profiles live in /etc/NetworkManager/system-connections/. Each file is named after the connection profile, not the interface. This design lets you swap the same profile between different machines or apply different profiles to the same interface over time. nmtui is a terminal-based editor that reads those files, presents them in a navigable menu, and writes the changes back in the correct format. You do not need to remember the exact keyfile syntax or worry about indentation errors.
Run journalctl -xeu NetworkManager when you need to see what the daemon is actually doing. The x flag adds explanatory context to each log line and the e flag jumps to the end of the journal. Most administrators type this muscle-memory style when a connection fails to activate.
Configuring a connection with nmtui
Here is how to launch the interface and navigate the menu structure.
sudo nmtui
# Runs the text user interface with root privileges.
# NetworkManager requires elevated permissions to modify system connections.
# The tool will prompt for your password if sudo is not already cached.
The main menu presents three options. Select "Edit a connection" and press Enter. You will see a list of existing profiles. If your interface is not listed, NetworkManager has not created a profile for it yet. Select "Add" to create a new one. The tool will prompt for a profile name. Use a descriptive name like server-static instead of eth0. Interface names change when hardware changes or when predictable naming rules shift. Profile names stay constant.
Select your interface from the device dropdown. If the device shows as -- auto --, NetworkManager will apply the profile to whichever interface matches the hardware MAC address or driver. This is useful for laptops that move between Wi-Fi and Ethernet. For servers, pick the exact interface name to avoid accidental activation on the wrong port.
Navigate to IPv4 CONFIGURATION and switch from Automatic to Manual. Enter your IP address, prefix length, and gateway. The prefix length replaces the traditional subnet mask. A /24 prefix means 255.255.255.0. Move to DNS SERVERS and enter your primary and secondary resolvers. Press OK to save the profile. The tool writes the changes to /etc/NetworkManager/system-connections/ and returns to the main menu.
Select "Activate a connection" and choose your new profile. NetworkManager will bring the interface up, apply the routing table, and flush the old configuration. If the interface was already active, NetworkManager will restart it cleanly without dropping your SSH session, provided you have a fallback route or the connection is on a different interface.
Reboot before you debug. Half the time the symptom is gone.
Verify the network is actually working
Do not assume the settings applied just because nmtui did not throw an error. NetworkManager can save a profile successfully while the kernel refuses to apply it due to a routing conflict or a missing interface.
Here is how to check whether the interface has the correct address and route.
ip addr show dev eth0
# Displays the current IP configuration for the specified interface.
# Look for the inet line to confirm your static address is active.
# The scope global line confirms the address is routable outside the host.
Check the default route to ensure traffic leaves the system correctly.
ip route show default
# Prints the default gateway route.
# The via field must match the gateway you entered in nmtui.
# If multiple default routes exist, the metric value determines priority.
Verify DNS resolution matches your profile settings.
cat /etc/resolv.conf
# Shows the active DNS configuration.
# NetworkManager overwrites this file dynamically.
# The nameserver lines should match what you configured in the profile.
Run nmcli connection show to see the persistent profile state. The DEVICE column shows which interface the profile is currently bound to. The STATE column shows whether the connection is active, connecting, or unavailable. If the state says unavailable, the interface name in the profile does not match the actual hardware name.
Run journalctl -xeu NetworkManager first. Read the actual error before guessing.
Common pitfalls and what the error looks like
The most frequent failure is an interface name mismatch. Predictable network interface naming uses MAC addresses or PCI slots to generate names like enp3s0 or ens18. If your profile references eth0 but the system only has enp3s0, NetworkManager will refuse to activate the connection. You will see a message in the journal that looks like this:
NetworkManager[1234]: <warn> [1715628901.123] device (enp3s0): state change: unmanaged -> unavailable (reason 'connection-assumed', sys-iface-state: 'external')
NetworkManager[1234]: <info> [1715628901.456] connection-profile (server-static): activation: failed to connect to device 'eth0'
The fix is to edit the profile in nmtui, change the device selection from the specific name to -- auto --, or rename the profile to match the actual interface. Do not manually edit files in /usr/lib/NetworkManager/. Those files ship with the package and will be overwritten on the next update. Always edit profiles in /etc/NetworkManager/system-connections/.
Another common issue is IPv6 interference. Fedora enables IPv6 by default. If your network does not support IPv6, you will get a temporary fe80:: link-local address that can cause routing confusion. Switch IPv6 CONFIGURATION to Ignore in nmtui. This tells NetworkManager to skip IPv6 entirely for that profile.
DNS changes sometimes appear to fail because the resolver cache or a local stub resolver like systemd-resolved is holding onto old entries. Restart the resolver service after applying a new profile.
sudo systemctl restart systemd-resolved
# Clears the local DNS cache and forces a fresh lookup.
# systemd-resolved acts as a local DNS proxy on Fedora.
# Restarting it ensures the new nameservers take effect immediately.
If the boot menu is gone, GRUB rescue is your friend, not your enemy.
When to use nmtui versus other tools
Use nmtui when you need a guided interface to configure static IPs, DNS, or VPN settings without memorizing command flags. Use nmcli when you are scripting network changes, managing dozens of connections, or need to query connection state programmatically. Use the graphical nm-connection-editor when you are working on a desktop session and prefer clicking through tabs. Use manual keyfile editing in /etc/NetworkManager/system-connections/ when you need to add advanced settings that nmtui does not expose, such as custom routing rules or bond options. Stay on nmtui if you only deviate from the defaults occasionally and want a visual safety net.
Trust the package manager. Manual file edits drift, snapshots stay.