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

4.D. Определение конфигурации сети на каждый essid

Иногда вам нужен статический IP, когда вы соединяетесь с ESSID1, и нужен DHCP, когда вы соединяетесь с ESSID2. Вообще, большинство переменных модуля может быть определено на каждый ESSID. Вот как это делается:

Заметка: Это будет работать если вы используете WPA Supplicant или Wireless Tools

Важно: Вам понадобится вспомнить как именуются переменные (раздел 2.c выше).

Код 4.1: Изменить настройки сети для каждого ESSID

config_ESSID1="192.168.0.3/24 brd 192.168.0.255"

routes_ESSID1="default via 192.168.0.1"

config_ESSID2="dhcp"

fallback_ESSID2="192.168.3.4/24"

fallback_route_ESSID2="default via 192.168.3.1"

# Мы можем определить серверы имен и другие вещи тоже

# Заметка: DHCP переопределит эти значения, если ей не сказать так не делать

dns_servers_ESSID1="192.168.0.1 192.168.0.2"

dns_domain_ESSID1="some.domain"

dns_search_domains_ESSID1="search.this.domain search.that.domain"

# Вы переопределяете MAC-адрес точки доступа

# Это полезно, если вы переходите в различные места, у которых

# одинаковый ESSID

config_001122334455="dhcp"

dhcpcd_001122334455="-t 10"

dns_servers_001122334455="192.168.0.1 192.168.0.2"

5. Добавление функциональности

5.A. Хуки стандартных функций

Четыре функции может быть определено в /etc/conf.d/net, и они будут вызваны в течение операций start/stop. Эти функции вызываются с наименованием интерфейса, так что одна функция может контролировать несколько адаптеров.

Возвращаемые значения для функций preup() и predown() должны быть 0 (удача), чтобы показать, что конфигурация или деконфигурация интерфейса может быть продолжена. Если preup() возвратит ненулевое значение, то конфигурация интерфейса будет отменена. Если predown() возвратит ненулевое значение, то интерфейсу не будет разрешено продолжить деконфигурацию.

Возвращаемые значения для функций postup() и postdown() игнорируются, так как если они сообщат о неудаче, делать уже нечего.

${IFACE} устанавливается в имя интерфейса, который необходимо включить/выключить. ${IFVAR} это ${IFACE}, сконвертированный в такое имя, которое разрешает bash.

Код 1.1: Примеры функций pre/post up/down в /etc/conf.d/net

preup() {

# Протестируем сигнал на интерфейсе, прежде чем его включать. Это

# работает только на некоторых сетевых адаптерах и требует установленного

# пакета ethtool

if ethtool ${IFACE} | grep -q 'Link detected: no'; then

ewarn "No link on ${IFACE}, aborting configuration"

return 1

fi

# Вернем 0, если все получилось

return 0

}

predown() {

# По умолчанию скрипт проверит NFS root, и запретит выключать

# интерфейсы в этом случае. Помните, что если вы определите

# функцию predown(), вы переопределите эту логику. Вот она,

# если вы все еще ее хотите.

if is_net_fs /; then

eerror "root filesystem is network mounted -- can't stop ${IFACE}"

return 1

fi

# Возвратим 0 если все нормально

return 0

}

postup() {

# Данная функция может использоваться, например, для регистрации

# с помощью сервиса динамического DNS. Другой возможностью будет

# послать/получить почту как только интерфейс будет включен

return 0

}

postdown() {

# Эта функция здесь больше для комплектности. Я не думаю, что

# что-то полезное можно сделать с помощью нее пока ;-)

return 0

}

Заметка: Для более подробной информации о написании своих собственных функций, прочитайте /usr/share/doc/openrc-*/net.example.bz2.

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