URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 90049
[ Назад ]

Исходное сообщение
"FreeBSD 8.1, ограничение pptp сессий"

Отправлено Vladin , 18-Окт-10 10:13 
Добрый день

Установил FreeBSD 8.1-STABLE i386 в качестве впн-сервера для
локалки. Подключение pptp обрабатывается poptop-1.3.4_2 из портов.

Проблема в том, что после подключения порядка 100 пользователей
новые подключиться не могут, на винде сразу после попытки подключения
ошибка 800 - невозможно подключиться к серверу.
После /usr/local/etc/rc.d/pptpd restart открытые сессии остаются,
количество вновь созданных не может быть более 100.
Помогает только рестарт процесса pptpd. Причем общее
количество туннелей около 300.

pptpd уже пересобрал с опцией #define CONNECTIONS_DEFAULT 1000 в defaults.h,
до этого было 100. В pptpd.conf есть строка connections 1000. Сам процесс
запущен с ключем -C 1000.

По исходникам при превышении лимита должно выдаваться
"MGR: connections limit (%d) reached, extra IP addresses ignored"
Но такого в логах не вижу.

Количество процессов, порожденных pptp, смотрю через ps -d.
Доходит до 198 и дальше не увеличивается.

# ps -d | grep '| |' | grep 'pptp' | wc -l
     198


Вот часть вывода:

62662  ??  S      0:00,45 |-- pptpctrl   : pptpd [192.168.120.19:8000 - 2180] (pptpctrl)
62663  ??  S      0:01,14 | `-- ppp: login1 tun176 х.х.х.х pptp (ppp)
62910  ??  S      0:06,15 |-- pptpctrl   : pptpd [192.168.112.169:4000 - 5880] (pptpctrl)
62911  ??  S      0:11,13 | `-- ppp: login2 tun7 х.х.х.х pptp (ppp)
63103  ??  Ss     0:00,18 |-- pptpd -C 1000
  222  ??  S      0:02,44 | |-- pptpctrl : pptpd [192.168.126.237:C000 - 2E80] (pptpctrl)
  223  ??  S      0:04,37 | | `-- ppp: login3 tun149 х.х.х.х pptp (ppp)
  236  ??  I      0:00,50 | |-- pptpctrl : pptpd [192.168.115.225:F258 - 3080] (pptpctrl)
  237  ??  S      0:01,06 | | `-- ppp: login3 tun287 х.х.х.х pptp (ppp)

Видны 2 логина от уже прибитого pptp, и два от текущего.

Последний созданный процесс
3064  ??  I      0:00,00 | |-- pptpctrl  : pptpd [192.168.126.135] (pptpctrl)

Почему-то без указания портов. Новые пользователи уже не подключаются.

В логах при нормальном подключении вижу следующее

Oct 17 13:17:39 vpn-1 pptpd[52594]: CTRL: Client 192.168.167.23 control connection started
Oct 17 13:17:39 vpn-1 pptpd[52594]: CTRL: Starting call (launching pppd, opening GRE)
Oct 17 13:17:39 vpn-1 ppp[52595]: Phase: Using interface: tun290
Oct 17 13:17:39 vpn-1 kernel: tun290: link state changed to UP
Oct 17 13:17:39 vpn-1 ppp[52595]: Phase: deflink: Created in closed state
Oct 17 13:17:39 vpn-1 ppp[52595]: Warning: iface add: ioctl(SIOCAIFADDR, 127.0.0.1 -> х.х.х.133): File exists
Oct 17 13:17:39 vpn-1 ppp[52595]: Warning: iface add: ioctl(SIOCAIFADDR, 127.0.0.1 -> х.х.х.134): File exists
Oct 17 13:17:39 vpn-1 pptpd[52594]: CTRL: Ignored a SET LINK INFO packet with real ACCMs!
Oct 17 13:17:39 vpn-1 kernel: Oct 17 13:17:39 vpn-1 pptpd[52594]: CTRL: Ignored a SET LINK INFO packet with real ACCMs!

Отключаюсь

Oct 17 13:17:42 vpn-1 pptpd[52594]: CTRL: Reaping child PPP[52595]
Oct 17 13:17:42 vpn-1 kernel: tun290: link state changed to DOWN
Oct 17 13:17:42 vpn-1 pptpd[52594]: CTRL: Client 192.168.167.23 control connection finished

Такое вижу в логах, когда подключиться невозможно

Oct 17 13:10:18 vpn-1 pptpd[52258]: MGR: Launching /usr/local/sbin/pptpctrl to handle client
Oct 17 13:10:18 vpn-1 pptpd[48714]: MGR: Reaped child 52258

Странно, но от MGR при нормальной работе сообщений нет.
На даный момент по крону делаю /usr/local/etc/rc.d/pptpd restart.

Пробовал создавать много дочерних процессов

i=0
while true; do
        i=`expr $i + 1`
        echo -n $i.
        sleep 10 &
done

2-3 тысячи создаются без проблем, т.е. ограничеия ресурсов нет.


Подскажите, кто может ограничивать количество порожденных процессов ?
Ядро или сам pptpd. И как поднять лимит ?


Содержание

Сообщения в этом обсуждении
"FreeBSD 8.1, ограничение pptp сессий"
Отправлено Vladin , 18-Окт-10 16:17 
Помогла опция deflate в pptpd.conf (или ключ -D)

По умолчанию у pptpd есть 100 адресов

#define DEFAULT_LOCAL_IP_LIST   "192.168.0.1-100"
#define DEFAULT_REMOTE_IP_LIST    "192.168.1.1-100"

когда они заканчивались, юзера видели ошибку 800