В Срд, 12/03/2008 в 13:44 +0200, Alexey Boyko пишет: > В сообщении от середа, 12-бер-2008 Покотиленко Костик написал(a): > > > Как делать надо: правила на ethernet вызывать через up/pre-up и > > down/post-down в /etc/network/interfaces или /etc/network/if-*.d, > > правила на ppp вызывать через /etc/ppp/ip-*.d. У меня так всё чётко > > работает. > > Работает. Знаю. Но именно это я и назвал кривой архитектурой, что хуки > езернета в одном месте, > а хуки pppd в другом месте. А опции post-up,post-down из > /etc/network/intefaces (Полезные для одно- двух- строчных > обработчиков для ppp не имеют смысла) > Хотя должен признать, в дебиане это сделано наиболее прямо из того, что я > видел
Не могу сказать что такая архитектура мне очень нравится, но имеем то что имеем. Другого я так понимаю просто нет. > > По поводу того, что ifdown'ом интерфейс положен, а ppp продолжает > > работать - это результат неправильной настройки, такого быть не должно. > > Сам подумай, сколько времени надо pppd чтобы разорвать соединение и > > выйти... > > А я его не опускал. В interfaces стоит auto ppp0 и он при старте поднимается. > И при обрыве перезванивает. Но в какой-то момент, когда мне нужно вручную > перезапустить получаю то, что показал. Происходит это сразу после запуска > или потом в какой-то момент - я не проверял. Вот и надо засечь на чём облом происходит. Во первых попробовать вычислить в каких случаях ifup/ifdown чисто отрабатывает, а в каких нет. И посмотреть на разницу между логами двух случаев. > > Возможные причины: если какой-то скрипт вызываемый по pre-up/up или > > down/post-down возвращает не нулевое значение то вся процедура > > поднятия/опускания (ifup iface или ifdown iface) прерывается, но то, что > > на этот момент уже сделано - остаётся в силе. > > Вот это дельный совет. Но было бы хорошо, если бы был предусмотрен какой-то > механизм отката в случае ошибки. > Не подскажешь, как лучше найти который скрипт выдаёт ошибку? Готового механизма нет. Это в винде всё готовое, зато шаг в сторону - расстрел на месте! Середины пока нет :( Как найти "плохой скрипт": - методом исключения - использовав скрипт-прокладку, который вызывает нужный скрипт, пишет код возврата в лог, а сам всегда возвращает 0. Этот способ мне больше нравится даже для повседневной работы, т.к. руками не обязательно потом подчищать. > > Но повторяю, если скрипты отлажены, всё работает нормальным образом. С > > pppd разберись, должен выходить мгновенно. > > вот опустил вручную, потом опять поподнимал/поопускал. > > # ifdown ppp0 > ifdown: interface ppp0 not configured > # killall pppd > # ifup ppp0 > # ip link |grep ppp0 > 2214: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,10000> mtu 1500 qdisc pfifo_fast > qlen 32 > # ifdown ppp0 > # ip link |grep ppp0 > # ifup ppp0 > # ip link |grep ppp0 > 2215: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,10000> mtu 1500 qdisc pfifo_fast > qlen 32 > > То есть после ручной починки - работает. Как долго проработает - не знаю. > > > Может конфиги покажешь? > > конфиги чего? > > # cat /etc/ppp/peers/my_provider > name vpn_username > password vpn_password > pty "pptp vpn.server --nolaunchpppd" > noauth > nodefaultroute > holdoff 24 > persist > maxfail 0 > lock > ipparam provider > unit 0 > logfile /var/log/pppd.log > > # cat /etc/network/interfaces > ... > iface ppp0 inet ppp > provider my_provider > ... > > после подключения лог заканчивается строками: > ... > Script /etc/ppp/ip-up started (pid 21253) > Script /etc/ppp/ip-up finished (pid 21253), status = 0x0 > ... С pptp я не работал, может кто другой подскажет логику работы. Но на мой взгляд для начала тебе надо разобраться почему при опускании интерфейса не выходит pppd. Если я не ошибаюсь ifup/ifdown для интерфейсов ppp пользуется командами pon/poff, на которых тебе будет легче использовать для отладки. -- Покотиленко Костик <[EMAIL PROTECTED]> -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

