This section only applies if a network card is to be configured.
If a network card will not be used, there is likely no need to create
any configuration files relating to network cards. If that is the
case, remove the network
symlinks from
all run-level directories (/etc/rc.d/rc*.d
).
With Udev and modular network drivers, the network interface
numbering is not persistent across reboots by default, because the
drivers are loaded in parallel and, thus, in random order. For
example, on a computer having two network cards made by Intel and
Realtek, the network card manufactured by Intel may become
eth0
and the Realtek card becomes
eth1
. In some cases, after a reboot
the cards get renumbered the other way around. To avoid this, Udev
comes with a script and some rules to assign stable names to
network cards based on their MAC address.
Pre-generate the rules to ensure the same names get assigned to the same devices at every boot, including the first:
/lib/udev/write_net_rules all_interfaces
Now, inspect the /etc/udev/rules.d/70-persistent-net.rules
file,
to find out which name was assigned to which network device:
cat /etc/udev/rules.d/70-persistent-net.rules
The file begins with a comment block followed by two lines for each NIC. The first line for each NIC is a commented description showing its hardware IDs (e.g. its PC vendor and device IDs, if it's a PCI card), along with its driver in parentheses, if the driver can be found. Neither the hardware ID nor the driver is used to determine which name to give an interface. The second line is the Udev rule that matches this NIC and actually assigns it a name.
All Udev rules are made up of several keys, separated by commas and optional whitespace. This rule's keys and an explanations of each of them are as follows:
SUBSYSTEM=="net"
- This tells
Udev to ignore devices that are not network cards.
DRIVERS=="?*"
- This exists so
that Udev will ignore VLAN or bridge sub-interfaces (because
these sub-interfaces do not have drivers). These
sub-interfaces are skipped because the name that would be
assigned would collide with their parent devices.
ATTRS{type}=="1"
- Optional.
This key will only be added if this NIC is a wireless NIC
whose driver creates multiple virtual interfaces; it ensures
the rule only matches the primary interface. The secondary
interfaces are not matched for the same reason that VLAN and
bridge sub-interfaces are not matched: there would be a name
collision.
ATTRS{address}
- The value of
this key is the NIC's MAC address.
NAME
- The value of this key is
the name that Udev will assign to this interface.
The value of NAME
is the important
part. Make sure you know which name has been assigned to each of
your network cards before proceeding, and be sure to use that
NAME
value when creating your
configuration files below.
Which interfaces are brought up and down by the network script
depends on the files and directories in the /etc/sysconfig/network-devices
hierarchy. This
directory should contain a sub-directory for each interface to be
configured, such as ifconfig.xyz
,
where “xyz” is a network
interface name. Inside this directory would be files defining the
attributes to this interface, such as its IP address(es), subnet
masks, and so forth.
The following command creates a sample ipv4
file for the eth0 device:
cd /etc/sysconfig/network-devices
mkdir -v ifconfig.eth0
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.1
GATEWAY=192.168.1.2
PREFIX=24
BROADCAST=192.168.1.255
EOF
The values of these variables must be changed in every file to
match the proper setup. If the ONBOOT
variable is set to “yes” the
network script will bring up the Network Interface Card (NIC)
during booting of the system. If set to anything but
“yes” the NIC will be
ignored by the network script and not be brought up.
The SERVICE
variable defines the method
used for obtaining the IP address. The LFS-Bootscripts package has
a modular IP assignment format, and creating additional files in
the /etc/sysconfig/network-devices/services
directory
allows other IP assignment methods. This is commonly used for
Dynamic Host Configuration Protocol (DHCP), which is addressed in
the BLFS book.
The GATEWAY
variable should contain the
default gateway IP address, if one is present. If not, then comment
out the variable entirely.
The PREFIX
variable needs to contain the
number of bits used in the subnet. Each octet in an IP address is 8
bits. If the subnet's netmask is 255.255.255.0, then it is using
the first three octets (24 bits) to specify the network number. If
the netmask is 255.255.255.240, it would be using the first 28
bits. Prefixes longer than 24 bits are commonly used by DSL and
cable-based Internet Service Providers (ISPs). In this example
(PREFIX=24), the netmask is 255.255.255.0. Adjust the PREFIX
variable according to your specific subnet.
If the system is going to be connected to the Internet, it will
need some means of Domain Name Service (DNS) name resolution to
resolve Internet domain names to IP addresses, and vice versa. This
is best achieved by placing the IP address of the DNS server,
available from the ISP or network administrator, into /etc/resolv.conf
. Create the file by running the
following:
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
domain <Your Domain Name>
nameserver <IP address of your primary nameserver>
nameserver <IP address of your secondary nameserver>
# End /etc/resolv.conf
EOF
Replace <IP address of the
nameserver>
with the IP address of the DNS most
appropriate for the setup. There will often be more than one entry
(requirements demand secondary servers for fallback capability). If
you only need or want one DNS server, remove the second
nameserver line from the
file. The IP address may also be a router on the local network.