Many
Windows administrators are familiar with the ipconfig command line utility, which is used to get information
about network interface configuration and make changes to it. Linux systems have a similar utility, ifconfig, which is a common part of the day-to-day tool belt of
most Linux sysadmins. There are some distinct differences between ipconfig and ifconfig, however, such as the fact that the DOS/Windows ipconfig does
not allow you to make changes to network configuration.

In
general, you must be logged in as root or use sudo to make use of the ifconfig
utility on a Linux machine. The ifconfig
utility can be used either to simply get information about network interface
configuration or to change configuration, depending on what options are used
with the ifconfig command.

Basic functionality

Entering
ifconfig at the command line
interface without specifying any options will provide a fairly complete
description of the current state of all active network interfaces. For
instance, on a machine with hostname erebus, entering ifconfig at the command line might
return the following output:

eth0      Link encap:Ethernet  HWaddr 00:C0:F0:77:FD:AD 
          inet addr:192.168.2.103  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::2c0:f0ff:fe77:fdad/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:913240 errors:230 dropped:0 overruns:0 frame:230
          TX packets:663990 errors:7 dropped:0 overruns:0 carrier:12
          collisions:0 txqueuelen:1000
          RX bytes:179148797 (170.8 MiB)  TX bytes:53220450 (50.7 MiB)
          Interrupt:9 Base address:0xb000

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:9814 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9814 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:3655065 (3.4 MiB)  TX bytes:3655065 (3.4 MiB)

Some
important information provided by the ifconfig command includes:

  • Each active interface is identified by its name. For
    instance, on erebus, eth0 (the first Ethernet
    adapter) and lo (the loopback adapter) are both active.
  • In the case of a physical network adapter, you’ll get
    the MAC address, preceded by the term HWaddr.
  • The IP address of the interface is preceded by the term
    inetaddr,
    the broadcast address by Bcast, and the subnet mask by Mask.
  • The IPv6 address of each interface is preceded by the
    term inet6 addr
    and its scope, predictably, by the word Scope.
  • The types of activity of each interface are listed
    together—in the case of eth0 above, it lists UP BROADCAST RUNNING MULTICAST.
  • Statistics for received and transmitted packets are
    listed on lines beginning with RX
    or TX, respectively. On another
    line, summary information about the amount of received and transmitted
    data is listed, including the total number of bytes transmitted and
    received on that device so far.

Options

A
number of options can be specified with the ifconfig
command to change its behavior:

  • -a
    This
    option tells ifconfig to show
    information about all interfaces, both active and inactive. On erebus, ifconfig
    -a

    returns results for eth0, lo, and sit0.
  • -s
    This is the
    “short listing” option, which shows a one-line summarized
    listing of data about each interface. The information returned is about
    interface activity, and not configuration. The output will be identical to
    what is returned by the netstat -i command.
  • -v
    This
    “verbose” option returns extra information when there are
    certain types of error conditions to help with troubleshooting.
  • [int]
    Simply
    follow up your ifconfig command
    with the name of an interface to get only information about that interface.
    For instance, you could issue the command ifconfig eth0 if you only wanted information about the eth0
    interface, and not the loopback interface. Additionally, there are several
    options that require specifying the interface you wish to configure or get
    information about.
  • up
    This
    activates an interface if it is not already active. For instance, ifconfig eth0 up causes eth0 to be activated.
  • down
    The
    counterpart to up, this deactivates the specified interface. Thus, ifconfig eth0 down causes eth0 to be deactivated if it is currently
    active.
  • netmask [addr]
    Using the
    “netmask” option allows you to set the
    network mask for a given interface. For instance, setting the network mask
    for eth0 could be done by entering ifconfig eth0 netmask 255.255.255.0.
  • broadcast [addr]
    When the
    “broadcast” option is accompanied by an address argument, as in ifconfig eth0 broadcast 192.168.2.255, then the broadcast address
    for the specified interface will be set.
  • [addr]
    Simply
    specifying an address with an interface name, as in ifconfig eth0 192.168.2.103, will set that interface’s IP
    address.

Shortcuts

The ifconfig eth0 up command on most Linux systems can be abbreviated to ifup eth0.
The same holds true for deactivating an interface, so that ifconfig eth0 down can be abbreviated as ifdown eth0. Some Linux systems will even have
a further abbreviated command for cycling an interface’s status called ifupdown, which quickly deactivates then
reactivates an interface, though this is less common than the individual ifup and ifdown abbreviated commands.

More information

The
“if” in ifconfig, and also
in ifup, ifdown, and ifstatus, is an
abbreviation of “interface”. It is not related to the programming
conditional “if”. You can get more information about this utility by
accessing its manpage, by entering man ifconfig at the command line.

Other
networking utilities of note include:

  • arp — This gives information about the address
    mapping cache, and allows you to manipulate it in various ways, such as
    clearing entries and adding them.
  • iptables — The
    iptables utility is actually a firewall
    configuration interface for the kernel’s packet filtering capabilities.
  • Netstat — This utility
    returns information about network connections, routing tables, interface
    statistics, and more.
  • Route — The route utility can be used
    to get information from the IP routing table on your machine, or to make
    changes to the routing table.

See
the manpages for any of these utilities to get more
information by entering “man utilityname”
at the command line. For instance, the manpage for
the arp
utility is accessed by entering man arp. You can get more information about
the man utility by entering man man.

Subscribe to the Developer Insider Newsletter

From the hottest programming languages to commentary on the Linux OS, get the developer and open source news and tips you need to know. Delivered Tuesdays and Thursdays

Subscribe to the Developer Insider Newsletter

From the hottest programming languages to commentary on the Linux OS, get the developer and open source news and tips you need to know. Delivered Tuesdays and Thursdays