Ubuntu Networking

The programs for configuring networking on Ubuntu are ifup and ifdown. The read their configuration from /etc/network/interfaces. See the man page for interfaces. Also, see /usr/share/doc/ifupdown/examples directory.

Setting auto for an interface means that it will be brought up either on network start or ifup -a.

Lines beginning with the word “auto” are used to identify the physical interfaces to be brought up when ifup is run with the -a option.

To make a device even recognized, all that needs to be done is set it to load automatically. This configuration will make the devices available, but not set anything for them:

auto eth0
iface eth0 inet manual

auto eth1
iface eth1 inet manual
Reload Network Configuration

To use new settings in your interfaces file, such as a new static IP address, bring the interface down, and back up.

ifdown eth0; ifup eth0

DHCP Client

In the simplest case, getting an address from a DHCP server is easy.

Here's an example:

auth eth0
iface eth0 auto dhcp

Additional options for the dhcp method:

  • hostname - hostname to be requested
  • metric - metric for added routes (when using dhclient)
  • leasehours - request lease time in hours (when using pump)
  • leasetime - require least time in seconds (when using dhcpcd)
  • vendor - vendor class identifier (dhcpcd)
  • client - client identifier (when using dhcpcd or udhcpc)
  • hwaddress - MAC address

Manual IP Configuration

Use a manual IP when you want the device to be available, but with no instructions attached to it.

  • hwaddress <hwaddress> - link local address
  • mtu <size> - MTU size

Static IP Address

When setting a static IP address, use static as the inet type. Here's the other available options:

  • address - static IP address (required)
  • netmask - dotted quad or CIPR format
  • broadcast <address>
  • metric - routing metric for default gateway (type integer)
  • gateway - default gateway, dotted-quad format
  • pointtopoint - address of other end-point, dotted-quad format
  • hwaddress - MAC address
  • mtu - MTU size
  • scope - Address validity scope. Possible values: global, link, host

Here's an example of setting a static IP and manually setting DNS servers to Comcast:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
	address 192.168.1.2
	netmask 255.255.255.0
	gateway 192.168.1.1
	dns-nameservers 75.75.75.75 75.75.76.76

Google also offers some public DNS servers:

	dns-nameservers 8.8.4.4 8.8.8.8

Bonding

Documentation for bonding in Ubuntu is found in the ifenslave documentation – see /usr/share/doc/ifenslave.

In this scenario, active-backup bonding is set up, meaning that if the first device specified goes down, the second becomes the active device. The MAC address of the first device will continue to be used.

Before anything, the bonding module for the kernel has to be loaded. Once it is, you will have an ethernet device bond0 appear. Also install the ifenslave package.

modprobe bonding

Set up the system to load the bonding module on boot, in /etc/modules:

bonding

You will also need the ifenslave package installed:

apt-get install ifenslave

In /etc/network/interfaces, add the configuration for the Ethernet devices that will act as slaves:

auto eth0
iface eth0 inet manual
     bond-master bond0

auto eth1
iface eth1 inet manual
     bond-master bond0

Once they are added, add the settings for the bonding configuration. In this scenario, the connection is checked very 100 ms. The mode is active-backup, meaning that if one slave fails, the other will take over.

After that, you can configure the device as usual. For simplicity's sake, we're using DHCP here:

auto bond0
iface bond0 inet dhcp
     bond-primary eth0 eth1
     bond-mode active-backup
     bond-miimon 100

Load the new networking configuration. To be safe, bring the eth* devices down first:

ifconfig eth0 down
ifconfig eth1 down
ifup bond0