Skip to main content

The `ip` Command in Linux: An In-Depth Guide

The ip command is a powerful tool in Linux for network configuration and troubleshooting. Part of the iproute2 package, it replaces traditional tools like ifconfig and route, providing a unified interface to handle various network-related tasks.

Basics of the ip Command

The ip command allows users to manage and view routing tables, devices, IP addresses, and more.

General Syntax:

ip [OPTIONS] OBJECT [COMMAND]

Where OBJECT may be one of: address, link, route, neigh, etc., and COMMAND is a specific operation related to the object, like add, del, show, and so on.

Using the ip Command and Combining Options

View All Network Interfaces:

ip link show

This will list all network interfaces on the machine, both active and inactive.

Assigning an IP Address to an Interface:

sudo ip addr add 192.168.1.10/24 dev eth0

This command assigns the IP address 192.168.1.10 with a netmask of 255.255.255.0 to the eth0 interface.

Removing an IP Address from an Interface:

sudo ip addr del 192.168.1.10/24 dev eth0

Listing Routing Table:

ip route show

Sample ip Output and Reading It

Sample output of ip link show:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether b8:ae:ed:7f:80:00 brd ff:ff:ff:ff:ff:ff

Reading the Output:

  • Each block of information relates to a single interface.

  • lo is the loopback interface. It's a virtual network interface primarily used by the localhost. It's a virtual interface that the system used to 'talk to itself'

  • eth0 usually represents the first Ethernet interface on the machine.

  • <LOOPBACK,UP,LOWER_UP> are the state and attributes of the interface. UP means the interface is running, while LOOPBACK indicates it's a loopback interface.

  • The link/loopback or link/ether line tells you about the type of link and its MAC address.

Other Flags For A Network Interface

If the network interface is not running, the Linux operating system might display several different flags or states. Here are some common ones:

  1. DOWN: This indicates that the interface is not active or operational.

  2. UNKNOWN: The state of the interface could not be determined. This sometimes happens with certain drivers or virtual interfaces.

  3. NO-CARRIER: The interface is up, but there's no link or carrier signal. This typically means that the physical layer (e.g., the cable) has a problem or isn't connected.

  4. DORMANT: The interface is waiting for an external event to become fully operational.

  5. ERROR: An error occurred with the interface.

  6. NOTRAILERS: The interface doesn't use trailer encapsulation (largely historical and not commonly seen today).

  7. PROMISC: The interface is in promiscuous mode, meaning it can capture all packets regardless of their destination.

  8. LOWER_DOWN: Indicates that the lower layer (typically physical link) is down.

  9. NODHCP: This is not a standard Linux flag but might appear in certain contexts to show that the interface is not configured using DHCP.

  10. MASTER/SLAVE: These are used in bonding to represent the status of bonded interfaces.

Remember, the exact flags and their meanings can vary a bit between different versions of the Linux kernel and distributions. The ip link or ifconfig commands will show the state flags for an interface. Always refer to the man pages (man ip or man ifconfig) or other authoritative documentation for your specific environment to get detailed and accurate information.

Key ip Options

OptionShorthandDescription
addressaDisplay or modify IP addresses on interfaces.
linklManage and display the state of all network interfaces.
routerDisplay or modify the routing table.
neighbornDisplay or modify the ARP table (similar to ARP command).
--statistics-sDisplay more detailed information.
--help-hDisplay help information.

Conclusion

The ip command is a multifaceted tool with a wide range of capabilities for network configuration and diagnostics. With the deprecation of older tools like ifconfig, the modern Linux administrator or user will find ip indispensable. As always, careful understanding of its options and reading its outputs are vital for effective network management.

What Can You Do Next 🙏😊

If you liked the article, consider subscribing to Cloudaffle, my YouTube Channel, where I keep posting in-depth tutorials and all edutainment stuff for software developers.

YouTube @cloudaffle