Linux is a buffet for different tools and utilities, some last longer, and others are deprecated with better alternatives.
Debian/Ubuntu: Configure knockd on Server for Port Knocking
ifconfig is one of them, introduced in UNIX-based operating system as administration utility for the networking in 1983, then inherited by Linux in 1991.
It is part of the net-tools package, which bundles essential tools for the network subsystem of the Linux kernel. This includes tools like
ifconfig, arp, route, netstat, rarp, nameif.
It is a traditional command used to display information about network interfaces. Still, due to frequent updates in the Linux kernel, it cannot sustain and deprecate with another advanced tool like IP.
tap devices can’t be created.
- Do not display peer binding address.
- Do not support nor use CIDR notation.
- Do not display disabled devices on the network.
- Do not support non-labeled secondary addresses.
l2tp, etc. Can’t be configured in-kernel static tunnels.
- Misunderstood some devices due to the advancement in Hardware and Kernel.
Besides patch mass updates provided manually by some distributions, there have been no significant updates in net-tools since 2001 after net-tools v1.60.
Personal thoughts for ifconfig
To be honest, sometimes I still use ifconfig; you heard it right. The reason is the output is pretty easy to digest and feels like a pretty handy tool for just taking a sneak peek of the network interfaces.
It does not mean that I am totally into it, but a little old habit. Now let’s see what IP has to offer us, which ifconfig cannot fulfill.
IP – Alternative for ifconfig
IP is a powerful networking configuration tool that every Linux administrator should know. It is a successor of ifconfig from the iproute2 package with features like up or down, assigning and removing addresses and routes, managing ARP cache, configuring and modifying static routing, etc.
It provides all the functionality to manage Layer 2 (Link Layer) and Layer 3 (IP layer) from the OSI model. Easily can handle all the tasks, where ifconfig lacks, and provide more and more functionality for Linux administrator.
- Setup tunnel over the IP.
- Easily manupulate default and static routing.
- Display IP address and modify its properties.
- Assigning, modifying, and deleting the IP address and routes.
- Modify ARP caches along with creating new static ARP entry for a host.
The key difference between ifconfig and IP is that ifconfig still utilizes the old method known as ioctl (Input/Output control), which the people criticize. At the same time, the successor uses the Netlink socket mechanism.
The NetLink socket mechanism is a more convenient and flexible way to communicate between processes and kernel using rtnetlink (Which allows the kernel’s routing tables to be read and altered) than the predecessor ioctl.
ip vs ifconfig Commands
Below is the table of the commands. You can take a sneak peek differences between ip and ifconfig commands.
ifconfig and IP commands differences
|ifconfig (net-tools)||ip (iproute2)|
|ifconfig||ip a, ip link|
|netstat -M||conntrack -L|
|netstat -g||ip maddr|
|netstat -i||ip -s link|
|netstat -r||ip route|
Let put major commands into action and see how they work.
1. Output all Network Interfaces
Proxychains – Run Commands and Applications using Proxy Tunnels
$ ip a #Brief overview of network interfaces
$ ip link #Summary of network interfaces
2. Adding/Removing an IP address
$ ifconfig eth0 add 192.168.50.156 #Add 192.168.50.156 to the network
$ ifconfig eth0 del 192.168.50.156 #Remove 192.168.50.156 from the network
$ ip a add 192.168.50.156 dev eth0 #Add 192.168.50.156 to the network
$ ip a del 192.168.50.156 dev eth0 #Remove 192.168.50.156 from the network
3. Enable or Disable Network Interface
To monitor the changes, use ifconfig.
$ ifconfig eth0 down #Disable eth0
$ ifconfig eth0 up #Re-enable eth0
To monitor the changes, use ip a/link.
$ ip link set eth0 down #Disable eth0
$ ip link set eth0 ip #Re-enable eth0
4. Eable or Disable the use of ARP protocol
$ ifconfig eth0 arp #Enable arp for eth0
$ ifconfig eth0 -arp #Disable arp for eth0
$ ip link set dev eth0 arp on #Enable arp for eth0
$ ip link set dev eth0 arp off #Disable arp for eth0
5. Attach MAC Address to Network Interface
The current mac address will be replaced with the mentioned address from the below command. You can spot the differences using the ifconfig and ip commands.
How to Change MAC Address in Linux
$ ifconfig eth0 hw ether C3-F8-66-D7-6B-31
$ ip link set dev eth0 address C3-F8-66-D7-6B-31
To revert, reboot your system, and all the changes will be restored.
IP command is way better to use, and many distributions like openSUSE are known to exclusively use iproute2 for setting up networking during system boot and installation.
Many distributions removed the support for the net-tools package, which one time came preinstalled. Besides, this ip command is more convenient while networking instead of ifconfig.
Innovative tech mind with 12 years of experience working as a computer programmer, web developer, and security researcher. Capable of working with a variety of technology and software solutions, and managing databases.