[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: pptp client restart



В Срд, 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, на которых тебе будет легче использовать для отладки.

-- 
Покотиленко Костик <casper@meteor.dp.ua>


Reply to: