Библиотека сайта rus-linux.net
7.13. Configuring the network Script
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
).
7.13.1. Creating stable names for network interfaces
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:
for NIC in /sys/class/net/* ; do INTERFACE=${NIC##*/} udevadm test --action=add $NIC done
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 PCI 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; this information is only for reference. 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 explanation of each of them are as follows:
-
SUBSYSTEM=="net"
- This tells Udev to ignore devices that are not network cards. -
ACTION=="add"
- This tells Udev to ignore this rule for a uevent that isn't an add ("remove" and "change" uevents also happen, but don't need to rename network interfaces). -
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. -
ATTR{address}
- The value of this key is the NIC's MAC address. -
ATTR{type}=="1"
- This ensures the rule only matches the primary interface in the case of certain wireless drivers, which create multiple virtual interfaces. The secondary interfaces are skipped for the same reason that VLAN and bridge sub-interfaces are skipped: there would be a name collision otherwise. -
KERNEL=="eth*"
- This key was added to the Udev rule generator to handle machines that have multiple network interfaces, all with the same MAC address (the PS3 is one such machine). If the independent interfaces have different basenames, this key will allow Udev to tell them apart. This is generally not necessary for most Linux From Scratch users, but does not hurt. -
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.
7.13.2. Creating Network Interface Configuration Files
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.
7.13.3. Creating the /etc/resolv.conf File
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.