Настройка VPN-сервера с PPTP-подключением на CentOS 6

В контексте последних событий, типа запрета ВК, ОК и Яндекса в/на Украине, думаю, всё большее количество людей захотят использовать VPN. Можно купить у какого-нибудь международного провайдера готовый доступ, но также можно и настроить VPN на своём VPS, ведь цены на виртуальные серверы в России стартуют от 150 руб. в месяц. О том, как по-быстрому настроить VPN на CentOS я далее и расскажу. Статья будет для новичков, поэтому всё задумано максимально просто, включая сам PPTP-протокол (к которому могут быть вопросы в плане безопасности, но вряд ли могут быть вопросы в плане простоты настройки подключения на клиенте под Windows).

Ставим необходимые пакеты:

yum -y install pptpd curl bind-utils

Строго говоря, по-настоящему необходим вам будет только pptpd, остальные программы далее для удобства используются (т.е. если вы новичок, то вам перечисленные пакеты помогут узнать сетевой интерфейс и IP-адрес сервера).

Узнаём свой внешний IP-адрес:

curl ifconfig.me

Узнаём название сетевого интерфейса в системе, к которому привязан этот адрес:

route | grep '^default' | grep -o '[^ ]*$'

Для простоты будем считать, что адрес у нас вышел 185.125.1.2, а интерфейс eth0

Редактируем файл /etc/pptpd.conf, добавляем в его конец:

localip 185.125.1.2
remoteip 10.0.0.100-200

Первая строка здесь указывает IP-адрес на котором будет работать PPTP-сервер, этот адрес мы узнавали в начале инструкции. Вторая строка здесь указывает диапазон IP из которого будут выдаваться адреса, подключающимся клиентам.

Далее редактируем /etc/ppp/chap-secrets, добавляем туда строки с аккаунтами пользователей (каждый аккаунт на отдельной строке). Строка через пробелы или табуляцию содержит следующие данные:

  • Имя пользователя
  • Имя сервера (в нашем случае pptpd)
  • Пароль пользователя
  • Набор IP-адресов, с которых клиенту разрешено подключаться (в нашем случае * разрешает подключаться с любого IP)

В общем, ваш файл может выглядеть примерно так:

# Secrets for authentication using CHAP
# client server secret IP addresses
antoshka pptpd ytfiHGmG9Fj *
natashka pptpd mHiufgaJh7v *

Теперь редактируем файл /etc/ppp/options, там указываем:

ms-dns 77.88.8.8
ms-dns 77.88.8.1
#ms-dns 8.8.8.8
#ms-dns 8.8.4.4
lock
name pptpd
require-mschap-v2
require-mppe-128

В примере на первых строках используются DNS-серверы Яндекса, а ниже решетками закомментированы DNS-серверы Google. Какие использовать вам — решайте сами.

Запускаем PPTP-сервер:

service pptpd start

Проверяем командой netstat -alpn | grep :1723, что сервер запустился и ждёт соединений. Если всё идёт хорошо, то вы должны увидеть примерно такой вывода:

# netstat -alpn | grep :1723
tcp  0  0 0.0.0.0:1723  0.0.0.0:*  LISTEN  8291/pptpd

Редактируем файл /etc/sysctl.conf, устанавливаем там:

net.ipv4.ip_forward = 1

И запускаем sysctl -p для применения изменений.

Добавляем правило для NAT в фаервол (здесь мы будем использовать имя сетевого интерфейса, которое узнавали в начале статьи):

service iptables start
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save
service iptables save
chkconfig iptables on

Перезапускаем сервис:

service pptpd restart-kill && service pptpd start

Кстати, именно при таком перезапуске (с использованием restart-kill) будут отключены все текущие клиенты.

Добавляем его в автозапуск:

chkconfig pptpd on

Теперь, чтобы подключиться к VPN-серверу в Windows, надо создать новое подключение и выбрать:

Далее указать адрес сервера (который в нашем примере 185.125.1.2), логин и пароль пользователя (мы их прописывали /etc/ppp/chap-secrets). Пока подключение в Windows будет запущено — весь трафик будет идти через него (включая, разумеется, трафик браузера).



Пока только один комментарий на запись «Настройка VPN-сервера с PPTP-подключением на CentOS 6»:

  1. Хозяйке на заметку. Тут есть более простая и поэтому правильная инструкция по настройке VPN в CentOS 6 — https://gist.github.com/freizl/5991115

Прокомментируйте: