Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gentoo_x86_Handbook.doc
Скачиваний:
26
Добавлен:
19.09.2019
Размер:
924.16 Кб
Скачать

2.B. Сетевые зависимости

Инициализационные скрипты в /etc/init.d могут зависеть от специфического сетевого интерфейса, или просто от net. Все сетевые интерфейсы в инициализационной системе Gentoo дают то, что называется net.

Если в /etc/rc.conf переменная rc_depend_strict=«YES», то все сетевые интерфейсы, которые дают net должны быть активными, прежде чем зависимость на «net» будет считаться выполненной. Другими словами, если у вас есть net.eth0 и net.eth1, и инициализационный скрипт зависит от «net», то оба должны быть включены.

С другой стороны, если rc_depend_strict=«NO», то зависимость «net» считается выполненной, если в этот момент хотя бы один сетевой интерфейс работает.

Но что будет с net.br0, который зависит от net.eth0 и net.eth1? net.eth1 может быть беспроводным или PPP-устройством, которое должно быть сконфигурировано, прежде чем добавить его к мосту. Это не может быть сделано в /etc/init.d/net.br0, так как это просто символическая ссылка на net.lo.

Ответ заключается в определении настройки rc_need_ в /etc/conf.d/net.

Код 2.1: Зависимость net.br0 в /etc/conf.d/net

rc_need_br0="net.eth0 net.eth1"

Этого, однако, недостаточно. Инициализационные сетевые скрипты Gentoo используют виртуальную зависимость, называемую net, чтобы проинформировать систему, когда есть сеть. Ясно, в вышеприведенном случае, сеть можно обозначить как работающую только когда net.br0 будет запущена, а не все остальные. Поэтому это нужно тоже записать в /etc/conf.d/net.

Код 2.2: Обновляем виртуальные зависимости и разрешения для сети

rc_net_lo_provide="!net"

rc_net_eth0_provide="!net"

rc_net_eth1_provide="!net"

Для более детального обсуждения зависимостей, проконсультируйтесь с разделом «Инициализационные скрипты» данной книги. Больше информации о /etc/rc.conf приведено в примерах данной главы.

2.C. Имена и значения переменных

Имена переменных динамические. Обычно они соответствуют структуре variable_${interface|mac|essid|apmac}. Например, переменная dhcpd_eth0 содержит значение опций dhcpd для eth0, а dhcpcd_essid содержит значение для опций dhcpd, когда какой-то интерфейс соединяется с ESSID «essid».

Однако не существует явного и четкого правила, которое говорит, что интерфейсы должны обязательно называться ethx. Вообще, многие беспроводные интерфейсы имеют имена вроде wlanx, rax, как и ethx. Также, некоторые интерфейсы, определенные пользователем, такие как мосты, могут быть с любым именем, например foo. Чтобы сделать жизнь еще интереснее, беспроводные точки доступа могут иметь имена с не-буквенно-цифровыми символами в них — это важно, так как вы можете конфигурировать параметры сети на каждый ESSID.

Проблема в том, что Gentoo использует переменные bash для сети, а bash не может использовать ничего, кроме английских букв и цифр. Чтобы обойти это ограничение, мы изменяем любой символ, который не является английской буквой или цифрой на символ _.

Другой проблемой bash является содержимое переменных — некоторые символы нужно «защитить». Это можно сделать добавив символ \ перед символом, который необходимо защитить. Следующий список символов нужно защищать таким образом - ", ' и \.

В следующем примере мы используем беспроводной ESSID, так как они могут содержать больше всех символов. Мы будем использовать ESSID My "\ NET:

Код 3.1: Пример имени переменной

(Это будет работать, но такой домен не является правильным)

dns_domain_My____NET="My \"\\ NET"

(Данная команда устанавливает домен DNS в My "\ NET, когда беспроводная

карта соединяется с точкой доступа, ESSID которой My "\ NET)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]