ifup Command in Linux with Examples

Learn the ifup command in Linux for configured interfaces, with ifquery checks, dry runs, manager alternatives, and error fixes.

PublishedAuthorJoshua JamesRead time9 minGuide typeLinux Commands

A network card can appear in ip link and still fail when an old runbook says to use ifup eth0. The ifup command in Linux only works when your system has an interface definition that its network stack understands, usually in /etc/network/interfaces or a distribution-specific compatibility layer. That makes ifup valuable for maintaining Debian-style servers, Alpine systems, openSUSE wicked setups, and legacy scripts, but it is not the universal replacement for NetworkManager, systemd-networkd, or the ip command.

Use ifup when the interface is already defined for an ifupdown-style manager. Use nmcli, networkctl, wicked, or ip link set when those tools own the interface instead. Keeping that boundary clear helps you bring a link up without fighting the active network manager.

Understand the ifup Command

ifup reads saved interface configuration and applies it. It is different from low-level commands such as ip link set eth0 up, which only changes the administrative link state and does not read your persistent address, route, DNS, bridge, VLAN, or hook-script configuration.

ifup Command Scope

The Debian ifup manual page defines ifup, ifdown, and ifquery as tools for configuring, deconfiguring, and parsing interface configuration. Debian’s implementation uses /etc/network/interfaces by default, keeps state under /run/network, and calls lower-level utilities such as ip to do the actual link and address work.

ToolBest FitExample Pattern
ifupBring up an interface already defined for ifupdown, ifupdown-ng, wicked compatibility, or older network scriptssudo ifup eth0
ifqueryCheck what ifup can see before changing an interfaceifquery -l
ipInspect or temporarily change link, address, route, and neighbor stateip -br link show
nmcliActivate a NetworkManager connection profilesudo nmcli connection up "Wired connection 1"
networkctlControl links managed by systemd-networkdsudo networkctl up eth0
wickedControl openSUSE wicked network configurationsudo wicked ifup eth0

Do not run multiple network managers against the same interface. If NetworkManager, systemd-networkd, wicked, or ifupdown all try to own one link, the interface can bounce, lose routes, or return confusing stale-state errors.

ifup Command Syntax

Common Debian-style syntax takes either -a for automatic interfaces or one or more configured interface names:

ifup [options] -a
ifup [options] interface_name [interface_name ...]

The related commands use the same configuration database:

ifdown [options] interface_name
ifquery [options] interface_name

The interfaces manual page documents the file format that Debian-style ifup reads. A minimal static interface stanza looks like this:

auto eth0
iface eth0 inet static
    address 192.0.2.10/24
    gateway 192.0.2.1

The 192.0.2.0/24 range is reserved for documentation examples. Replace the interface name, address, prefix, and gateway with values from your network.

ifup Command Quick Reference

TaskCommand PatternWhat It Does
List interfaces known to ifupdownifquery -lPrints interfaces marked for automatic startup in the active configuration.
Inspect one configured interfaceifquery eth0Shows parsed options for the named interface.
Bring up one interfacesudo ifup eth0Applies the saved configuration for eth0.
Bring up automatic interfacessudo ifup -aProcesses interfaces marked with auto.
Bring up hotplug class interfacessudo ifup --allow=hotplug eth0Acts only on interfaces listed in an allow-hotplug line.
Preview actions without changing the interfaceifup --no-act --interfaces=./interfaces.example eth0Prints commands that would run for a test configuration file.
Show commands before executionsudo ifup --verbose eth0Useful when debugging hook scripts or route setup.
Force a stale-state retrysudo ifup --force eth0Runs even when ifupdown state and real link state disagree.
Bring an interface downsudo ifdown eth0Runs the matching deconfiguration path for eth0.

Install the ifup Command

ifup is not guaranteed to be present on modern Linux installations. Ubuntu 26.04, for example, exposes the classic ifupdown package and related compatibility packages as optional universe packages, while NetworkManager is the normal desktop connection manager. Install ifup only when you are maintaining a system that actually uses an ifupdown-style configuration.

Distribution FamilyCurrent ifup StatusUse This Approach
Debian and Ubuntuifupdown provides ifup, ifdown, and ifquery; Ubuntu publishes the package from universe, and many modern installs omit it by default.Install ifupdown only for /etc/network/interfaces workflows.
Alpine LinuxAlpine documents ifupdown-ng as part of alpine-base.Use ifupdown-ng and Alpine’s /etc/network/interfaces model.
openSUSE and SLESThe openSUSE wicked manual documents the wicked ifup command.Prefer wicked ifup and wicked configuration files.
FedoraFedora removed legacy network-scripts in Fedora 41, including legacy ifup/ifdown support.Use nmcli connection up or networkctl up.
RHEL-family systemsRHEL 8 deprecated legacy network scripts; RHEL 9 release notes say the initscripts package is not installed by default, so ifup and ifdown are unavailable.Use NetworkManager first; install NetworkManager-initscripts-updown only when a required script needs an ifup wrapper.
Arch LinuxArch normally uses NetworkManager, systemd-networkd, netctl, or another selected manager.Use the manager you enabled rather than adding Debian-style ifupdown habits.

On Debian or Ubuntu systems that intentionally use /etc/network/interfaces, install the classic package with APT:

sudo apt update
sudo apt install ifupdown

On Ubuntu, ifupdown comes from the universe component. If APT cannot locate it on a minimal image, enable Universe on Ubuntu, then rerun sudo apt update.

On Alpine systems where ifupdown-ng is missing from a customized image, add it with APK:

apk add ifupdown-ng

On openSUSE systems using wicked, make sure wicked is installed before expecting the wicked-flavored ifup tooling:

sudo zypper install wicked

Check whether your shell or a standard admin path can resolve ifup:

for path in "$(command -v ifup 2>/dev/null)" /usr/sbin/ifup /sbin/ifup; do
    [ -x "$path" ] && printf '%s\n' "$path" && break
done

A Debian-style install commonly returns:

/usr/sbin/ifup

Use the returned path when you check the implementation before trusting option behavior. A Debian or Ubuntu classic package usually uses this path:

/usr/sbin/ifup --version

The current Ubuntu 26.04 ifupdown package reports this first line:

ifup version 0.8.43ubuntu3

Use Practical ifup Command Examples

Find the Interface Name Before ifup

Modern interface names usually look like enp0s3, ens18, or wlp2s0, not always eth0. Start with the kernel’s link list:

ip -br link show

A typical brief link listing looks like this:

lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
enp0s3           UP             08:00:27:6b:d6:84 <BROADCAST,MULTICAST,UP,LOWER_UP>

The first column is the name you would use with ifup only if that same name appears in the ifupdown configuration. Older instructions may also mention the ifconfig command in Linux, but ip is the normal inspection tool on current systems.

List Interfaces Known to ifup

ifquery shows what the ifupdown parser can see. This is the quickest way to separate a real kernel interface from an interface that ifup can actually manage:

ifquery -l

A small /etc/network/interfaces file with loopback and one Ethernet stanza might return:

lo
eth0

If ip -br link show lists enp0s3 but ifquery -l lists only lo, then ifup enp0s3 has no saved stanza to apply.

Bring Up a Specific Interface with ifup

Use an interface name that already has an iface stanza:

sudo ifup eth0

A successful classic ifup run often prints nothing. Verify the result with the kernel’s address view:

ip -br addr show eth0

For a static test interface, the important fields are the interface state and expected address:

eth0             UP             192.0.2.10/24

If the interface stays DOWN, check link carrier, the configured interface name, the active network manager, and any hook scripts that run before address assignment.

Bring Up Automatic Interfaces with ifup

The -a option processes every interface marked with auto in the active configuration:

sudo ifup -a

Be careful with sudo ifup -a over SSH. A bad route, gateway, bridge, VLAN, or hook script can interrupt the same connection you are using to repair the host. Prefer console access, out-of-band management, or --no-act first on remote servers.

Use ifquery -l first when you need to see which interfaces -a will consider:

ifquery -l

Use ifup with allow-hotplug Interfaces

The allow-hotplug class is common for interfaces that should start when the kernel detects the device. Bring up a hotplug-listed interface with --allow=hotplug:

sudo ifup --allow=hotplug eth0

Use ifquery to list matching hotplug entries before changing anything:

ifquery -l --allow=hotplug

The command prints only interfaces that belong to the allow-hotplug class in the parsed interfaces file.

Preview ifup Actions with --no-act

--no-act is the safest first pass when you are testing a new stanza. Create a disposable test configuration in /tmp:

mkdir -p /tmp/ifup-example/state
cat > /tmp/ifup-example/interfaces <<'EOF'
auto eth9
iface eth9 inet static
    address 192.0.2.10/24
    gateway 192.0.2.1
EOF

Preview the actions without applying them:

ifup --no-act --interfaces=/tmp/ifup-example/interfaces --state-dir=/tmp/ifup-example/state eth9

Classic ifupdown from Ubuntu 26.04 printed this dry-run plan from the disposable file:

run-parts --exit-on-error /etc/network/if-pre-up.d
ip addr add 192.0.2.10/255.255.255.0 broadcast 192.0.2.255 dev eth9 label eth9
ip link set dev eth9   up
 ip route add default via 192.0.2.1  dev eth9 onlink 
run-parts --exit-on-error /etc/network/if-up.d

The dry run shows the major phases: pre-up hooks, address assignment, link activation, default route, and post-up hooks. It does not prove the real interface exists or that the route will work, but it catches many syntax and expansion problems before a live change.

The cleanup command removes only the disposable /tmp/ifup-example directory created in this section. Do not change the path unless you are certain it points to your own test files.

rm -rf /tmp/ifup-example
test ! -e /tmp/ifup-example && echo "ifup example removed"

Successful cleanup returns:

ifup example removed

Show Verbose ifup Output

--verbose prints commands as they run. Use it when the interface exists, the stanza is correct, and you need to see where the bring-up sequence stops:

sudo ifup --verbose eth0

Verbose mode is especially useful when pre-up, up, post-up, or hook scripts under /etc/network/if-up.d/ are involved.

Use a Logical Interface Name

Debian-style ifup can apply a logical interface definition to a physical interface. This pattern appears on older laptops, roaming profiles, and server templates:

sudo ifup eth0=home

The physical interface is eth0, while home is the logical stanza name. Keep these profile-style configurations simple, and verify the parsed result before applying it:

ifquery eth0=home

Use Advanced ifup Command Options

Use an Alternate Interfaces File

The --interfaces option is useful for testing a copied configuration file before changing /etc/network/interfaces:

ifquery --interfaces=./interfaces.test eth0
ifup --no-act --interfaces=./interfaces.test eth0

Use this as a parser and dry-run check. A successful dry run does not make DNS, firewall, switch, VLAN, DHCP, or gateway reachability correct.

Exclude One Interface from ifup -a

--exclude keeps a matching interface out of a bulk -a run:

sudo ifup -a --exclude=eth1

This is useful when one interface is unstable or intentionally disconnected, but you still need to bring up the rest of the automatic set.

Skip Hook Scripts During ifup Testing

--no-scripts skips scripts under /etc/network/if-*.d/. Use it only as a troubleshooting branch, not as your normal startup command, because those scripts may set routes, firewall state, VPN hooks, monitoring tags, or resolver updates:

sudo ifup --no-scripts eth0

If --no-scripts succeeds but normal ifup eth0 fails, inspect scripts in these directories:

ls -1 /etc/network/if-pre-up.d/
ls -1 /etc/network/if-up.d/

Review custom scripts carefully before disabling them. Some are package-owned and expected by the network stack.

Force ifup When State Is Stale

The ifupdown state file can disagree with reality when another tool changed the interface. The Debian manual notes this exact stale-state problem and documents --force for those cases:

sudo ifup --force eth0

Use --force after you understand why state drift happened. If NetworkManager, systemd-networkd, or a custom script is still changing the same interface, forcing ifup only hides the ownership conflict for one run.

Use ifup Safely with Modern Network Managers

Many current systems keep ifup absent or provide it only as a compatibility wrapper. Check the active network owner before copying older commands into a production shell:

systemctl is-active NetworkManager 2>/dev/null || true
systemctl is-active systemd-networkd 2>/dev/null || true
systemctl is-active networking 2>/dev/null || true

A NetworkManager-managed desktop can return:

active
inactive
inactive

If a unit is not installed on your distribution, systemctl may print unknown. Treat that as a manager-not-present signal and continue with the tool that actually owns the interface.

That host is a NetworkManager system, so nmcli is the safer persistent-control path:

nmcli connection show
sudo nmcli connection up "Wired connection 1"
sudo nmcli connection down "Wired connection 1"

For systemd-networkd systems, use networkctl against the managed link:

networkctl list
sudo networkctl up eth0
sudo networkctl down eth0

For openSUSE wicked systems, use wicked’s command form so the request goes through the same manager that owns the configuration:

sudo wicked ifup eth0
sudo wicked ifdown eth0
sudo wicked ifstatus eth0

For one-time link-state testing, the ip command can raise or lower the administrative state without applying persistent address configuration:

sudo ip link set eth0 up
sudo ip link set eth0 down

That ip form is temporary. It will not read /etc/network/interfaces, NetworkManager keyfiles, systemd-networkd .network files, or wicked sysconfig files.

Troubleshoot Common ifup Errors

Fix ifup Command Not Found

A missing binary usually means the system uses another network manager or the compatibility package is not installed:

bash: ifup: command not found

Check whether the command exists in your shell path or in a standard admin directory:

for path in "$(command -v ifup 2>/dev/null)" /usr/sbin/ifup /sbin/ifup; do
    [ -x "$path" ] && printf '%s\n' "$path" && break
done

If the check prints /usr/sbin/ifup but plain ifup still fails, your normal user PATH does not include the admin binary directory. Use sudo ifup, an absolute path, or a root shell for live changes. If the check prints nothing on Debian or Ubuntu and the host really uses /etc/network/interfaces, install ifupdown. If the host uses NetworkManager or systemd-networkd, use nmcli or networkctl instead of adding another network stack.

Fix No Interface Specified

Running classic ifup with neither -a nor an interface name returns:

ifup: no interface(s) specified
ifup: Use --help for help

Provide a configured interface name or process automatic entries:

sudo ifup eth0
sudo ifup -a

Use ifquery -l first when you are not sure which names the configuration provides.

Fix Unknown Interface Errors

If the interface has no matching stanza, classic ifupdown reports:

ifup: unknown interface eth9

Compare the kernel’s interface list with the ifupdown parser:

ip -br link show
ifquery -l

Fix the name mismatch in your interfaces file, or use the manager that actually owns the interface. On predictable-name systems, replacing eth0 with a real name such as enp0s3 is often enough, but only if that same name is configured for ifupdown.

Fix Cannot Find Device Errors

A stanza can parse correctly while the kernel still lacks that device:

Cannot find device "eth9"
ifup: failed to bring up eth9

Check the real link name, driver state, virtual interface creation order, or VLAN/bridge parent. If the interface is virtual, make sure its parent exists before ifup tries to configure it.

Fix Operation Not Permitted Errors

Applying live interface changes requires root privileges. Running a real bring-up as a normal user can fail like this:

RTNETLINK answers: Operation not permitted
ifup: failed to bring up enp0s3

Use sudo for live changes:

sudo ifup enp0s3

Keep sudo off read-only checks such as the path-detection loop, /usr/sbin/ifup --version, and most ifquery parser checks unless your local permissions require it.

Fix RHEL or Fedora ifup Compatibility Problems

On newer Fedora and RHEL-family systems, missing ifup is often expected. Fedora removed legacy network-scripts in Fedora 41, and RHEL 9 documents nmcli connection up and nmcli connection down as the normal alternatives when ifup and ifdown are unavailable by default. RHEL 9 also names NetworkManager-initscripts-updown as a compatibility package when an ifup wrapper is still required.

nmcli connection show
sudo nmcli connection up "Wired connection 1"
sudo nmcli connection down "Wired connection 1"

Do not install a legacy compatibility package just because an old script says ifup. First decide whether that script should be migrated to NetworkManager, systemd-networkd, or wicked for the system you actually run.

Conclusion

ifup is useful when a configured ifupdown-style stack owns the interface, especially on Debian-style servers, Alpine systems, wicked-managed hosts, and older scripts. The safer workflow is to confirm the active network manager, preview with --no-act where possible, then use ifup, nmcli, networkctl, or wicked according to the configuration owner.

Share this guide

Help another Linux user troubleshoot faster

Share this guide with someone troubleshooting Linux systems or saving it for later.

Follow LinuxCapable

Want more LinuxCapable guides in Google?

Add LinuxCapable as a preferred source so Google can show our tutorials more often in Top Stories and mark them as preferred in AI Mode and AI Overviews when relevant.

Add LinuxCapable as a preferred source on Google
Search LinuxCapable

Need another guide?

Search LinuxCapable for package installs, commands, troubleshooting, and follow-up guides related to what you just read.

Found this guide useful?

Support LinuxCapable to keep tutorials free and up to date.

Buy me a coffeeBuy me a coffee
Before commenting, please review our Comments Policy.
Formatting tips for your comment

You can use basic HTML to format your comment. Useful tags currently allowed in published comments:

You type Result
<code>command</code> command
<strong>bold</strong> bold
<em>italic</em> italic
<a href="https://example.com">link</a> link
<blockquote>quote</blockquote> quote block

Got a Question or Feedback?

We read and reply to every comment - let us know how we can help or improve this guide.

Verify before posting: