OpenRC и управление сетевыми службами [SOLVED]
Добрый день! Извиняюсь, если уже было... Использую OpenRC 0.3, два сетевых интерфейса на ноуте (x86) и хочу _автоматически_ запускать сетевые службы (типа ntp-client и sshd) после установки связи с Интернетом.
Scheduling в OpenRC почему-то не работает с wlan0, но успевает отрабатывать с eth0. Оба девайса настраивал с ifplugd, но это не помогло. :-(((
Посоветовали тут воткнуть сетевые службы в /etc/conf.d/local.start, что я и сделал (после некоторой паузы при наличии пинга), но этот способ оказался не очень... Авторизация по wlan0 не всегда успевает проходить быстро, а кеды стартуют при таком подходе с "чёрным экраном" (нужно пошевелить мышь или что-нть нажать).
Подумал написать небольшого демона (rc script), который будет стартовать указанные службы при поднятии определённых интерфейсов, останавливать при опускании интерфейсов, а также работать в паре с iflugd, выбирая предпочтительные интерфейсы, если это определено в конфигурации. Последнее иногда полезно иметь, чтобы связь с сетью при наличии более одного поднятого интерфейса осуществлялась только через один.
Собс-но два вопроса. 1. есть ли решение проблемы scheduling в OpenRC при долгой авторизации по wireless? 2. Не будет ли предлагаемый демон очередным "велосипедом" (имеется ввиду наличие схожего по функционалу готового решения)?
- Для комментирования войдите или зарегистрируйтесь
Не знаю как на счёт ifplugd,
Не знаю как на счёт ifplugd, но моя сетевая с netplug работает прекрасно под openrc-3*. Все сетевые службы запускаются и останавливаются при появлении или отсутствии сети. Пусть и по локалке. Так и пишется : служба будет запущена после запуска net.eth0. Это касается net.eth0+dhcpcd (netplug) или статического адреса. И наблюдал лично для samba(+) ntp-client(+) ntpd(+) sshd(+) lighttpd(+) rsync(-) xinetd(- да и зачем останавливаться) dante-sockd(+).
Тоже самое для
Тоже самое для net.eth0+dhcpcd (ifplugd).
А вот для net.wlan0+dhcpcd (ifplugd), к сожалению, не так :(
OpenRC пишет, что "будет запущено", но не запускает (sshd/ntp-client).
О том и сабж...
с wpa_supplicant то же самое?
с wpa_supplicant то же самое?
ДА,
Это всё с wpa_supplicant из-за долгой авторизации. С ifplugd и без него - одинаково. Точка доступа бывает сильно загружена (всего три ноута и два КПК, в основоном - сидирование по KTorrent). Поэтому иногда авторизация проходит за 5-10 секунд, а иногда и 20 недостаточно.
Вот пример конфигурации -
Вот пример конфигурации - ifplugd только на eth0, на wlan0 - только wpa_supplicant.
/etc/conf.d/net:
В результате - такой вот startup screen:
Хотя из него видно, что sshd успешно стартанул, это не правда. Он не работает даже после поднятия интерфейса. Кстати, таковое ещё не свидетельствует о наличии рабочего соединения. Например, мой роутер может успешно работать, в то время как провайдер может сломаться. Что иногда и происходит. Было бы логичней пускать сетевые службы при _достижении соединения_.
Кроме того, сетевой демон вполне может оказаться полезным для типичного ноутбука. Имея два интерфейса, как правило, используется лишь одна сеть. И, в основоном, в квартире используется wifi. Но если приспичит подключиться по ethernet, который быстрее и надёжней, wifi должен автоматически отключаться.
SOLVED!
postup() {} в /etc/conf.d/net конечно же решает сразу все проблемы. Чёт я сразу не сообразил. :-(
спасибо за наводку - сам
спасибо за наводку - сам мучаюсь )
седня поковыряюсь...
?
а что необходимо вписать?
postup() {
return 0
}
?
сам через dhcpcd запускаю, так так
* WARNING: net.eth0 has started, but is inactive
* WARNING: netmount is scheduled to started when net.eth0 has started
А посмотреть в /etc/conf.d/net.example !? ;)
Вобще-то что Вам надо, то и вписываете.
Я там просто сервисы нужные стартую /etc/init.d/XXXXX start
Если делать их только зависимыми по правилам OpenRC или baselayout -
то ничего не получится, т.к. после поднятия службы коннекта ещё нет,
а запуск следующих вызывает ошибку. postup() запускает нужные мне
службы вместо меня, после поднятия любого интерфейса,
дожидаясь предварительно прохождения пинга...
так это баг?
баг?
Как раз не баг а фича =)))
Вай-фай например... служба запущена? Запущена. Коннект установлен? Нет. Если от службы зависят другие службы, они запускаются по факту запуска службы, а не по факту чего-то там ещё. Например, обычно sshd пытается стартовать после запуска net.wlan0. А интерфейсу IP-шник по DHCP будет присвоен только после аутентификации на AP. Что всегда по-разному бывает... может 5 секунд уйти на это, а при плохой связи и все 40. Потом, OpenRC так скоренько "пролетает", что опрос запущено/нет производится в период запуска других служб. Когда запущена поселеняя, этот опрос прекращается. Если юзать только механизм зависимостей служб, наблюдается такая картина: net.wlan0 "ушла в background" (пытается аутентифицироваться), все от неё зависящие - тоже. Графика загрузилась - через какое-то время поднялся вай-фай. А те, что от него зависели - фигушки! Баг это или фича в OpenRC? Не знаю, наверное баг :) Но указанный способ решает проблему.
получается что postup() {}
получается что postup() {} перезагружает зависимые процессы? так?
объясните мне, пожалуйста, что делать?
http://www.gentoo.org/doc/ru/handbook/handbook-x86.xml?part=4&chap=5
тут только про preup и predown написано
rc_depend_strict="NO"
Если нужно чтоб службы запускались независимо от того поднялся или нет интерфейс
то идем в rc.conf находим
rc_depend_strict="YES"
и меняем его на "NO"
спасибо, но это я уже давно
спасибо, но это я уже давно понял, не помогает.
и уже как вижу /etc/conf.d/net для eth0 не нужен
кто-нибудь может объяснить, как заставить подгрузить eth0
Это не помогло в моём случае :(
И комментарий в /etc/conf.d/rc про эту опцию говорит несколько о другом, совершенно.
А вот рабочее решение, которое я вчера сюда выложил, куда-то пропало. :(
Вопрос куда и почему? Вроде не матерился... :)
робототехника?:ok: перенос темы: ok
создал для своей проблемы отдельную тему
http://www.gentoo.ru/node/14055
жду решений shutdown -hP X
ры
На работе устаёте?
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.