Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Linux From Scratch (version 6.8)
Назад Глава 7. Настройка скриптов загрузки системы Вперед

7.13. Конфигурирование скрипта network

Этот раздел необходим только в случае, если требуется сконфигурировать сетевую карту.

Если сетевая карта использоваться не будет, то, скорее всего, конфигурационные файлы сетевых карт создавать не потребуется. Если это так, то удалите символические ссылки network из всех директориев уровня запуска (run-level) (/etc/rc.d/rc*.d).

7.13.1. Создание стабильных имен для сетевых интерфейсов

Если используется Udev и модульные сетевые драйверы, то по умолчанию нумерация сетевых интерфейсов не сохраняется между перезагрузками, т.к. драйверы загружаются параллельно и, следовательно, в случайном порядке. Например, на компьютере с двумя сетевыми картами, изготовленными Intel и Realtek, сетевая карта, изготовленная Intel, может получить имя eth0, а карта Realtek - eth1. Иногда после перезагрузки имена карт могут назначаться в обратном порядке. Чтобы избежать этого, Udev поставляется со скриптом и некоторыми правилами, которые используя МАС-адреса сетевых карт назначают им стабильные имена.

Сначала нужно создать правила, которые обеспечат, что при каждой загрузке, в том числе и первой, одним и тем же устройствам будут назначаться одни и те же имена:

for NIC in /sys/class/net/* ; do
    INTERFACE=${NIC##*/} udevadm test --action=add $NIC
done

Теперь, проверьте файл /etc/udev/rules.d/70-persistent-net.rules, чтобы узнать, какое имя какому сетевому устройству было назначено:

cat /etc/udev/rules.d/70-persistent-net.rules

Файл начинается с блока комментариев, за которым для каждой сетевой платы следуют две строки. Первая строка каждой сетевой платы является закомментированным описанием, в котором указываются аппаратные идентификаторы сетевых плат (например, идентификаторы изготовителя устройства и шины PCI, если это карты PCI), а также их драйверы, указанными в скобках, если их можно найти. Ни аппаратный идентификатор, ни драйвер не используются для присваивания имени интерфейсу; это лишь справочная информация. Вторая строка является правилом Udev, которое применяется к конкретной плате сетевого интерфейса и фактически назначает ему имя.

Все правила Udev состоят из нескольких ключей, разделенных запятыми и необязательными пробелами. Ниже перечислены ключи и для каждого из них приведено пояснение:

  • SUBSYSTEM=="net" - Этот ключ указывает Udev игнорировать устройства, которые не являются сетевыми картами
  • ACTION=="add" - Этот ключ указывает Udev игнорировать это правило для событий uevent, не связанных с добавлением устройств (также возможны события uevents вида "remove" - "удалить" и "change" — "изменить", но для них переименовать сетевые интерфейсы не нужно).
  • DRIVERS=="?*" - Этот ключ существует для того, чтобы Udev игнорировал подинтерфейсы VLAN или bridge (т. к. для этих подинтерфейсов нет драйверов). Эти подинтерфейсы пропускаются, поскольку имена, которые могут быть им назначены, будут вступать в коллизию с именами для устройств, от которых порождены эти подинтерфейсы.
  • ATTR{address} - Значением этого ключа является MAC-адрес сетевой платы.
  • ATTR{type}=="1" - Этот ключ обеспечит, что в тех случаях, когда используются определенные беспроводные драйверы, создающие несколько виртуальных интерфейсов, правило будет применяться только к первичному интерфейсу. Вторичные интерфейсы пропускаются по той же причине, по которой пропускаются подинтерфейсы VLAN и bridge: в противном случае возможны коллизии имен.
  • KERNEL=="eth*" - Этот ключ был добавлен в генератор правил Udev что обслуживать машины, в которых есть несколько сетевых интерфейсов с одним и тем же МАС-адресом (PS3 является одной из таких машин). Если независимые интерфейсы имеют различные базовые имена, то с помощью этого ключа Udev сможет отличать их друг от друга. Для большинства пользователей Linux From Scratch этот ключ необязателен, но он не навредит.
  • NAME - Значением этого ключа является имя, которое Udev назначит данному интерфейсу.

Значение NAME является важным. Прежде чем продолжить, убедитесь, что вы знаете, какое имя было назначено каждой из ваших сетевых карт, и убедитесь, что при создании файлов конфигурации, описанных ниже, используется это значение NAME.

7.13.2. Создание конфигурационных файлов сетевых интерфейсов

Какие из интерфейсов будут запущены скриптом network, а какие будут остановлены, зависит от файлов и директориев, имеющихся в иерархии /etc/sysconfig/network-devices. В этом директории должны находиться поддиректории для каждого интерфейса, который должен быть сконфигурирован, например, ifconfig.xyz, где "xyz" является именем сетевого интерфейса. Внутри этого директория должны быть файлы, определяющие атрибуты этого интерфейса, например, IP-адрес (адреса), маску подсети, и так далее.

Следующая команда создает пример файла ipv4 для устройства eth0:

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

Значения этих переменных в каждом файле следует изменить так, чтобы они соответствовали правильной настройке. Если в переменной ONBOOT указано значение "yes", то скрипт network будет подключать карту сетевого интерфейса (NIC) при загрузке системы. Если будет указано значение, отличающееся от "yes", то карта сетевого интерфейса будет проигнорирована скриптом network и не будет подключена.

В переменной SERVICE определяется способ получения IP-адреса. В пакете LFS-Bootscripts используется модульный формат назначения IP-адреса, а создаваемые в директории /etc/sysconfig/network-devices/services дополнительные файлы позволяют использовать другие методы назначения IP. Как правило, используется протокол Dynamic Host Configuration Protocol (DHCP), который рассматривается в книге BLFS.

В переменной GATEWAY должен указываться IP-адрес шлюза, используемого по умолчанию, если он есть. Если его нет, то полностью закомментируйте эту переменную.

В переменной PREFIX следует указываться количество битов, используемых в подсети. Каждое число (октет) в IP-адресе содержит 8 битов. Если маской подсети является 255.255.255.0, то первые три числа (или три октета, т. е. 24 бита) используются для указания номера сети. Если маской является 255.255.255.240, то будут использоваться первые 28 бит. Префиксы более 24 бит обычно используются для сетей DSL и кабельными интернет-провайдерами (ISP). В данном примере (PREFIX = 24), маской является 255.255.255.0. Настройте переменную PREFIX в соответствие с требованием вашей конкретной подсети.

7.13.3. Создание файла /etc/resolv.conf

Если система будет подключена к интернету, то потребуется доступ к средствам работы с доменными именами Domain Name Service (DNS), позволяющим преобразовывать доменные имена в IP-адреса и наоборот. Лучше всего это можно сделать, указав в файле /etc/resolv.conf IP-адрес сервера DNS, который есть у интернет-провайдера или у сетевого администратора, Создайте файл, выполнив следующее:

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

Замените <IP address of the nameserver> на IP-адрес службы DNS, наиболее подходящей для настройки. Часто указывается несколько записей (вторичные сервера указываются как резервные). Если вы хотите использовать только один сервер DNS, то удалите из файла вторую строку nameserver. В качестве IP-адреса можно также указать адрес маршрутизатора локальной сети.


Предыдущий раздел: Оглавление Следующий раздел:
Настройка файла /etc/hosts   Глава 8. Делаем систему LFS загружаемой