Настройка PPTP VPN на CentOS 7

В данной статье мы рассмотрим настройку VPN сервера на базе CentOS 7 и настройку клиента на Windows 10.

Задача состоит в том что нам нужно работать с IP-адреса другой страны тогда, когда это необходимо. Например, подача отчетности, либо работа с клиент банком из другой страны не приветствуется законодательно. По крайней мере в нашем случае это так. Поэтому решено работать через VPN соединение на VPS сервере, который территориально находятся там где необходимо.

Прежде, чем начать установку PPTP VPN-сервера на CentOS 7, необходимо установить репозиторий, обновить систему и установить сетевые утилиты.

Добавляем репозиторий EPEL:

EPEL (Extra Packages for Enterprise Linux) — это основанный сообществом открытый и бесплатный проект репозитория предоставляемый командой Fedora, который содержит высококачественные пакеты дополнительного программного обеспечения для Linux дистрибутивов.

yum -y install epel-release

Проверить установку репозитория можно командой:

yum repolist

Обновляем систему:

yum update && yum upgrade

Если нужно узнать версию CentOS:

cat /etc/centos-release
uname -a

Если нужно ставим:
mc — GNU Midnight Commander — файловый менеджер с текстовым интерфейсом.
nano — консольный текстовый редактор.
htop — предназначенная для вывода на терминал списка запущенных процессов и информации о них (монитор процессов). Создана, как альтернатива top.

yum -y install mc nano htop

Проверяем есть ли в системе ifconfig (в CentOS 7 minimal его по умолчанию нет)

ifconfig -a

Если command not found, то ставим net-tools:

yum -y install net-tools

В CentOS 7 вместо iptables используется служба firewalld и, если предпочтение на стороне iptables то firewalld нужно отключить.
Устанавливаем iptables:

yum -y install iptables-services

Отключаем firewalld:

systemctl stop firewalld
systemctl mask firewalld

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

yum -y install pptpd.x86_64

Редактируем системные файлы:

nano /etc/sysctl.conf

разрешаем обмен между сетевыми интерфейсами, добавим
net.ipv4.ip_forward = 1
nano /etc/pptpd.conf

добавляем например:
localip 10.0.0.1
remoteip 10.0.0.100-200  #диапазон адресов для клиентов

и проверяем наличие строки
option /etc/ppp/options.pptpd
nano /etc/ppp/options.pptpd

Добавляем внизу или меняем на
ms-dns 8.8.8.8
ms-dns 8.8.4.4
nano /etc/ppp/chap-secrets

Добавляем юзеров vpn-сервера.
Если нужно добавить следующего, то просто добавляем с новой строки.
# Secrets for authentication using CHAP
# client server secret IP addresses
username pptpd password *
username2 pptpd password2 *

Обновляем параметры:

sysctl -p

Для избежания проблем с загрузкой некоторых сайтов:

nano /etc/ppp/ip-up

перед последней строчкой вставить, в моем случае строка exit:
/sbin/ifconfig $1 mtu 1400

Настраиваем iptables:

Команда для дампа текущего состояния iptables:
iptables-save > conf.txt

nano /etc/sysconfig/iptables

Название сетевого интерфейса в моем случае: eth0

# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [853:222169]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT
-A INPUT -i eth0 -p gre -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p gre -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
-A FORWARD -i ppp+ -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o ppp+ -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Перезапускаем iptables:

systemctl restart iptables

Добавим iptables в автозагрузку:

systemctl enable iptables

Проверим статус iptables:

systemctl status iptables

Проверим правила iptables:

iptables -L

Если остались с firewalld:

nano /etc/firewalld/services/pptp.xml

Добавляем правила firewall

firewall-cmd --permanent --new-service=pptp
firewall-cmd --permanent --zone=public --add-service=pptp
firewall-cmd --permanent --zone=public --add-masquerade

И перезапускаем:

firewall-cmd --reload

Запускаем службу pptpd:

systemctl start pptpd

Добавим pptpd в автозагрузку:

systemctl enable pptpd.service

Перезагружаем сервер:

reboot

Проверим, запущен ли pptpd:

ps ax | grep pptpd

Проверим, слушается ли наш порт:

netstat -an | grep -i listen

На этом настройка PPTP VPN сервера завершена.

Настройка клиента
PPTP VPN сервера на Windows 10

Заходим в Панель управления\Сеть и Интернет\Центр управления сетями и общим доступом и выбираем Создание и настройка нового подключения или сети. Выбираем Подключение к рабочему месту. Далее выбираем Использовать мое подключение к Интернету (VPN). Указываем имя или IP-адрес сервера и название подключения (по желанию). Нажимаем Создать. 
Выбираем Свойства созданного подключения и настраиваем его.
При первом подключении запросит имя и пароль пользователя.

На этом настройка клиента PPTP VPN сервера на Windows 10 завершена.