Устанавливаем PPTP сервер:
1 |
sudo apt install pptpd |
Редактируем файл конфигурации:
1 |
sudo nano /etc/pptpd.conf |
В нём находим или исправляем имеющиеся строчки:
1 2 3 4 5 |
option /etc/ppp/pptpd-options bcrelay eth0 logwtmp localip 10.1.0.1 remoteip 10.1.0.2-255 |
Редактируем следующий конфиг:
1 |
sudo nano /etc/ppp/pptpd-options |
В нём находим или исправляем имеющиеся строчки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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 |
Правим ещё один конфиг авторизации пользователей:
1 |
sudo nano /etc/ppp/chap-secrets |
В нём настраиваем авторизацию:
1 2 |
#client server secret IP addresses username pptpd password * |
где username — имя пользователя, pptpd — имя подключения, password — пароль (подробнее ), * — ip адрес
Например:
1 |
user007 pptpd MySimpePassword * |
Снова правим очередной конфиг:
1 |
sudo nano /etc/ppp/ip-up |
В нём добавляем в конец:
1 |
ifconfig $1 mtu 1492 |
Снова правим:
1 |
sudo nano /etc/sysctl.conf |
В нем нужно раскомментировать строчку:
1 |
net.ipv4.ip_forward=1 |
Нижеуказанная команда внесет все изменения, которые содержатся в файле /etc/sysctl.conf:
sysctl — в BSD и Linux — утилита, предназначенная для управления параметрами ядра на лету
1 |
sysctl -p |
Смотрим, через какой интерфейс в интернет смотрит сервер:
1 |
ifconfig |
В моём случае eth0 (да и в большинстве других случаев, думаю, тоже).
И самое главное, в моём случае — правила iptables. PPTP работает через TCP-порт 1723, он должен быть открыт. Например:
1 |
sudo nano run-iptables.sh |
В него вставляем:
1 2 3 4 5 |
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #eth0 -- название вашего внешнего сетевого интерфейса 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 #eth0 -- название вашего внешнего сетевого интерфейса |
узнать название внешнего сетевого интерфейса можно командой ifconfig (у него значение inet будет равняться вашему внешнему ip адресу, если вы не за натом, как бывает на amazon AWS и тп.)
Сохраняем, выходим.
Выполняем
1 2 3 4 |
chmod +x run-iptables.sh ./run-iptables.sh service pptpd restart rm ./run-iptables.sh |
Добавляем автоматическую загрузку правил iptables как описано ниже:
Устанавливаем:
1 |
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 netfilter-persistent {flush, force-reload, reload, restart, save, start}
flush – очистить правила
reload – загрузить из файлов
save – сохранить в файлы
PPTP работает на порту 1723, и мы можем после этого быстро проверить, открыт ли он, выполнив на сервере:
1 |
netstat -an | grep 1723 |
Будет что-то вроде:
1 |
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:
1 |
sudo systemctl enable pptpd |