Настройка 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 будет запущено — весь трафик будет идти через него (включая, разумеется, трафик браузера).
10.09.2018 в 19:50
Хозяйке на заметку. Тут есть более простая и поэтому правильная инструкция по настройке VPN в CentOS 6 — https://gist.github.com/freizl/5991115