Установка и Настройка VPN server

Устанавливаем vpn server

sudo apt-get install pptpd

 

Разрешаем IP-forwarding. Для этого редактируем файл /etc/sysctl.conf и в нём либо расскоментируем, либо добавляем следующую строку, если таковая отсутствует:

net.ipv4.ip_forward = 1

Правим файл /etc/pptpd.conf и зададим основные настройки нашего сервера:

localip 10.0.0.1
remoteip 10.0.0.80-100,10.0.0.15

Где localip — IP сервера vpn.  
Remoteip — диапазон клиентских адресов в количестве десяти (от 10.0.0.80 и до 10.0.0.100), а так же (через запятую) выделенные адреса (если таковые необходимы). В моём случае выделенный адрес один. Вы можете указать здесь любое приемлемое значение. 

Адресов нужно выделить не меньше, чем возможных одновременных соединений, лучше с небольшим запасом, так как их увеличение без перезапуска pptpd невозможно. Также находим и раскомментируем строку:

bcrelay eth1

Это позволит передавать VPN клиентам широковещательные пакеты внутренней сети. 

Также можно использовать опции listen и speed, первая позволяет указать IP адрес локального интерфейса для прослушивания входящих PPTP соединений, второй указать скорость VPN соединений в бит/с. Например разрешим серверу принимать PPTP соединения только с внешнего интерфейса:

listen X.X.X.X

Более тонкие настройки находятся в файле /etc/ppp/pptpd-options. Настройки по умолчанию вполне соответствуют нашим требованиям, однако кратко рассмотрим некоторые из них, чтобы вы имели представление о их назначении.

Секция #Encryption отвечает за шифрование данных и проверку подлинности. Данные опции запрещают использование устаревших и небезопасных протоколов PAP, CHAP и MS-CHAP:

refuse-pap
refuse-chap
refuse-mschap

Далее предписывается использовать безопасный протокол проверки подлинности MS-CHAP v2 и 128-битное шифрование MPPE-128:

require-mschap-v2
require-mppe-128

дописываем в файл /etc/ppp/pptpd-options следующие
требуем авторизацию у клиентов
auth

Осталось создать пользователей. Для этого внесем необходимые записи в /etc/ppp/chap-secrets. Записи должны иметь вид:

Если пользователь должен иметь динамический ip-адресс:
user1 pptpd password123 "*"
Если хотим привязать пользователя к ip-адрессу:
user2 pptpd password1234 "10.0.0.121"

Чтобы обеспечить нормальную работу с протоколом GRE следует загрузить дополнительные модули ядра, для этого после секции #Включаем форвардинг пакетов добавим:

#Разрешаем входящий PPTP
iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT 

#Включаем модули iptables
modprobe ip_gre
modprobe ip_nat_pptp modprobe ip_nat_proto_gre