Прокачиваем PPTP-сервер или чем заменить Poptop

в 14:07, , рубрики: CentOS, ит-инфраструктура, системное администрирование, метки:

Прокачиваем PPTP сервер или чем заменить Poptop

Введение

На сервере доступа в качестве pptp-сервера стоял проверенный Poptop последней стабильной версии (1.3.4). И все бы ничего, да вот только после повышения скоростей на тарифах производительность cервера начала проседать под увеличившейся нагрузкой. Причем очень значительно, так как этот pptp-сервер работает в режиме пользователя, а не ядра. Постоянные копирования пакетов и непосредственно с этим связанные операции переключения контекста, на выполнение которой также расходуются вычислительные ресурсы, вызвали серьезную деградацию производительности сервера при увеличившемся объеме передаваемого трафика. Необходимо было действовать.

Установка

Я уже слышал про accel-pptp и читал положительные отзывы о нем, а вот теперь настала пора попробовать его в деле.

Все действия будем производить в OC CentOS 5.7 x86_64.

Распространяется accel-pptp в исходных кодах. Сам проект хостится на SourceForge, поэтому заходим на сайт проекта и качаем свежую версию (на момент написания этих строк — 0.8.5). В ОС, где мы будем разворачивать pptp-сервер, уже должны стоять ppp, а также все необходимое для сборки из исходников, включая исходные коды и заголовочные файлы ядра:

yum install kernel-headers kernel-devel

Не забываем проверить соответствие версий установленного ядра и устанавливаемых пакетов. Они должны соответствовать, иначе — обновлять ядро или искать и ставить версии пакетов для установленного ядра. Такое происходит, когда ОС давно не обновлялась, и в репозиториях лежат пакеты более новых версий.
После этого переходим в каталог с архивом исходников и распаковываем его:

tar xjf accel-pptp-0.8.5.tar.bz

Затем переходим в распакованный каталог:

cd accel-pptp-0.8.5

Файл README содержит, в принципе, достаточно информации по требованиям к системе, а также по установке. Можно заглянуть в сам Makefile и посмотреть, что именно будет собираться и устанавливаться. Для компиляции pptp-сервера выполняем команду:

make server

Для установки сервера выполняем:

make server_install

Исполняемый файл ставится по умолчанию в каталог /usr/local/sbin
Проверяем, как собрался и установился:

/usr/local/sbin/pptpd -v

Должна появиться строчка вроде этой:

accel-pptpd v0.8.5 compiled for pppd-2.4.4, linux-2.6.18-308.4.1.el5

Здесь должны быть указаны ваша версия pppd и ядра. Но и это еще не все. В 64-битных версиях ОС разделяемые библиотеки pppd находятся в /usr/lib64/pppd/2.4.4, а при установке pptp-сервера библиотека для pppd копируется в /usr/lib/pppd/2.4.4. Копируем содержимое /usr/lib/pppd в /usr/lib64/pppd и создаем символьную ссылку на /usr/lib64/pppd (иначе соединения не будет устанавливаться и в логах будет ругань на отсутсвие библиотеки pptp.so):

ln -s /usr/lib64/pppd /usr/lib/pppd

Настройка

После этого можно корректировать конфиги.
/etc/pptpd.conf:

option /etc/ppp/options
debug
connections 498
localip 172.16.190.1
remoteip 172.16.190.2-250,172.16.191.2-250

/etc/ppp/options:

auth
refuse-pap
refuse-chap
require-mschap
require-mschap-v2
ms-dns 82.179.90.1
mtu 1400
mru 1400
nobsdcomp
novj
novjccomp
logfile /var/log/ppp/ppp.log
#plugin radius.so
#plugin radattr.so

Добавляем юзера в /etc/ppp/chap-secrets для проверки работы сервера:

test * password *

(Смысл различных опций и параметров смотрим в man`ах — там все достаточно подробно и ясно описано)
Так как этот pptp-сервер выполняет почти всю работу в режиме ядра, основной функционал заключен в модуле, который необходимо подгрузить:

depmod; modprobe pptp

Чтобы каждый раз при перезагрузке модуль подключался самостоятельно, создадим исполняемый файл /etc/sysconfig/modules/pptp.modules и впишем туда

modprobe pptp

Остается включить проброс пакетов между сетевыми интерфейсами на сервере, настроить фаервол на прием соединений на 1723 порт, а также правим маршрутизацию и nat.

Результаты (вместо итогов)

В Production`е pptp-сервер связан с RADIUS-сервером биллинговой системы для авторизации пользователей. Для наглядности приведу график загрузки CPU:
Прокачиваем PPTP сервер или чем заменить Poptop

На этом графике отчетливо видно как с начала апреля выросли показатели загрузки процессора в связи с увеличением скоростей на тарифах в два раза. Количество пользователей при этом почти не изменилось:
Прокачиваем PPTP сервер или чем заменить Poptop

Снижение количества операций переключения контекста в секунду — с 15000-25000 до 1000-2000

P.S.

Жду ваших замечаний и дополнений

Автор: alexander_pnz

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js