Самый простой вариант без шифрования.
Ставим пакет
aptitude -y install pptpd
Правим конфиг
nano /etc/pptpd.conf
Сетка любая неиспользуемая, можно повесить на лупбэке.
option /etc/ppp/pptpd-options
logwtmp
localip 172.16.0.1
remoteip 172.16.0.2,172.31.255.254
Еще 1 конфиг
nano /etc/ppp/pptpd-options
В него пишем
auth
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns # Указываем DNS-сервер провайдера
ms-dns # Указываем второй DNS-сервер провайдера
proxyarp
nodefaultroute
#debug
logfile /var/log/pptpd.log
lock
nobsdcomp
mtu 1400
mru 1400
И конфиг с логинами-паролями
nano /etc/ppp/chap-secrets
В нем создаем юзеров по типу:
Логин тип подключки пароль какой IP отдать
u001 pptpd ozQui1Yr 172.16.0.12
Тут мы для пользователя u001 указали, что он будет иметь статический айпи адрес 172.16.0.12 и пароль ozQui1Yr
Если нужно выделять пользователям динамические айпи адреса, вместо 172.16.0.12 указываем * (Звёздочку).
Разрешаем форвардинг
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
Разрешаем протокол GRE:
iptables -A INPUT -p gre -j ACCEPT
Раздаём NAT на нашу подсеть (если отдаем серые адреса и нужен доступ в инет через ВПН):
iptables -t nat -A POSTROUTING -s 172.16.0.0/12 -j MASQUERADE
Обеспечиваем автоматическую установку размера сегмента в TCP-заголовках SYN- и SYN,ACK-пакетов в соответствии с минимальным из известных нашему шлюзу значений MTU на пути следования пакета (Надеюсь правильно и более понятно рассказал):
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-ms
Запускаем демон pptpd
/etc/init.d/pptpd start
Если что не так включаем дебаг и смотрим в
tail -n 200 -f /var/log/syslog
А так создаем в винде подключение VPN тип указываем PPTP и радуемся жизни.
Тут жутко не удобный реддактор, писал по памяти, если чего забыл - звиняйте.