>[оверквотинг удален]
>
>foreach (`$ppp`)
>
>{
>
>($a1,$a2,$a3,$pid)=split(' ',$_);
>
>`kill -9 $pid`;
>
>} Решается проблема по другому.
Необходимо, чтобы в ppp.conf присутствовали следующие строки
pppoe-in:
set timeout 0
lcp-echo-interval 20
lcp-echo-failure 2
Про эти опции написанов PPP-HOWTO следующее:
#lcp-echo-interval <n>
# Если эта опция назначена, pppd будет отправлять кадр LCP echo-request
# удаленной стороне каждые n секунд. Под Linux, echo-request отправляется
# когда пакеты не принимаются от удаленной стороны n секунд. Обычно
# удаленная сторона должна отвечать на echo-request отправкой echo-reply.
# Эта опция может быть использована с опцией lcp-echo-failure для
# определения что удаленная сторона больше не соединена.
#lcp-echo-failure <n>
# Если эта опция задана, pppd будет считать, что связи с peer нет, если n
# LCP echo-requests отправлены без приема правильных LCP echo-reply.
# Если это случилось, pppd завершит связь. Использование этой опции
# требует ненулевого значения для параметра lcp-echo-interval.
# Эта опция может быть использована, чтобы разрешить pppd завершать связь,
# если физическое соединение отсутствует (напр, модем бросил трубку) в
# ситуациях, когда доступны линии управления модемом.
В результате на все поднятые интерфейсы tun каждые 20 сек. будут посылаться LCP-кадры для контроля состояния соединения. Если ответов для двух подряд посланных кадров LCP нет, то соединение считается потерянным, связь будет завершена, а интерфейс tun освобожден. Зависания нет.