Сразу оговорюсь, что для того, чтоб не замарачиваться на сторонних проблемах я буду использовать ядро с уже включённым в него модулем ppp_mppe, тобишь ядро 2.6.15 или старше... Сами процессы сборки в данной статье описаны не будут, ввиду разных вкусов сборки, единственное что быдет описываться, так это какие параметры при сборке пакетов просто обязаны присутствовать...

Вобщем начнём.

Нам понадобятся: ядро, ppp, pptpd 

Собираем ядро с поддержкой mppe шифрования. Далее собираем ppp, также с потдержкой mppe(параметр включен по умолчанию), и только после этого собираем pptpd :)...

После сборки и установки переходим к редактированию конфигов...

pptpd.conf:

debug #очень полезная опция на стадии отладки

option /etc/ppp/options.pptpd # путь до следующего конфига

localip 192.168.2.254 #адрес сервера внутри VPN

remoteip 192.168.2.2-252 #диапазон адресов для удалённых машин

 options.pptpd:

auth

debug #полезная опция на стадии отладки

require-chap

require-mschap

require-mschap-v2

local

defaultroute

192.168.2.254:

ms-dns XX.XX.XX.XX #адрес локального, либо глобального DNS сервера

require-mppe #включаем потдержку шифрования

require-mppe-40

require-mppe-128

chap-secrets:

# имя юзера - сервер - пароль - адресс по умолчанию 

test * test *

 стартуем сервис pptpd и проверяем возможность подключения: под хрёй создаём подключение на рабочем столе и смотрим на результат, при первой попытке конекта может вылезти ошибка 800, не обращая на неё внимания закрываем все окна, открываем заново окно подключения и пробуем снова... Если не получилось подключиться смотрим логи...

Далее надо перерулять трафик...

echo "1" > /proc/sys/net/ipv4/ip_forward

echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

echo "1" > /proc/sys/net/ipv4/ip_dynaddr

iptables -A INPUT -p ALL -j ACCEPT

iptables -A FORWARD -p ALL -j ACCEPT

iptables -A OUTPUT -p ALL -j ACCEPT

iptables -t NAT -A POSTROUTING -o eth0 -j MASQUERADE # куда перенаправляем трафик

iptables -I POSTROUTING 1 -t NAT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1024 # для большей совместимости с хрёй

Вот вроде и всё... Конечно сюда не мешало бы прикрутить какой нить биллинг, но это уже как нить в следующий раз...

PS: Данная статья не притендует на полноту описания и его коректность, но, на данный момент, у меня нет возможности всё это расписать более подробно и коректно... :( Со временем эта статья будет подправляться и дополняться, а сейчас... просто рабочие конфиги...