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, you will need to remove the network
symlinks from all run-level directories
(/etc/rc.d/rc*.d
) after the bootscripts
are installed in Раздел 7.6,
«LFS-Bootscripts-20130123».
If there is only one network interface in the system to be configured, this section is optional, although it will never be wrong to do it. In many cases (e.g. a laptop with a wireless and a wired interface), accomplishing the configuration in this section is necessary.
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.
The rules were pre-generated in the build instructions for
udev (systemd) in the last
chapter. 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
In some cases such as when MAC addresess have been assigned to a network card manually or in a virtual environment such as Xen, the network rules file may not have been generated because addresses are not consistently assigned. In these cases, just continue to the next section.
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.
Which interfaces are brought up and down by the network script
depends on the files in /etc/sysconfig/
. This directory should contain a
file for each interface to be configured, such as ifconfig.xyz
, where «xyz» is meaningful to the administrator such as the
device name (e.g. eth0). Inside this file are attributes to this
interface, such as its IP address(es), subnet masks, and so forth.
It is necessary that the stem of the filename be ifconfig.
The following command creates a sample file for the eth0 device with a static IP address:
cd /etc/sysconfig/
cat > ifconfig.eth0 << "EOF"
ONBOOT=yes
IFACE=eth0
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 automatically brought
up. The interface can be manually started or stopped with the
ifup and ifdown commands.
The IFACE
variable defines the interface
name, for example, eth0. It is required for all network device
configuration files.
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 /lib/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 contains 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.i
If omitted, the PREFIX defaults to 24.
For more information see the ifup man page.
Если
система
будет
подключена
к сети
Интернет,
ей
понадобится
информация
о DNS (Domain Name Service,
службе
доменных
имен) для
преобразования
имен
доменов
Интернета
в IP-адреса и
наоборот.
Лучшим
способом
предоставить
ей эту
информацию
будет
указать
адреса
DNS-серверов,
которые
Вам выдал
провайдер
или
администратор
сети, в
файле /etc/resolv.conf
.
Создадим
этот файл
командой:
cat > /etc/resolv.conf << "EOF"
# Начало /etc/resolv.conf
domain <Имя вашего домена>
nameserver <IP-адрес первичного сервера имен>
nameserver <IP-адрес вторичного сервера имен>
# Конец /etc/resolv.conf
EOF
Строка domain
может
быть
опущена
или
заменена
на search
.
Обратитесь
к странице
справки по
resolv.conf за более
подробной
информацией.
Замените <IP-адрес
сервера
имен>
IP-адресом
самого
подходящего
на Ваш
взгляд
DNS-сервера.
Зачастую
стоит
указать
более
одного
сервера
(вторичные
сервера
требуются
для
обеспечения
надежности).
Если Вы
хотите
указать
только
один
DNS-сервер,
удалите
вторую
строку nameserver из
файла.
IP-адрес
может
также
принадлежать
роутеру
Вашей
локальной
сети.
Адреса Google Public IPv4 DNS 8.8.8.8 и 8.8.4.4.