8.2. Interface Configuration Files

Interface configuration files control the software interfaces for individual network devices. As the system boots, it uses these files to determine what interfaces to bring up and how to configure them. These files are usually named ifcfg-<name>, where <name> refers to the name of the device that the configuration file controls.

8.2.1. Ethernet Interfaces

One of the most common interface files is ifcfg-eth0, which controls the first Ethernet network interface card or NIC in the system. In a system with multiple NICs, there are multiple ifcfg-eth<X> files (where <X> is a unique number corresponding to a specific interface). Because each device has its own configuration file, an administrator can control how each interface functions individually.
The following is a sample ifcfg-eth0 file for a system using a fixed IP address:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETWORK=10.0.1.0
NETMASK=255.255.255.0
IPADDR=10.0.1.27
USERCTL=no
The values required in an interface configuration file can change based on other values. For example, the ifcfg-eth0 file for an interface using DHCP looks quite a bit different because IP information is provided by the DHCP server:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
The Network Administration Tool (system-config-network) is an easy way to make changes to the various network interface configuration files (refer to the chapter titled Network Configuration in the System Administrators Guide for detailed instructions on using this tool).
However, it is also possible to edit the configuration files for a given network interface manually.
Below is a listing of the configurable parameters in an Ethernet interface configuration file:
  • BOOTPROTO=<protocol>, where <protocol> is one of the following:
    • none — No boot-time protocol should be used.
    • bootp — The BOOTP protocol should be used.
    • dhcp — The DHCP protocol should be used.
  • BROADCAST=<address>, where <address> is the broadcast address. This directive is deprecated, as the value is calculated automatically with ipcalc.
  • DEVICE=<name>, where <name> is the name of the physical device (except for dynamically-allocated PPP devices where it is the logical name).
  • DHCP_HOSTNAME — Only use this option if the DHCP server requires the client to specify a hostname before receiving an IP address. (The DHCP server daemon in Red Hat Enterprise Linux does not support this feature.)
  • DNS{1,2}=<address>, where <address> is a name server address to be placed in /etc/resolv.conf if the PEERDNS directive is set to yes.
  • ETHTOOL_OPTS=<options>, where <options> are any device-specific options supported by ethtool. For example, if you wanted to force 100Mb, full duplex:
    ETHTOOL_OPTS="autoneg off speed 100 duplex full"
    Note that changing speed or duplex settings almost always requires disabling autonegotiation with the autoneg off option. This needs to be stated first, as the option entries are order dependent.
  • GATEWAY=<address>, where <address> is the IP address of the network router or gateway device (if any).
  • HWADDR=<MAC-address>, where <MAC-address> is the hardware address of the Ethernet device in the form AA:BB:CC:DD:EE:FF. This directive is useful for machines with multiple NICs to ensure that the interfaces are assigned the correct device names regardless of the configured load order for each NIC's module. This directive should not be used in conjunction with MACADDR.
  • IPADDR=<address>, where <address> is the IP address.
  • MACADDR=<MAC-address>, where <MAC-address> is the hardware address of the Ethernet device in the form AA:BB:CC:DD:EE:FF. This directive is used to assign a MAC address to an interface, overriding the one assigned to the physical NIC. This directive should not be used in conjunction with HWADDR.
  • MASTER=<bond-interface>,where <bond-interface> is the channel bonding interface to which the interface the Ethernet interface is linked.
    This directive is used in conjunction with the SLAVE directive.
    Refer to Section 8.2.3, “Channel Bonding Interfaces” for more about channel bonding interfaces.
  • NETMASK=<mask>, where <mask> is the netmask value.
  • NETWORK=<address>, where <address> is the network address. This directive is deprecated, as the value is calculated automatically with ipcalc.
  • ONBOOT=<answer>, where <answer> is one of the following:
    • yes — This device should be activated at boot-time.
    • no — This device should not be activated at boot-time.
  • PEERDNS=<answer>, where <answer> is one of the following:
    • yes — Modify /etc/resolv.conf if the DNS directive is set. If using DHCP, then yes is the default.
    • no — Do not modify /etc/resolv.conf.
  • SLAVE=<bond-interface>,where <bond-interface> is one of the following:
    • yes — This device is controlled by the channel bonding interface specified in the MASTER directive.
    • no — This device is not controlled by the channel bonding interface specified in the MASTER directive.
    This directive is used in conjunction with the MASTER directive.
    Refer to Section 8.2.3, “Channel Bonding Interfaces” for more about channel bond interfaces.
  • SRCADDR=<address>, where <address> is the specified source IP address for outgoing packets.
  • USERCTL=<answer>, where <answer> is one of the following:
    • yes — Non-root users are allowed to control this device.
    • no — Non-root users are not allowed to control this device.