
If your Fedora 44 machine keeps changing its IP address after every reboot or DHCP lease renewal, you already know how frustrating that gets. SSH sessions drop, internal services lose contact with each other, and monitoring dashboards point to addresses that no longer exist. The solution is straightforward: configure a static IP address on Fedora 44 so the machine always owns the same address on your network. In this Linux server tutorial, you will learn three reliable methods to do exactly that using nmcli, nmtui, and direct NetworkManager keyfiles, with a full explanation of what every command does and why it matters.
What Is a Static IP Address and Why Does Your Fedora 44 System Need One
A DHCP-assigned IP address is temporary by design. Your router hands out addresses from a pool, assigns a lease time, and when that lease expires, your machine can end up with a completely different address. For a laptop browsing the web, that is fine. For a server running SSH, a web application, a Docker container, or an internal DNS service, a floating IP creates serious operational problems.
A static IP address is written directly into the NetworkManager connection profile on your Fedora 44 system. It does not depend on a router’s DHCP server. The machine keeps that address permanently, even after reboots, power cuts, or router replacements.
When you actually need a static IP on Fedora 44:
- Running an SSH server and connecting from a fixed hostname or bookmark
- Hosting a web application, API server, or reverse proxy like Nginx or Caddy
- Configuring FreeIPA, Samba file sharing, or NFS mounts
- Setting up a Kubernetes node where control plane components depend on fixed node IPs
- Running Pi-hole, Unbound, or any local DNS resolver on the machine
- Using the system as a Docker host where container port mappings need a predictable host address
- Firewall rules that allow or deny traffic based on source or destination IP
Fedora 44 uses NetworkManager as its single authoritative network stack. Whether you configure the network through a GUI, a terminal command, or by editing a file, every change eventually gets written to a .nmconnection keyfile stored at /etc/NetworkManager/system-connections/. Knowing this architecture upfront saves a lot of confusion when multiple methods appear to do the same thing.
Prerequisites
Before running a single command, gather everything you need. Attempting static IP configuration without these details in hand causes partial configurations that are hard to undo cleanly.
System requirements:
- Fedora 44 installed (Workstation or Server edition)
- A user account with
sudoprivileges - Physical or serial console access as a fallback (critical if configuring over SSH)
Network information to collect before starting:
- The static IP address you want to assign (example:
192.168.1.100) - The subnet mask in CIDR notation (example:
/24for255.255.255.0) - Your network’s default gateway (usually your router’s IP, example:
192.168.1.1) - At least one DNS server IP (example:
8.8.8.8for Google,1.1.1.1for Cloudflare) - The exact name of your network interface on Fedora 44
Run these two commands first to gather your current network state:
ip addr show
nmcli connection show
The ip addr show command lists every network interface and its currently assigned address. The nmcli connection show command lists all NetworkManager connection profiles by their exact names. You need that exact profile name for the configuration steps below.
Why collect this first? Fedora 44’s updated Anaconda installer only creates NetworkManager profiles for network interfaces that were explicitly configured during installation. On a fresh install, you may have fewer auto-generated profiles than expected on older Fedora releases. Knowing what profiles exist prevents you from accidentally modifying the wrong connection.
Step 1: Identify Your Network Interface Name
Fedora 44 uses Predictable Network Interface Names, a systemd convention that names interfaces based on their physical location or firmware slot rather than a simple sequential number. This means you will almost never see eth0 on a real Fedora 44 system.
Run the following command:
nmcli device status
Example output:
DEVICE TYPE STATE CONNECTION
enp3s0 ethernet connected System enp3s0
lo loopback unmanaged --
Your interface name is in the DEVICE column. In this example it is enp3s0. Your system may show ens192, enp2s0, or something similar depending on your hardware.
Also run:
nmcli connection show
Example output:
NAME UUID TYPE DEVICE
System enp3s0 a1b2c3d4-e5f6-7890-abcd-ef1234567890 ethernet enp3s0
Note the NAME field exactly as shown, including spaces. You need to use this precise name in the configuration commands. A mismatch in the name causes nmcli to return a “no such connection” error and nothing gets configured.
Step 2: Configure Static IP Address on Fedora 44 Using nmcli (Recommended Method)
nmcli is the command-line front-end for NetworkManager. It is the recommended method for servers, headless systems, and anyone comfortable in a terminal. Every change made through nmcli is automatically written to the appropriate keyfile on disk and persists across reboots without any extra steps.
Step 2a: Set the IP Address and Subnet
sudo nmcli connection modify "System enp3s0" \
ipv4.method manual \
ipv4.addresses "192.168.1.100/24"
What this does: The ipv4.method manual flag tells NetworkManager to stop sending DHCP discovery packets for this connection. The ipv4.addresses value sets the IP address and subnet in a single CIDR-formatted string.
Why ipv4.method manual is critical: If you set an IP address without changing the method to manual, NetworkManager will still run a DHCP client in the background. On the next boot or connection restart, the DHCP-assigned address will overwrite your static configuration. The method flag is not optional.
Step 2b: Set the Default Gateway
sudo nmcli connection modify "System enp3s0" \
ipv4.gateway "192.168.1.1"
What this does: This sets the default gateway, which is the IP of your router. All traffic destined for addresses outside your local subnet gets forwarded to this address.
Why you must set this separately and correctly: A wrong or missing gateway means the machine can communicate with other devices on its local network segment, but cannot reach the internet or any other subnet. SSH from an external network will time out silently.
Step 2c: Set DNS Servers
sudo nmcli connection modify "System enp3s0" \
ipv4.dns "8.8.8.8 1.1.1.1"
What this does: This sets the DNS resolver addresses that the system will use for domain name lookups.
Why DNS breaks when you switch to a static IP: DHCP does two things simultaneously: it assigns an IP address AND it pushes DNS server addresses to the client. When you set ipv4.method manual, you disable the DHCP client entirely. Without an explicit DNS entry, the system has no nameservers configured, and every domain name lookup will fail. You can ping 8.8.8.8 by IP but ping google.com returns “Name or service not known.”
Step 2d: Prevent Router DNS Override
sudo nmcli connection modify "System enp3s0" \
ipv4.ignore-auto-dns yes
Why this matters in mixed environments: Some routers advertise DNS settings through protocols other than DHCP. On networks where you have no control over the router, setting ipv4.ignore-auto-dns yes ensures your declared DNS servers are always the ones used. On a home lab or production server, you never want a router silently redirecting your DNS traffic.
Step 2e: Apply the Changes
sudo nmcli connection down "System enp3s0"
sudo nmcli connection up "System enp3s0"
What this does: These two commands deactivate the existing connection and reactivate it using the updated profile.
Why not just restart NetworkManager? Running sudo systemctl restart NetworkManager drops every active network connection on the system simultaneously. On a multi-homed server or any machine you are managing over SSH, that means your SSH session dies and you lose remote access. Cycling only the specific connection is a surgical change that leaves every other interface untouched. This is the correct production habit.
Step 3: Verify the Static IP Configuration
After applying changes, always verify before declaring success. Use this exact three-layer test sequence:
ip addr show enp3s0
ip route show
cat /etc/resolv.conf
Expected output after ip addr show enp3s0:
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
inet 192.168.1.100/24 brd 192.168.1.255 scope global noprefixroute enp3s0
You should see your static IP (192.168.1.100/24) listed under inet. If you still see a 169.254.x.x address, the connection failed to come up correctly.
Run the three-tier ping test:
ping -c 4 192.168.1.1 # Test gateway reachability
ping -c 4 8.8.8.8 # Test internet connectivity by IP
ping -c 4 google.com # Test DNS resolution
Why test in this specific order: Each ping isolates a different layer of the network stack. If the first ping fails, the problem is local (wrong gateway, cable, VLAN). If the second fails but the first succeeds, the problem is routing. If the third fails but the second succeeds, the problem is DNS configuration. Going straight to ping google.com makes it impossible to tell which layer is broken.
Also confirm the configuration is written to disk:
sudo cat /etc/NetworkManager/system-connections/"System enp3s0.nmconnection"
If the file contains method=manual and your IP address, the configuration is persisted and will survive a reboot.
Step 4: Configure Static IP on Fedora 44 Using nmtui (Interactive Terminal Method)
nmtui is a menu-driven text interface for NetworkManager. It works in any terminal, including minimal SSH sessions and serial consoles. Use this method when you want a guided experience without memorizing nmcli syntax.
Launch the tool:
sudo nmtui
Navigate the menu:
- Select “Edit a connection” using arrow keys and press Enter
- Highlight your interface (for example,
enp3s0) and press Enter - Under IPv4 Configuration, change the method from Automatic to Manual
- Move to the Addresses field and enter:
192.168.1.100/24 - In the Gateway field, enter:
192.168.1.1 - In the DNS servers field, enter:
8.8.8.8, press Enter, add1.1.1.1as a second entry - Tab to OK and press Enter
Why you must include two DNS entries: If your primary DNS server is unavailable due to an outage, the resolver falls back to the secondary automatically. A single DNS entry means any DNS disruption takes down all name resolution on the machine, and application failures from that point look completely unrelated to DNS.
Activate the changes from the main nmtui menu:
- Go back to the main menu and select “Activate a connection”
- Select your connection and press Enter to deactivate it (the asterisk disappears)
- Press Enter again to reactivate it
Why deactivate first: Selecting activate on an already-active connection does not force a full profile reload in all cases. A full deactivate-then-activate cycle guarantees NetworkManager reads the updated profile from disk.
Exit nmtui and verify:
ip addr show enp3s0
Step 5: Configure Static IP via NetworkManager Keyfile (Advanced and Automation-Ready)
This method skips all interactive tools and writes the configuration file directly. It is ideal for Ansible playbooks, Kickstart automation, shell scripts, and any scenario where you need repeatable, version-controlled network configuration.
Fedora 44 stores all NetworkManager connection profiles as keyfiles at /etc/NetworkManager/system-connections/. Each file ends in .nmconnection.
Step 5a: List Existing Profiles
ls -la /etc/NetworkManager/system-connections/
Identify the file that corresponds to your interface. On Fedora 44, the file is typically named after the connection profile, for example System enp3s0.nmconnection.
Step 5b: Edit the Keyfile
sudo nano /etc/NetworkManager/system-connections/"System enp3s0.nmconnection"
Replace the contents of the [ipv4] section with the following:
[connection]
id=System enp3s0
type=802-3-ethernet
interface-name=enp3s0
autoconnect=true
[ipv4]
method=manual
addresses=192.168.1.100/24
gateway=192.168.1.1
dns=8.8.8.8;1.1.1.1;
[ipv6]
method=auto
Why autoconnect=true must be present: Without it, NetworkManager will not bring up this connection at boot. The machine will boot with no IP address on that interface, and every network-dependent service will fail to start. This is one of the most common mistakes when editing keyfiles by hand.
Why DNS values use semicolons: The NetworkManager keyfile format requires DNS entries to be separated by semicolons, not spaces or commas. Using the wrong delimiter causes the DNS field to be parsed incorrectly, and name resolution will not work even though the keyfile looks correct at first glance.
Step 5c: Set Correct File Permissions
sudo chmod 600 /etc/NetworkManager/system-connections/"System enp3s0.nmconnection"
sudo chown root:root /etc/NetworkManager/system-connections/"System enp3s0.nmconnection"
Why permissions are strictly enforced: NetworkManager silently ignores any .nmconnection file that has permissions looser than 600. If the file is readable by group or by others, NetworkManager treats it as insecure and skips it entirely. The machine falls back to DHCP or brings up no connection, and there is no error message in the terminal. Check permissions first when static IP configuration appears to have no effect after a reboot.
Step 5d: Reload and Apply
sudo nmcli connection reload
sudo nmcli connection up "System enp3s0"
Why nmcli connection reload is required: Editing the keyfile on disk does not automatically update NetworkManager’s in-memory state. Without the reload command, NetworkManager continues operating from its cached version of the old profile, and connection up applies the old DHCP configuration, not your new static settings.
Step 6: Configure Static IP Using GNOME Settings (Fedora 44 Workstation)
For Fedora 44 Workstation users running GNOME 50, the graphical Settings panel provides a straightforward way to configure a static IP without opening a terminal.
- Open Settings from the app grid or the system menu
- Click Network in the left sidebar
- In the Wired section, click the gear icon next to your active connection
- Click the IPv4 tab
- Change the method from Automatic (DHCP) to Manual
- In the Addresses section, enter your IP address, Netmask, and Gateway
- In the DNS field, enter
8.8.8.8, 1.1.1.1(comma-separated in GNOME) - Click Apply in the top-right corner of the window
Why clicking Apply is not the final step: The GNOME settings panel writes the configuration to the NetworkManager keyfile, but the currently active DHCP lease is still loaded in memory. You must toggle the connection off and back on using the switch in the Network settings panel for the static IP to take effect immediately.
Toggle the connection off and then on. Open a terminal and confirm:
ip addr show
Your static IP should now be visible on the interface.
Troubleshooting: Static IP Address on Fedora 44 Setup Issues
Even with correct commands, configuration problems appear. Here are the five most common failures seen in production Fedora environments and how to fix each one.
Problem 1: IP address reverts to DHCP after reboot
The ipv4.method field was never set to manual. Verify with:
nmcli connection show "System enp3s0" | grep ipv4.method
If the output shows ipv4.method: auto, run:
sudo nmcli connection modify "System enp3s0" ipv4.method manual
sudo nmcli connection down "System enp3s0" && sudo nmcli connection up "System enp3s0"
Problem 2: “No route to host” after configuring static IP
Your gateway address is wrong or missing. Check with:
ip route show
The output should include a line starting with default via followed by your router’s IP. If it is missing or wrong, correct the gateway:
sudo nmcli connection modify "System enp3s0" ipv4.gateway "192.168.1.1"
sudo nmcli connection up "System enp3s0"
Problem 3: DNS resolution fails (ping by IP works but ping by hostname fails)
DNS was not configured when DHCP was disabled. Add DNS now:
sudo nmcli connection modify "System enp3s0" ipv4.dns "8.8.8.8 1.1.1.1"
sudo nmcli connection up "System enp3s0"
Confirm the resolver is updated:
cat /etc/resolv.conf
The file should list nameserver 8.8.8.8 and nameserver 1.1.1.1.
Problem 4: NetworkManager ignores the keyfile entirely
File permissions are too open. Check with:
ls -la /etc/NetworkManager/system-connections/
If the permissions are not -rw------- (600), fix them:
sudo chmod 600 /etc/NetworkManager/system-connections/"System enp3s0.nmconnection"
sudo nmcli connection reload
sudo nmcli connection up "System enp3s0"
Problem 5: nmcli returns “Error: no connection with name or UUID”
You are using the wrong connection profile name. Run:
nmcli connection show
Copy the exact name from the NAME column, including any spaces, and use that name in your command. Wrap it in quotes if it contains spaces.
Persisting the Static IP Across Reboots
After completing any of the three configuration methods above, test persistence by rebooting:
sudo reboot
After the system comes back online, reconnect and verify:
ip addr show enp3s0
ip route show
ping -c 2 google.com
Three conditions confirm a successful permanent static IP configuration:
- The static IP (
192.168.1.100) is assigned to the interface, not a169.254.x.xlink-local address - The default route shows your gateway (
default via 192.168.1.1) - DNS resolves domain names correctly
If any of these three checks fail after a reboot but passed before the reboot, check autoconnect=true in the connection profile and verify file permissions are set to 600 on the keyfile.
For a deeper diagnostic of what NetworkManager did during boot, check the journal:
sudo journalctl -u NetworkManager -b -n 50
The -b flag limits output to the current boot session. Scroll through for any lines containing WARN or ERROR related to your connection name.
Congratulations! You have successfully set up a static IP address. Thanks for using this tutorial to set a static IP address on Fedora 44 Linux system. For additional help or useful information, we recommend you check the official Fedora website.