Ubuntu ships with a number of graphical utilities to configure your network devices. This document is geared toward server administrators and will focus on managing your network on the command line.
Most Ethernet configuration is centralized in a single file,
/etc/network/interfaces
. If you have no Ethernet devices,
only the loopback interface will appear in this file, and it will look something
like this:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0
If you have only one Ethernet device, eth0, and it gets its configuration from a DHCP server, and it should come up automatically at boot, only two additional lines are required:
auto eth0 iface eth0 inet dhcp
The first line specifies that the eth0 device should come up automatically when
you boot. The second line means that interface (“iface”) eth0
should have an IPv4 address space (replace “inet” with
“inet6” for an IPv6 device) and that it should get its
configuration automatically from DHCP. Assuming your network and DHCP server
are properly configured, this machine's network should need no further
configuration to operate properly. The DHCP server will provide the default
gateway (implemented via the route command), the
device's IP address (implemented via the ifconfig
command), and DNS servers used on the network (implemented in the
/etc/resolv.conf
file.)
To configure your Ethernet device with a static IP address and custom
configuration, some more information will be required. Suppose you want to
assign the IP address 192.168.0.2 to the device eth1, with the typical netmask
of 255.255.255.0. Your default gateway's IP address is 192.168.0.1. You would
enter something like this into /etc/network/interfaces
:
iface eth1 inet static address 192.168.0.2 netmask 255.255.255.0 gateway 192.168.0.1
In this case, you will need to specify your DNS servers manually in
/etc/resolv.conf
, which should look something like this:
search mydomain.example nameserver 192.168.0.1 nameserver 4.2.2.2
The search directive will append mydomain.example
to hostname queries in an attempt to resolve names to your network. For example,
if your network's domain is mydomain.example and you try to ping the host
“mybox”, the DNS query will be modified to
“mybox.mydomain.example” for resolution. The
nameserver directives specify DNS servers to be
used to resolve hostnames to IP addresses. If you use your own nameserver, enter it
here. Otherwise, ask your Internet Service Provider for the primary and secondary DNS
servers to use, and enter them into /etc/resolv.conf
as shown
above.
Many more configurations are possible, including dialup PPP interfaces, IPv6
networking, VPN devices, etc. Refer to man 5 interfaces
for more information and supported options. Remember that
/etc/network/interfaces
is used by the
ifup/ifdown scripts as a
higher level configuration scheme than may be used in some other Linux distributions,
and that the traditional, lower level utilities such as
ifconfig, route, and
dhclient are still available to you for ad hoc
configurations.
This section explains how to configure which nameserver to use when resolving IP addresses to hostnames and vice versa. It does not explain how to configure the system as a name server.
To manage DNS entries, you can add, edit, or remove DNS names
from the /etc/resolv.conf
file. A sample file is given below:
search com nameserver 204.11.126.131 nameserver 64.125.134.133 nameserver 64.125.134.132 nameserver 208.185.179.218
The search key specifies the string which will be appended to an incomplete hostname. Here, we have configured it to com. So, when we run: ping ubuntu it would be interpreted as ping ubuntu.com.
The nameserver key specifies the nameserver IP address. It will be used to resolve a given IP address or hostname. This file can have multiple nameserver entries. The nameservers will be used by the network query in the same order.
If the DNS server names are retrieved dynamically from DHCP or PPPoE (retrieved from your ISP), do not add nameserver entries in this file. It will be overwritten. |
To manage hosts, you can add, edit, or remove hosts from
/etc/hosts
file. The file contains IP
addresses and their corresponding hostnames. When your
system tries to resolve a hostname to an IP address or
determine the hostname for an IP address, it refers to the
/etc/hosts
file before using the name
servers. If the IP address is listed in the
/etc/hosts
file, the name servers are
not used. This behavior can be modified by editing
/etc/nsswitch.conf
at your peril.
If your network contains computers whose IP
addresses are not listed in DNS, it is recommended that you
add them to the /etc/hosts
file.
Bridging multiple interfaces is a more advanced configuration, but is very useful in multiple scenarios. One scenario is setting up a bridge with multiple network interfaces, then using a firewall to filter traffic between two network segments. Another scenario is using bridge on a system with one interface to allow virtual machines direct access to the outside network. The following example covers the latter scenario.
Before configuring a bridge you will need to install the bridge-utils package. To install the package, in a terminal enter:
sudo apt-get install bridge-utils
Next, configure the bridge by editing /etc/network/interfaces
:
auto lo iface lo inet loopback auto br0 iface br0 inet static address 192.168.0.10 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off
Enter the appropriate values for your physical interface and network. |
Now restart networking to enable the bridge interface:
sudo /etc/init.d/networking restart
If setting up a bridge interface using Ubuntu Desktop Edition, or if dhcdbd is installed, the dhcdbd daemon will need to be stopped and disabled.
After configuring the bridge in /etc/network/interfaces
, shutdown dhcdbd by:
sudo /etc/init.d/dhcdbd stop
Now to disable it from starting on boot enter:
sudo update-rc.d -f dhcdbd remove
The new bridge interface should now be up and running. The brctl provides useful information about the state of the bridge, controls which interfaces are part of the bridge, etc. See man brctl for more information.