The ifconfig
command, part of the net-tools package, was the de facto standard for network interface configuration on Unix-like systems for decades. However, it hasn't been actively maintained since around 2001. The Linux kernel community officially marked net-tools as deprecated in favor of the iproute2 suite (which includes ip
) many years ago.
While there isn't a single "deprecation notice" document, several authoritative sources confirm the status:
1. The Linux Kernel Archives no longer include net-tools in their source tree
2. Major distributions like Red Hat and Debian have marked net-tools as "legacy"
3. The iproute2 documentation states it's the "current" network configuration toolset
4. The net-tools GitHub repository shows minimal maintenance activity
ifconfig
lacks support for modern networking features:
• No native support for network namespaces
• Limited IPv6 functionality
• Can't manage advanced routing policies
• Doesn't support multiple address families simultaneously
• Missing modern interface types like bridges and VLANs
Here's a comparison of common operations:
# Show interfaces
ifconfig -a
ip address show # or ip a
# Bring interface up/down
ifconfig eth0 up
ip link set eth0 up
# Assign IP address
ifconfig eth0 192.168.1.100 netmask 255.255.255.0
ip address add 192.168.1.100/24 dev eth0
More advanced use cases with ip
:
# Add multiple IP addresses
ip address add 192.168.1.101/24 dev eth0 label eth0:1
ip address add 192.168.1.102/24 dev eth0 label eth0:2
# Show routing table
ip route show # vs route -n
# Add default gateway
ip route add default via 192.168.1.1
The ip
command offers several architectural advantages:
• Unified interface for all network operations
• Better scripting support with JSON output option
• More consistent syntax across operations
• Future-proof for new networking features
• Better integration with network namespaces
To verify which tools are installed:
# Check ifconfig availability
which ifconfig
# Check iproute2 version
ip -V
# Verify net-tools package status (Debian/Ubuntu)
dpkg -l net-tools
# Verify net-tools package status (RHEL/CentOS)
rpm -q net-tools
Some legacy scenarios might require ifconfig
:
• Older embedded systems with limited packages
• Certain network monitoring tools that parse ifconfig output
• Scripts that can't be immediately updated
• Some container images that exclude iproute2 for size
The ifconfig
command has been a staple of Unix-like systems since the 1980s, originally part of the BSD net-tools package. For decades, it was the primary tool for network interface configuration:
# Traditional ifconfig usage
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
The Linux community began moving away from net-tools (including ifconfig) in the early 2000s. Key milestones:
- 2001: iproute2 (containing
ip
command) introduced in Linux 2.2.x - 2009: Major distributions started marking net-tools as deprecated
- 2011: Arch Linux removed net-tools from base installation
- 2013: Red Hat announced deprecation in RHEL 7
The most authoritative statement comes from the net-tools project page itself: "This is the historical home of Linux net-tools... it is suggested to use iproute2 instead for all new work."
The ip
command from iproute2 offers significant advantages:
# Modern equivalent using ip command
ip addr add 192.168.1.100/24 dev eth0
ip link set eth0 up
Feature | ifconfig | ip |
---|---|---|
IPv6 support | Limited | Full |
Network namespaces | No | Yes |
VLAN handling | Basic | Advanced |
Output format | Inconsistent | Structured |
While ifconfig still ships with many systems for backward compatibility:
- Ubuntu: net-tools not installed by default since 18.04
- RHEL/CentOS: Available but not in minimal installs
- Debian: Marked as "optional" in standard installation
Common ifconfig commands and their ip equivalents:
# Show interfaces
ifconfig -a → ip addr show
# Set MTU
ifconfig eth0 mtu 9000 → ip link set eth0 mtu 9000
# Promiscuous mode
ifconfig eth0 promisc → ip link set eth0 promisc on
For scripting, the -json
flag in modern ip versions provides machine-readable output:
ip -json addr show eth0 | jq '.[0].addr_info[0].local'
Some legacy systems or embedded environments may still require ifconfig, particularly when:
- Working with ancient network drivers
- Maintaining decades-old scripts
- Debugging issues with obscure network hardware
However, for all new development and system administration tasks, the ip command should be your standard tool. The Linux kernel development team has made it clear that new networking features will only be exposed through iproute2 interfaces, not through the legacy net-tools API.