LINUX.ORG.RU

pptpd превращается в fork бомбу


0

2

Есть Debian. настроил vpn (pptp) интернет по инструкции на сайте провайдера (удалил те файлы что были, создал как в инструкции)
Что бы при обрыве подключение поднималось само, в /etc/ppp/options добавил:

persist
lcp-echo-interval 30
lcp-echo-failure 5
maxfail 0

Все работает до тех пор пока с каналом провайдера все ок. Если по каким либо причинам установить подключение не получается (например если просто вытащить кабель, смоделировав проблемы у оператора) то через час получаю:
fork: ресурс времено недоступен
И около 5000 процессов pptpd!

Что я сделал не так, почему старые процессы не убиваются? Как корректно в моей ситуации поддерживать подключение?


pppd может быть не при делах, а вот кто там у тебя оберткой вокруг pppd, может запросто подымать новые pppd, не дождавшись отвала старых. Посмотри, чего у тебя вообще /etc/network/ кажет на эту тему, а вдруг ведь.

shimon ★★★★★
()

> (удалил те файлы что были, создал как в инструкции)

Даже не заметил такого важного момента. Это ты зря сделал, /etc/network пишут не полные идиоты. Лучше бы сперва смотрел — шлюз, юзернейм и прочие вещи там конфигурируются, а умолчания вменяемы.

shimon ★★★★★
()

убери эти строчки:
persist
maxfail 0

при обрыве - pppd ДОЛЖЕН останавливаться, иначе будут те-же глюки

DiMoN ★★★
()
Ответ на: комментарий от DiMoN

> при обрыве - pppd ДОЛЖЕН останавливаться, иначе будут те-же глюки

И будешь ты сидеть, как дурак без интернета. Особенно если раздающая инет машина в темном чулане.

Если это просто десктоп, я бы лично мышкой настроил Network Manager и не парился.

Другое дело вот в чем — а кто в системе принимает решение о том, что коннект состоялся или нет? Если это дается на откуп самому pppd, то persist maxfail 0 полезен и нужен. А если это какая-то обертка по таймауту решает, что pppd в нирване и стартует новый процесс, то тогда да.

И около 5000 процессов pptpd!


А ты точно не забыл про --nolaunchpppd? И еще, оно точно работает как клиент, а не сервер? Выставь debug всем на все и смотри логи.

shimon ★★★★★
()
Ответ на: комментарий от shimon

/etc/network/? не понял что там искать. там одни скрипты.

Удалил я только те файлы, что упоминались в инструкции провайдера
(/etc/ppp/ip-up /etc/ppp/ip-down /etc/ppp/chap-secrets /etc/init.d/pppd), разумеется бэкапы есть.

Network Manager не вариант. нет иксов.

--nolaunchpppd это как я понимаю в /etc/init.d/pppd добавить на start?

Да как клиент.

DeeZ
() автор топика
Ответ на: комментарий от DiMoN

> убери эти строчки:

Нормально всё со строчками. Если соединение отваливается - пробуем подключиться ещё раз. Что не так?

melkor217 ★★★★★
()

тут про nolaunchpppd говорили. можно заодно туда включить --loglevel 0, чтобы не плодились гигабайты логов о фрагментации пакетов. В итоге получится что-то типа

pty «pptp vpn.provider.domain --nolaunchpppd --loglevel 0»

melkor217 ★★★★★
()

> Что бы при обрыве подключение поднималось само, в /etc/ppp/options добавил:

вообще, зря ты эти строчки в /etc/ppp/options вписываешь. лежали бы в /etc/ppp/peers/provider лучше.

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

так я provider не обращаюсь даже. там вообще какие то странные настрйоки, и я их не менял.

DeeZ
() автор топика
Ответ на: комментарий от melkor217

восстановил из бэкапов, перенес строик в provider (pptp в моему случае).
Стартует, подключется. но почему то не прописывает это подключение как defaultroute.
Хотя опция в provider-у такая указана

DeeZ
() автор топика
Ответ на: комментарий от melkor217

заработало. но все равно плодятся если вытащить кабель:

root      2717  0.0  0.6   1944   592 ?        Ss   21:35   0:00 /usr/sbin/pptpd
root      3819  0.0  1.1   2972  1120 ?        Ss   22:18   0:01 /usr/sbin/pppd call unlim
root     12236  0.0  1.1   2972  1076 ?        Ss   22:49   0:00 /usr/sbin/pppd call unlim
root     12237  0.0  0.8   1984   824 ?        S    22:49   0:00 pptp unlim.is74.ru --nolaunchpppd
root     12245  0.0  0.5   1984   504 ?        S    22:49   0:00 pptp unlim.is74.ru --nolaunchpppd
root     12530  0.0  0.8   1984   788 ?        S    22:49   0:00 pptp unlim.is74.ru --nolaunchpppd
root     12532  0.0  0.4   1984   416 ?        S    22:49   0:00 pptp unlim.is74.ru --nolaunchpppd
root     12742  0.0  0.8   1984   784 ?        S    22:50   0:00 pptp unlim.is74.ru --nolaunchpppd
root     12744  0.0  0.4   1984   412 ?        S    22:50   0:00 pptp unlim.is74.ru --nolaunchpppd
root     12810  0.0  0.8   1984   784 ?        S    22:50   0:00 pptp unlim.is74.ru --nolaunchpppd
root     12811  0.0  0.4   1984   412 ?        S    22:50   0:00 pptp unlim.is74.ru --nolaunchpppd
root     12973  0.0  0.8   1984   812 ?        S    22:51   0:00 pptp unlim.is74.ru --nolaunchpppd
root     12978  0.0  1.3   2796  1224 ?        Ss   22:51   0:00 /bin/sh /etc/ppp/ip-up ppp0  38400 1.1.1.1 10.100.222.26 unlim
root     12980  0.0  0.5   1752   504 ?        S    22:51   0:00 run-parts /etc/ppp/ip-up.d --arg=ppp0 --arg= --arg=38400 --arg=109.191.1.3 --arg=10.100.222.26 --arg=unlim
root     12982  0.0  1.3   2796  1240 ?        S    22:51   0:00 /bin/sh /etc/ppp/ip-up.d/exim4 ppp0  38400 109.191.1.3 10.100.222.26 unlim
DeeZ
() автор топика
Ответ на: комментарий от DeeZ

> /etc/ppp/ip-up.d --arg=ppp0 --arg= --arg=38400 --arg=109.191.1.3 --arg=10.100.222.26 --arg=unlim

Вообще, как это ты так подключение устанавливаешь хитро? От простого `pon provider` ничего такого быть не должно.

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

файл

cat /etc/ppp/peers/unlim
lcp-echo-interval 60
lcp-echo-failure 5
maxfail 0
#noipdefault
replacedefaultroute
defaultroute
pty "pptp unlim.is74.ru --nolaunchpppd"
user MyUser
remotename PPTP
+chap
file /etc/ppp/options.pptp
ipparam unlim 

Подключение устанавливается через

cat /etc/network/interfaces
auto tunnel
iface tunnel inet ppp
        provider unlimr
И работает. но если отключаю кабель, то в течении часа получаю кучу строк вида:

root     20823  0.0  0.0      0     0 ?        Z    23:54   0:00 [pptp] <defunct>
root     20824  0.0  0.0      0     0 ?        Z    23:54   0:00 [pptp] <defunct>
root     20825  0.0  0.0      0     0 ?        Z    23:54   0:00 [pptp] <defunct>
root     20826  0.0  0.0      0     0 ?        Z    23:54   0:00 [pptp] <defunct>
root     20827  0.0  0.0      0     0 ?        Z    23:54   0:00 [pptp] <defunct>
root     31812  0.0  2.8   8184  2672 ?        Ss   23:50   0:00 sshd: root@pts/1

pppd второй раз запустилось видимо после /etc/init.d/networking restart

DeeZ
() автор топика
Ответ на: комментарий от DeeZ

/etc/network/interfaces процитировал с ошибкой. на самом деле в файле provider unlim (без r).
сделал так по инструкции из сыслки shimon

DeeZ
() автор топика

Странно у вас всё это. У провйдера вполне нормальная инструция, бекап можно было не мучать. Попробуйте добавить «holdoff 30», чтобы была хоть какая то пауза между попытками установить соединение. Если не поможет, можно сделать костыль в виде скрипта, который «убивает» все pptp и вызывать этот скрипт через опцию connect демона pppd.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.