ansmirnov

VPN (PPTP): перестает работать Интернет под нагрузкой

Теги: HowTo, Debian, Problem

При использовании пакета pptp-linux возникает проблема следующего характера. При скачивании большого объема информации на высокой скорости, например, через торрент, VPN соединение перестает отправлять и принимать пакеты. При этом соединение не разрывается, но Интернет не работает.

В качестве решения предлагается увеличить значение MISSING_WINDOW в файле pqueue.h с 300 до 6000 и пересобрать пакет.

В Debian эту операцию можно произвести следующим образом.

Создаем рабочий каталог и переходим в него.

# mkdir ~/pptp-linux
# cd ~/pptp-linux

Скачиваем исходные коды пакета pptp-linux.

# apt-get source pptp-linux

Определяем версию пакета. Для этого необходимо выполнить команду ls. В выводе команды будет только один каталог. На момент написания статьи, последняя версия пакета -- pptp-linux-1.7.2.

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

# cd pptp-linux-1.7.2

Редактируем файл pqueue.h. Находим строчку

#define MISSING_WINDOW 300

и заменяем значение 300 на 6000.

Устанавливаем необходимые для сборки пакета зависимости:

# apt-get build-dep pptp-linux

Собираем пакет:

# dpkg-buildpackage -rfakeroot

После выполнения этой команды в родительском каталоге появится файл pptp-linux_1.7.2-7-i386.deb (для другой версии пакета и архитектуры имя будет другим). Перейдем в родительский каталог командой

# cd ..

Удаляем старый пакет pptp-linux:

# apt-get remove pptp-linux

В выводе этой команды следует обратить внимание на текст после строчки

Пакеты, которые будут УДАЛЕНЫ:

Эти пакеты зависят от пакета pptp-linux и не смогут работать без установленного pptp-linux. Поэтому они также будут удалены. Следует скопировать список этих пакетов для последующей установки.

Устанавливаем собранный пакет:

# dpkg -i pptp-linux_1.7.2-7-i386.deb

После чего следует восстановить удаленные пакеты командой

# apt-get install ...

Вместо многоточия необходимо подставить список пакетов, скопированных на предыдущем шаге за исключением пакета pptp-linux.