Skip to main content
AI
  • Get started with AI

    • Red Hat AI

      Accelerate the development and deployment of enterprise AI solutions.

    • AI learning hub

      Explore learning materials and tools, organized by task.

    • AI interactive demos

      Click through scenarios with Red Hat AI, including training LLMs and more.

    • AI/ML learning paths

      Expand your Red Hat OpenShift AI knowledge using these learning resources.

    • AI quickstarts

      Focused AI use cases designed for fast deployment on Red Hat AI platforms.

    • No-cost AI training

      Foundational Red Hat AI training.

  • Featured resources

    • Red Hat OpenShift AI
    • Open source AI for developers
    • AI product application development
    • Open source-powered AI/ML for hybrid cloud
    • AI and Node.js cheat sheet

Red Hat AI Factory with NVIDIA

Red Hat AI Factory with NVIDIA is a co-engineered, enterprise-grade AI solution for building, deploying, and managing AI at scale across hybrid cloud environments.

Learn
  • Self-guided

    • Documentation

      Find answers, get step-by-step guidance, and learn how to use Red Hat products.

    • Learning paths

      Explore curated walkthroughs for common development tasks.

    • Guided learning

      Receive custom learning paths powered by our AI assistant.

    • See all learning
  • Hands-on

    • Developer Sandbox

      Spin up Red Hat's products and technologies without setup or configuration.

    • Interactive labs

      Learn by doing in these hands-on, browser-based experiences.

    • Interactive demos

      Click through product features in these guided tours.

  • Browse by topic

    • AI/ML
    • Automation
    • Java
    • Kubernetes
    • Linux
    • See all topics
  • Training & certifications

    • Courses and exams
    • Certifications
    • Skills assessments
    • Red Hat Academy
    • Learning subscription
    • Explore training
Build
  • Get started

    • Red Hat build of Podman Desktop

      A downloadable, local development hub to experiment with our products and builds.

    • Developer Sandbox

      Spin up Red Hat's products and technologies without setup or configuration.

  • Download products

    • Red Hat Enterprise Linux
    • Red Hat AI
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products
  • Featured

    • Red Hat build of OpenJDK
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat Developer Toolset
  • References

    • E-books
    • Documentation
    • Cheat sheets
    • Architecture center
Community
  • Get involved

    • Events
    • Live AI events
    • Red Hat Summit
    • Red Hat Accelerators
    • Community discussions
  • Follow along

    • Articles & blogs
    • Developer newsletter
    • Videos
    • Github
  • Get help

    • Customer service
    • Customer support
    • Regional contacts
    • Find a partner

Join the Red Hat Developer program

Download Red Hat products and project builds, access support documentation, learning content, and more.

ConsoleDocsSupport Search
New For you

Recommended

We'll recommend resources you may like as you browse. Try these suggestions for now.

  • Product downloads
  • Cheat sheets
  • Red Hat Developer learning portal
  • Developer blog
  • E-books
  • Developer Sandbox
Log in

Get more with a Red Hat Developer account

  • Product downloads
  • Console access
  • Event registration
  • Training & trials
Explore more account benefitsLog in or register

A subscription may be required for some services.

Contact us

Using NetworkManager to permanently set an interface administratively down

Permanently setting network interface state with NetworkManager and nmcli

June 15, 2026
D. Greg Scott
Related topics:
Network automationAutomationLinux
Related products:
Red Hat Enterprise Linux

    This article demonstrates the legacy way and a new way to permanently set a network interface administratively down with NetworkManager and nmcli commands.

    Since the very first NetworkManager announcement in 2004 (figure 1), a key property of NetworkManager has been the ability to set all managed interfaces that sense carrier to up. This makes sense with desktops that need to juggle Wi-Fi and wired connections. But sometimes, especially with servers and appliances, we want interfaces to always stay down across bootstraps, even if they sense carrier. Maybe an interface is unused and we want to make sure nothing bad happens if somebody mistakenly connects a cable to it. Or maybe it's part of a manual failover design and needs to be down until somebody sets it to up.

    Screenshot of the original NetworkManager announcement in 2004.
    Figure 1: Screenshot of the original NetworkManager announcement in 2004.

    We can issue ip link set {interface} down, but the only way to keep it down permanently is to tell NetworkManager to not manage it. Otherwise, NetworkManager brings it back up at the next restart. Prior to NetworkManager 1.57 and a backport to 1.56.1, this meant setting up a special configuration file, which is a hassle with appliances and complicates automated deployments. NetworkManager 1.57 introduced a way to do this without managing a special .conf file. This new capability first appeared in a backported Fedora 44 update, and then in Fedora 45, Red Hat Enterprise Linux (RHEL) versions 9.9 and 10.3.

    Old and new ways to do it

    NetworkManager introduced an abstract concept called "connections", and provided nmcli commands to associate 0 or 1 interfaces with a connection. We can set an interface to down and disassociate it from any connection, but this does not set the interface down permanently.

    Use this nmcli command to associate a NetworkManager connection named MyConnection with an interface named enp5s4:

    nmcli connection modify MyConnection connection.interface-name enp5s4

    Use this ip command to immediately set interface named enp5s4 to down:

    ip link set enp5s4 down

    Use this nmcli command to immediately disconnect interface enp5s4 from any NetworkManager connection:

    nmcli device disconnect enp5s4

    To make sure the NetworkManager connection named MyConnection stays disconnected from any interfaces:

    nmcli connection modify MyConnection connection.autoconnect no

    But at the next bootstrap, NetworkManager still sets all interfaces that sense carrier to up, whether or not they are associated with NetworkManager connections. The only way to keep an interface down across bootstraps is to tell NetworkManager to not manage it.

    The old way to persistently set an interface state

    With NetworkManager 1.56 and earlier, prior to RHEL 9.9, RHEL 10.3, and a June 2026 Fedora 44 update, in order to set an interface named enp5s4 permanently down, you had to create a special configuration file.

    For example, a file /etc/NetworkManager/conf.d/99-unmanage-enp5s4.conf can tell NetworkManager to not manage the enp5s4 interface:

    # cat /etc/NetworkManager/conf.d/99-unmanage-enp5s4.conf
    [device-enp5s4]
    match-device=interface-name:enp5s4
    manage=0

    The ip command can immediately set the interface to down:

    ip link set enp5s4 down

    Because NetworkManager is not managing the interface, that state becomes permanent, even across reboots. To set it to up again, you can do so manually with the ip command:

    ip link set enp5s4 up

    The new way to set an interface state

    With NetworkManager 1.57 and newer, starting with Fedora 45, RHEL 9.9, and RHEL 10.3 (and backported to 1.56.1 in a Fedora 44 update), you can use nmcli to set an interface's state permanently.

    To set an interface named enp5s4 permanently down:

    nmcli device set enp5s4 managed --permanent down

    This immediately sets enp5s4 to the down state, similar to the ip link set enp5s4 down command. It keeps the interface unmanaged and in a down state across reboots.

    If you only want to keep the interface named enp5s4 permanently unmanaged without immediately setting it to down:

    nmcli device set enp5s4 managed --permanent no

    Note that if you've already set --permanent down in a previous command, then you don't need --permanent no in this one.

    To revert this change, you can use the same command with one of these arguments instead of no:

    • yes: Force the device to be managed by NetworkManager.
    • up: Force the device to be managed by NetworkManager, and immediately set its state to up (like ip link set enp5s4 up).
    • reset: Do not force the device to any value of NetworkManager-managed. This is useful if you previously used managed --permanent yes/up/no/down and you want to clear it, so more general configuration rules may apply.

    For example:

    nmcli device set enp5s4 managed --permanent reset

    Example: The old way

    With NetworkManager 1.56 and earlier, prior to RHEL 9.9, RHEL 10.3, and a May, 2026 Fedora 44 update, set up a custom configuration file to tell NetworkManager this device is unmanaged and then either reboot or restart NetworkManager:

    # cat /etc/NetworkManager/conf.d/99-unmanage-enp5s4.conf[device-enp5s4]
    match-device=interface-name:enp5s4
    manage=0
    #
    # systemctl restart NetworkManager

    Now that NetworkManager no longer manages it, manage it yourself with the ip command.

    # ip link show enp5s4
    4: enp5s4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:30:18:c3:cb:1e brd ff:ff:ff:ff:ff:ff
        altname enx003018c3cb1e
    # ip link set enp5s4 down
    # ip link show enp5s4
    4: enp5s4: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
        link/ether 00:30:18:c3:cb:1e brd ff:ff:ff:ff:ff:ff
        altname enx003018c3cb1e
    #
    # reboot
    #
    login as: root
    root@10.10.10.74's password:
    Last login: Mon Dec 22 10:00:31 2025 from 10.10.10.104
    # ip link show dev enp5s4
    4: enp5s4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 00:30:18:c3:cb:1e brd ff:ff:ff:ff:ff:ff
        altname enx003018c3cb1e

    Example: The new way

    With NetworkManager 1.57 and newer, on Fedora 45 and newer, RHEL 9.9 and newer, and RHEL 10.3 and newer (and backported to 1.56.1 in a Fedora 44 update), we no longer need a custom configuration file. Use nmcli to set it permanently down and unmanaged:

    # ip link show enp5s4
    4: enp5s4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:30:18:c3:cb:1e brd ff:ff:ff:ff:ff:ff
        altname enx003018c3cb1e
    # nmcli device set enp5s4 managed --permanent down
    # ip link show enp5s4
    4: enp5s4: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
        link/ether 00:30:18:c3:cb:1e brd ff:ff:ff:ff:ff:ff
        altname enx003018c3cb1e
    # reboot

    Look at /var/log/messages to see messages similar to this:

    May  6 12:51:13 example NetworkManager[1089]: <info>  [1778089873.6194] config: signal: SET_VALUES,values,values-intern (/etc/NetworkManager/NetworkManager.conf, /usr/lib/NetworkManager/conf.d/22-wifi-mac-addr.conf, /var/lib/NetworkManager/NetworkManager-intern.conf)
    May  6 12:51:13 example NetworkManager[1089]: <info>  [1778089873.6203] device (enp5s4): state change: disconnected -> unmanaged (reason 'unmanaged-user-explicit', managed-type: 'removed')
    May  6 12:51:13 example kernel: r8169 0000:05:04.0 enp5s4: Link is Down
    May  6 12:51:13 example avahi-daemon[1092]: Interface enp5s4.IPv6 no longer relevant for mDNS.
    May  6 12:51:13 example avahi-daemon[1092]: Leaving mDNS multicast group on interface enp5s4.IPv6 with address fe80::230:18ff:fec3:cb1e.
    May  6 12:51:13 example avahi-daemon[1092]: Withdrawing address record for fe80::230:18ff:fec3:cb1e on enp5s4.
    May  6 12:51:13 example NetworkManager[1089]: <info>  [1778089873.6280] audit: op="device-managed" interface="enp5s4" ifindex=4 pid=1891 uid=0 result="success"
    
    Broadcast message from root@example on pts/0 (Wed 2026-05-06 12:41:15 CDT):
    
    The system will reboot now!

    After the reboot, the device is still administratively down and unmanaged. Use nmcli to reset it back to managed and --permanent up.

    # ip link show enp5s4
    4: enp5s4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether 00:30:18:c3:cb:1e brd ff:ff:ff:ff:ff:ff
        altname enx003018c3cb1e
    # nmcli device set enp5s4 managed --permanent up
    # ip link show enp5s4
    4: enp5s4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
        link/ether 00:30:18:c3:cb:1e brd ff:ff:ff:ff:ff:ff
        altname enx003018c3cb1e
    # echo "wait a few seconds" ; sleep 6
    # ip link show enp5s4
    4: enp5s4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:30:18:c3:cb:1e brd ff:ff:ff:ff:ff:ff
        altname enx003018c3cb1e

    Look at /var/log/messages to see messages similar to this (note the three second delay before bringing the device up):

    May  6 12:47:13 example NetworkManager[1089]: <info>  [1778089633.9214] config: signal: SET_VALUES,values,values-intern (/etc/NetworkManager/NetworkManager.conf, /usr/lib/NetworkManager/conf.d/22-wifi-mac-addr.conf, /var/lib/NetworkManager/NetworkManager-intern.conf)
    May  6 12:47:13 example NetworkManager[1089]: <info>  [1778089633.9225] device (enp5s4): state change: unmanaged -> unavailable (reason 'user-requested', managed-type: 'external')
    May  6 12:47:13 example kernel: RTL8211B Gigabit Ethernet r8169-0-520:00: attached PHY driver (mii_bus:phy_addr=r8169-0-520:00, irq=MAC)
    May  6 12:47:13 example NetworkManager[1089]: <info>  [1778089633.9891] audit: op="device-managed" interface="enp5s4" ifindex=4 pid=1807 uid=0 result="success"
    May  6 12:47:13 example kernel: r8169 0000:05:04.0 enp5s4: Link is Down
    May  6 12:47:16 example kernel: r8169 0000:05:04.0 enp5s4: Link is Up - 1Gbps/Full - flow control off
    May  6 12:47:16 example NetworkManager[1089]: <info>  [1778089636.2671] device (enp5s4): carrier: link connected
    May  6 12:47:16 example NetworkManager[1089]: <info>  [1778089636.2695] device (enp5s4): state change: unavailable -> disconnected (reason 'carrier-changed', managed-type: 'assume')
    May  6 12:47:18 example avahi-daemon[1092]: Joining mDNS multicast group on interface enp5s4.IPv6 with address fe80::230:18ff:fec3:cb1e.
    May  6 12:47:18 example avahi-daemon[1092]: New relevant interface enp5s4.IPv6 for mDNS.
    May  6 12:47:18 example avahi-daemon[1092]: Registering new address record for fe80::230:18ff:fec3:cb1e on enp5s4.*.

    Conclusion

    With this new nmcli capability, you can "float" network interfaces between connections, leaving some up and others down as you see fit to manage manual failover scenarios. Take advantage of this new nmcli capability to modernize your networking setup.

    Related Posts

    • Introduction to Linux interfaces for virtual networking

    • What's new in network observability 1.11

    • Simplify transit router deployment in Open Virtual Network

    • 4 essential network automation use cases for everyone

    Recent Posts

    • A day in the life of an NVIDIA H100 on Red Hat OpenShift 5

    • Migrate BuildConfigs to builds for Red Hat OpenShift with one plug-in install

    • Run Red Hat Enterprise Linux CoreOS on NVIDIA BlueField DPUs

    • Agent harness engineering: Separating model capabilities from enforcement

    • What's new for developers in Red Hat Enterprise Linux 10.3 and 9.9

    What’s up next?

    Share graphics_Network automation with Ansible validated content

    Network automation with Ansible validated content cheat sheet

    Rohit Thakur
    Red Hat Developers logo

    Platforms

    • Red Hat AI
    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Build

    • Developer Sandbox
    • Developer tools
    • Interactive tutorials
    • API catalog

    Quicklinks

    • Learning resources
    • E-books
    • Cheat sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site status dashboard
    • Report a security problem

    Red Hat Developer

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit
    © 2026 Red Hat

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility
    Ask AI