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

sudo apt install pptpd

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

sudo nano /etc/pptpd.conf

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

option /etc/ppp/pptpd-options
bcrelay eth0
logwtmp
localip 10.1.0.1
remoteip 10.1.0.2-255

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

sudo nano /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 nano /etc/ppp/chap-secrets

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

client server secret IP addresses
username pptpd password *

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

sudo nano /etc/ppp/ip-up

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

ifconfig $1 mtu 1492

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

sudo nano /etc/sysctl.conf

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

net.ipv4.ip_forward=1
sysctl -p

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

ifconfig

В моём случае eth0 (да и в большинстве других случаев, думаю, тоже).

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

sudo nano 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 как описано ниже:

Устанавливаем:
sudo apt install netfilter-persistent iptables-persistent

Правила хранятся в следующих файлах и применяются при загрузке операционной системы.
Для IPv4 используется файл:
/etc/iptables/rules.v4
Для IPv6 используется файл:
/etc/iptables/rules.v6

Варианты использования: service netfilter-persistent {start|restart|reload|force-reload|save|flush}

После настройки правил как нужно, сделать
service iptables-persistent save
и при следующей загрузке они будут применены.

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

Дополнительно можно почитать в следующих статьях: