Linux. VPN-сервер посредством PPTP

  Linux admin

Устанавливаем PPTP сервер:

sudo "ваш менеджер пакетов" install pptpd

Редактируем файл конфигурации:

sudo vi /etc/pptpd.conf

В нём находим или исправляем имеющиеся строчки:

option /etc/ppp/pptpd-options
bcrelay eth0
logwtmp
localip "адрес, который будет у vpn сервера", например 10.1.0.1
remoteip "адреса, которые будут у vpn клиентов", например 10.1.0.2-255

Редактируем следующий конфиг:

sudo vi /etc/ppp/pptpd-options

В нём находим или исправляем имеющиеся строчки:

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
#Google #1:
ms-dns 8.8.8.8
#CloudFlare #1:
ms-dns 1.1.1.1
#Yandex #1:
ms-dns  77.88.8.8
#Google #2:
ms-dns 8.8.4.4
#CloudFlare #2:
ms-dns 1.0.0.1
#Yandex #1:
ms-dns  77.88.8.1
proxyarp
nodefaultroute
lock
nobsdcomp

Правим ещё один конфиг авторизации пользователей:

sudo vi /etc/ppp/chap-secrets

В нём настраиваем авторизацию:

client server secret IP addresses
username pptpd password *

Снова правим очередной конфиг:

sudo vi /etc/ppp/ip-up

В нём добавляем в конец:

ifconfig $1 mtu 1492

Снова правим:

sudo vi /etc/sysctl.conf

В нем нужно раскомментировать строчку:

net.ipv4.ip_forward=1

И выполняем:

sysctl -p

Смотрим, через какой интерфейс в интернет смотрит сервер:

ip addr

В моём случае eth0.

И самое главное, в моём случае — правила iptables. PPTP работает через TCP-порт 1723, он должен быть открыт. Например:

sudo vi run-iptables.sh

В него вставляем:

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.1.0.0/24 -i ppp0 -j ACCEPT #подсеть, которая выставлена в /etc/pptpd.conf
iptables --append FORWARD --in-interface eth0 -j ACCEPT

Сохраняем, выходим.

chmod +x run-iptables.sh
./run-iptables.sh
service pptpd restart
rm  ./run-iptables.sh

Как сделать перманентными правила iptables в вашей системе, ищите в интернете))

PPTP работает на порту 1723, и мы можем после этого быстро проверить, открыт ли он, выполнив на сервере:

netstat -an | grep 1723

Будет что-то вроде:

tcp   0   0   0.0.0.0:1723   0.0.0.0:*   LISTEN

Так же доступность открытого порта из интернета можно проверив при помощи командной строки в windows:

WIN+R

вписываем:

cmd

Жмем Enter

В командной строке вписываем:

telnet *.*.*.* 1723

где  *.*.*.* — ip вашего сервера.

В случае ошибки мы прочтем что-то вроде:

C:\User>telnet 1.2.3.4 1723
Подключение к 1.2.3.4…Не удалось открыть подключение к этому узлу, на порт 1723: Сбой подключения

Обязательно включаем автозагрузку pptpd сервера после перезагрузки ubuntu:

sudo systemctl enable pptpd