Linux настройка pptp сервера

Обновлено: 03.07.2024

Таких строк можно написать много, по количеству пользователей. Пароль лежит в открытом режиме, не используйте пароли, которые вы используете для критических сервисов.

В нашем случае это будет

ivan pptpd ivanidanilo *

Можем запустить pptpd командой

systemctl pptpd start

А вот так надо сделать, чтобы pptpd запускался автоматически.

sudo systemctl enable pptpd

3. Настраиваем сеть

Теперь нам надо настроить сеть.

Во первых, теперь наш компьютер становится роутером и ему надо сказать что можно через себя пропускать пакеты.

В файле /etc/default/ufw

Находим DEFAULT_FORWARD_POLICY="DROP" и меняем на строчку

В файле /etc/ufw/sysctl.conf находим net/ipv4/ip_forward=0 и меняем на строчку

В файле /etc/sysctl.conf находим строчку net.ipv4.ip_forward и меняем (раскомменчиваем) на

Применяем все изменения по политике

Во-вторых, займемся файрволлом

1. если не установлен, устанавливаем ufw (скорее всего будет установлен)

Заодно поставим ssh сервер (удаленно ходить в командную строчку)

2. Теперь начинаем работать с ufw

sudo ufw enable

и добавим правил

Пропускать авторизацию pptp

Смотрим что получилось командой

Должны появиться правила

Но, у сожалению, это еще не все. Нам надо добавить правило, чтобы ufw пропускал протокол GRE (специальный протокол для туннеля) и указать что надо все что приходит из туннеля "заворачивать (NAT) в внешний IP и выпускать наружу. Сделаем это.

В самом начале вставляем такой вот код для NAT

Теперь будем внимательны

вместо ens3 надо указать имя вашей сетевой карты, которая "смотрит" в интернет. Сейчас научимся узнавать имя карты.

Выполняем команду ifconfig (если система ругнется, то надо поставить пакет net-tools

sudo apt-get install net-tools

Вот так у меня выглядит ifconfig

Слева "имена" интерфейсов (в кружочках). Как узнать наш. Во первых, по выделенному ip-адресу (его должен был дать провайдер). У меня он замазан красным, но он там есть. Во-вторых через интерфейс скрее всего идет трафик (выделено зеленым). Итак, мой интерфейс это enp2s0.

Тогда у нас в итоге получается вот такой вот код

-A POSTROUTING -s 172.16.0.0/24 -o enp2s0 -j MASQUERADE

Теперь перезапускаем ufw командой

sudo ufw disable && sudo ufw enable

Обращу отдельное внимание на "-F" - этот параметр не приводится в инструкциях, которые я читал, а без него правила nat начинают дублироваться. Смысл в том, что если вы сначала забыли поменять название интерфейса и оставили eth0, то у вас прописалось неверное правило. Вы перезапустили ufw, а потом вспомнили\исправили и перегрузили еще раз. Без "-F" старое правило не сотрется будет стоять перед новым и ничерта работать не будет.

Чтобы понять что у Вас правильные правила nat, нужно набрать команду (ufw этого не покажет)

Вот что примерно вы увидите

Chain POSTROUTING (policy ACCEPT 1827 packets, 129K bytes)

num pkts bytes target prot opt in out source destination
1 0 0 MASQUERADE all -- any enp2s0 172.16.0.0/24 anywhere
2 1668 122K MASQUERADE all -- any enp2s0 172.16.0.0/24 anywhere

Видно, что у вас 2 правила nat и они пронумерованы. Если Вы видите неправильные правила, то можете их удалить по номеру. Вот так удаляется правило номер "1"

ВСЕ ! На этом установка окончена. Теперь самое интересное. Берем ноубук с Windows\Ubuntu\Android или WiFi роутер и указываем тип соединения pptp логин\пароль те, что вы прописали в сервере и у вас должно установиться VPN-соединение и через него работать Интернет. И хотя pptp считается простейшим VPN, весь интернет будет у вас в руках.

igel

Материалы на сайте публикуются из свободных источников и исходя из собственного опыта, ссылки на оригинальные статьи (если таковые имеются) публикуются в конце или начале статей. Если вы считаете что ваши авторские права нарушены, вы можете связаться с владельцем сайта, на странице "О нас" указаны контакты.

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

Чтобы создать собственный VPN, необходимо арендовать подходящий виртуальный сервер. Для создания VPN соединения существует различное программное обеспечение, которое отличается поддерживаемыми операционными системами и используемыми алгоритмами. В статье рассматривается два независимых друг от друга способа реализации VPN сервера. Первый основан на протоколе PPTP, который на сегодняшний день считается устаревшим и небезопасным, но при этом очень прост в настройке. Второй использует современное и безопасное ПО OpenVPN, но требует установки стороннего клиентского приложения и выполнения более сложных настроек.

В тестовой среде в качестве сервера используется виртуальный сервер под управлением операционной системы Ubuntu Server 18.04. Брандмауэр на сервере отключен, так как его настройка не рассматривается в данной статье. Настройка клиентской части описана на примере Windows 10.

Подготовительные операции

Независимо от того, какой из вариантов VPN сервера вы предпочтете, доступ клиентов в Интернет будет реализован штатными средствами операционной системы. Для того, чтобы из внутренней сети открыть доступ в Интернет через внешний интерфейс сервера необходимо разрешить пересылку пакетов между интерфейсами (форвардинг пакетов), и настроить трансляцию адресов.

Для включения форвардинга пакетов откроем файл “/etc/sysctl.conf” и изменим значение параметра “net.ipv4.ip_forward” на 1.

включение форвардинга пакетов для настройки VPN сервера

Чтобы изменения применились без перезагрузки сервера, выполним команду

sudo sysctl -p /etc/sysctl.conf

Трансляция адресов настраивается средствами iptables. Предварительно уточним имя внешнего сетевого интерфейса, выполнив команду “ip link show”, оно понадобится на следующем шаге. В нашем случае имя интерфейса “ens3”.

ip link show

Включаем трансляцию адресов на внешнем интерфейсе для всех узлов локальной сети.

sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

Обратите внимание, что в команде необходимо указать реальное имя сетевого интерфейса. На вашем сервере оно может отличаться.

По умолчанию все созданные правила iptables сбрасываются после перезагрузки сервера, для того, чтобы этого избежать, воспользуемся утилитой “iptables-persistent” Устанавливаем пакет.

sudo apt install iptables-persistent

В процессе установки откроется окно конфигурации, в котором система предложит сохранить текущие правила iptables. Так как правила уже настроены, соглашаемся и дважды нажимаем “Yes”. Теперь, после перезагрузки сервера правила будут восстанавливаться автоматически.

Включаем трансляцию адресов на внешнем интерфейсе для всех узлов локальной сети

1. PPTP сервер

Настройка сервера

sudo apt install pptpd

После завершения установки открываем в любом текстовом редакторе файл “/etc/pptpd.conf” и приводим его к следующему виду.

Далее редактируем файл “/etc/ppp/pptpd-options”, большинство параметров уже установлены по умолчанию.

proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd

На следующем этапе необходимо создать учетную запись для подключения клиентов. Предположим, мы хотим добавить пользователя “vpnuser”, с паролем “1” и разрешить для него динамическую адресацию. Открываем файл “/etc/ppp/chap-secrets” и добавляем в конец строку с параметрами пользователя.

vpnuser pptpd 1 *

Значение “pptpd” это имя сервиса, которое мы указали в файле “pptpd-options”. Вместо символа “*” для каждого клиента можно указать фиксированный ip-адрес. В результате содержимое файла “chap-secrets” будет таким.

Настройка VPN сервера - создание учетной записи для подключения клиентов

Для применения настроек перезагружаем службу pptpd и добавляем её в автозагрузку.

sudo systemctl restart pptpd
sudo systemctl enable pptpd

Настройка сервера завершена.

Настройка клиента

Открываем “Пуск” - “Параметры” - “Сеть и интернет” - “VPN” и нажимаем “Добавить VPN-подключение”

Настройка клиента для VPN подключения

В открывшемся окне вводим параметры подключения и нажимаем “Сохранить”

  • Поставщик услуг VPN: “Windows (встроенные)”
  • Имя подключения: “vpn_connect” (можно ввести любое)
  • Имя или адрес сервера: (указываем внешний ip адрес сервера)
  • Тип VPN: “Автоматически”
  • Тип данных для входа: “Имя пользователя и пароль”
  • Имя пользователя: vpnuser (имя, которое указано в файле “chap-secrets” на сервере)
  • Пароль: 1 (так же из файла “chap-secrets”)

После сохранения параметров, в окне VPN появится новое подключение. Щелкаем по нему левой кнопкой мыши и нажимаем “Подключиться”. При успешном соединении с сервером, на значке подключения появится надпись “Подключено”.

Добавляем VPN подключение

В свойствах подключения отображаются внутренние адреса клиента и сервера. В поле “Адрес назначения” указан внешний адрес сервера.

В свойствах подключения отображаются внутренние адреса клиента и сервера. В поле “Адрес назначения” указан внешний адрес сервера.

При установленном соединении внутренний ip-адрес сервера, в нашем случае 172.16.0.1, становится шлюзом по умолчанию для всех исходящих пакетов.

Проверка внешнего адреса компьютера при настройке VPN-соединения

Воспользовавшись любым онлайн-сервисом вы можете убедиться, что внешний IP адрес компьютера теперь совпадает с IP адресом вашего VPN сервера.

2. OpenVPN сервер

Настройка сервера

Выполним повышение прав текущего пользователя, так как для всех дальнейших действий требуется root доступ.

Устанавливаем необходимые пакеты. Пакет “Easy-RSA” нужен для управления ключами шифрования.

apt install openvpn easy-rsa

Создаем символическую ссылку на конфигурационный файл OpenSSL, в противном случае система выдаст ошибку при загрузке переменных.

ln -s /usr/share/easy-rsa/openssl-1.0.0.cnf /usr/share/easy-rsa/openssl.cnf

Переходим в рабочий каталог утилиты easy-rsa, загружаем переменные и очищаем старые конфигурации.

cd /usr/share/easy-rsa/
source ./vars
./clean-all

Приступаем к созданию ключей. Генерируем ключ Диффи-Хеллмана, процесс может занять некоторое время.

Генерируем ключи

Генерируем центр сертификации.

В процессе необходимо ответить на вопросы и ввести информацию о владельце ключа. Вы можете оставить значения по умолчанию, которые указаны в квадратных скобках. Для завершения ввода нажимаем “Enter”.

Генерируем ключи для сервера, в качестве аргумента указываем произвольное название, в нашем случае это “vpn-server”

Как и на предыдущем шаге отвечаем на вопросы или оставляем значения по умолчанию. На завершающем этапе дважды нажимаем “y”.

Генерация ключей

Генерация ключей сервера завершена, все файлы находятся в папке “/usr/share/easy-rsa/keys”.

все файлы находятся в папке “/usr/share/easy-rsa/keys”

Создадим в рабочем каталоге OpenVPN папку “keys” для хранения ключей и скопируем туда необходимые файлы.

mkdir /etc/openvpn/keys
cp ca.crt dh2048.pem vpn-server.key vpn-server.crt /etc/openvpn/keys/

Копируем и распаковываем в каталог “/etc/openvpn/” шаблон конфигурационного файла.

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
gzip -d /etc/openvpn/server.conf.gz

Открываем на редактирование файл “/etc/openvpn/server.conf” и убеждаемся в наличии следующих строк, при необходимости корректируем.

Остальные параметры оставляем без изменений.
Перезапускаем службу OpenVPN для применения конфигурации.

systemctl restart openvpn

Настройка сервера завершена!

Настройка клиента

Скачиваем клиент OpenVPN с официального сайта проекта

и скачиваем инсталлятор для своей версии операционной системы. В нашем случае это Windows 10.

скачиваем инсталлятор для своей версии операционной системы

Устанавливаем приложение, оставляя все параметры по умолчанию.

На следующем этапе необходимо подготовить на сервере и передать на компьютер клиента следующие файлы:

  • публичный и приватный ключи;
  • копия ключа центра сертификации;
  • шаблон конфигурационного файла.

Подключаемся к серверу, повышаем права,переходим в рабочий каталог утилиты “easy-rsa” и загружаем переменные.

sudo -s
cd /usr/share/easy-rsa/
source ./vars

Генерируем ключевую пару для клиента, в качестве аргумента указываем произвольное имя, в нашем случае “client1”.

Отвечая на вопросы вводим свои данные или просто нажимаем “ENTER”, оставляя значения по умолчанию. После этого дважды нажимаем “y”

Установка и настройка OpenVPN

Сгенерированные ключи клиента также находятся в папке “/usr/share/easy-rsa/keys/” Для удобства создадим в домашнем каталоге папку “client1” и скопируем в нее все файлы предназначенные для переноса на клиентский компьютер.

cd /usr/share/easy-rsa/keys/
mkdir

/client1
cp client1.crt client1.key ca.crt

Скопируем в эту же папку шаблон клиентского конфигурационного файла. При копировании меняем расширение файла на “ovpn”.

Изменим владельца каталога “

/client1/” и всех файлов находящихся в нем, для того, чтобы получить возможность перенести их на клиентский компьютер. В нашем случае сделаем владельцем пользователя “mihail”

chown -R mihail:mihail

Переходим на клиентский компьютер и копируем с сервера содержимое папки “

/client1/” любым доступным способом, например с помощью утилиты “PSCP”, которая входит в состав клиента Putty.

Файлы ключей “ca.crt”, “client1.crt”, “client1.key” можно хранить в любом месте, в нашем случае это папка “c:\Program Files\OpenVPN\keys”, а конфигурационный файл “client.ovpn” переносим в директорию “c:\Program Files\OpenVPN\config”.

Приступаем к конфигурированию клиента. Открываем в блокноте файл “c:\Program Files\OpenVPN\config\client.ovpn” и отредактируем следующие строки

cipher AES-256-CBC
comp-lzo
auth-nocache
verb 3

Остальные параметры оставляем без изменений.

Сохраняем файл и запускаем клиентское приложение “OpenVPN GUI”.

VPN setup finished


Для подключения к серверу щелкаем правой кнопкой мыши на иконке в трее и выбираем “Подключиться”. При успешном соединении иконка станет зеленого цвета.

С помощью любого онлайн сервиса убеждаемся, что внешний ip адрес клиента изменился и совпадает с IP адресом сервера.

Возникла необходимость настроить vpn сервер для доступа к локальной сети организации. В качестве vpn сервера я предпочитаю использовать openvp за ее гибкость, удобство и простоту настройки. Но в данном случае мне был нужен именно pptp сервер с возможностью автоматической передачи маршрутов клиентам. С последним пришлось немного повозиться.

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

Введение

Сама по себе настройка pptp сервера на Debian очень проста не представляет никакой сложности. Все настраивается за 10 минут. Проблема здесь в другом. По-умолчанию, windows при подключении по pptp использует удаленный vpn сервер в качестве шлюза по умолчанию. За это отвечает галка в настройках vpn соединения "Использовать основной шлюз в удаленной сети". При такой конфигурации весь трафик компьютера пользователя идет через vpn сервер. Это очень неудобно, да и не нужно. Эту настройку обычно отключают.

Отключить Использовать основной шлюз в удаленной сети

Когда ее отключаешь, pptp клиент ничего не знает о маршрутах в удаленный офис. Чтобы туда попасть, маршруты нужно прописывать вручную, например так:

192.168.0.0 Сеть удаленного офиса.
192.168.10.1 Адрес vpn сервера

Этот маршрут нужно либо в командной строке прописывать, либо bat файл сделать и запускать. И то и другое неудобно, так как пользователю нужно выполнять дополнительные действия. В openvpn этот вопрос решается очень просто. Там можно на уровне сервера задать любые настройки пользователя, в том числе и маршруты. Они будут передаваться после подключения openvpn клиента. В pptp так сделать нельзя, он это не умеет. Вместо него передать маршруты может dhcp сервер, его для этого нужно специальным образом настроить. Этим мы и займемся.

Установка pptp сервера

Подразумеваю, что у вас установлен и настроен сервер. Если это не так, то воспользуйтесь моими материалами по установке и настройке debian сервера.

Сначала установим pptp сервер:

Рисуем следующий конфиг /etc/pptpd.conf:

eth1:1 Виртуальный интерфейс. Нужен для передачи dhcp параметров клиентам pptp.
192.168.10.1 IP адрес pptp сервера в vpn сети
192.168.10.30-50 Диапазон адресов, которые будут назначены pptp пользователям в vpn сети

Редактируем файл с дополнительными параметрами /etc/ppp/options:

Не буду подробно описывать параметры, в интернете есть описание. Обращаю внимание на proxyarp, без него не будет работать задуманная схема, и на nodefaultroute. Если вам иногда нужно ставить пользователям vpn сервер в качестве шлюза по-умолчанию, закомментируйте этот параметр. Отключить шлюз можно будет вручную на клиенте.

Дальше создаем учетки для подключения в файле /etc/ppp/chap-secrets:

Первый столбец - имя пользователя, второй - тип сервера, он всегда один и тот же, третий - пароль, четвертый - ip адрес в vpn сети, который будет назначен клиенту. Если его явно не указать, то ему будет назначен первый свободный из диапазона remoteip в pptpd.conf.

На этом настройка непосредственно pptp сервера закончена. Им можно пользоваться, но маршруты пользователям передаваться не будут.

Настраиваем dhcp сервер для раздачи маршрутов

У меня на сервере уже был настроен isc-dhcp-server, поэтому я использовал именно его. Но можно воспользоваться и dnsmasq. Я приведу пример с dhcpd. Если у вас его еще нет, то устанавливайте командой:

Рисуем следующий конфиг /etc/dhcp/dhcpd.conf:

Я тут не разбирался, что и зачем настроено именно так. Сервер настраивал не я, он мне достался в наследство. Мне нужно было только грамотно настроить pptpd с раздачей маршрутов. Поэтому я не расписываю все от и до, а просто делюсь рабочим конфигом, который сейчас у меня работает.

Подсеть 192.168.10.0 и 2 строчки с options перед ней это то, что я добавил для раздачи маршрутов pptp клиентам в vpn подсеть.

Теперь создадим виртуальный интерфейс, добавив в самый конец конфигурационного файла сети:

О настройке 2-х ip адресов на одном интерфейсе можно подробно прочитать в статье - настройка сети в debian. В моем случае eth1 это интерфейс, который смотрит в локальную сеть, доступ к которой мы организуем с помощью vpn.

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

По сути все готово. Запускаем pptpd и dhcpd и проверяем.

У меня почему-то команда pptpd restart отрабатывает с ошибкой и не перезапускает демон. Приходится запускать вручную:

Проверяем работу клиента windows. Список маршрутов до vpn подключения:

Список маршрутов до pptp подключения

Список маршрутов после pptp подключения

Вот пример такой же конфигурации для dnsmasq:

Нашел, пока разбирался с вопросом. У себя не проверял, так как решил все на одном dhcp сервере делать, который уже был.

Заключение

Немного сложно реализуется функционал, который доступен в openvpn из коробки без дополнительных настроек. Я поэтому и не очень люблю с pptp возиться, после openvp он мне кажется не таким удобным. Но иногда приходится и его настраивать. К примеру, микротики, к сожалению, так и не научились работать с openvpn по udp, приходится использовать pptp. Да и встроенный в windows клиент тоже добавляет удобство.

Я немного повозился, поразбирался, прежде чем у меня получилось настроить рабочий вариант. Ключевым моментом оказался виртуальный интерфейс eth1:1, который я создал для pptp подсети. Без него у меня не работала передача маршрута.

Для объединения компьютеров между собой и даже целых локальных сетей через интернет используют VPN туннели. Как правило один из узлов используется в качестве сервера, а остальные подключаются к нему как клиенты.

PPTP (англ. Point-to-Point Tunneling Protocol) — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети.
Подробнее в Википедии

В этой статье я расскажу как настроить PPTP сервер на операционной системе Debian 9.

Как установить PPTP сервер на Debian

Чтобы установить PPTP сервер на Debian выполните последовательно следующие команды в консоли от имени ROOT:

Обратите внимание, что демон (сервис) PPTP в имени на конце содержит букву [d].

Как настроить PPTP сервер на Debian

Настройка сервера для построения VPN туннеля на основе PPTP сводится к редактированию трех файлов:

  • /etc/pptpd.conf
  • /etc/ppp/chap-secrets
  • /etc/ppp/pptpd-options

Настройка безопасности PPTP

Как правило файл /etc/ppp/pptpd-options уже содержит все необходимые инструкции для правильной и безопасной работы PPTP сервера и редактировать его не надо. В нем находятся не только настройки безопасности, но именно на них следует обратить особое внимание.

В Debian 9 по-умолчанию файл /etc/ppp/pptpd-options имеет следующее содержание:

Если у вас этого файла нет или у него другое содержимое и вы хотите внести в него изменения, то с начала сделайте резервную копию файла настроек:

Оптимальные параметры PPTP сервера, проверьте их наличие и при необходимости добавьте в файл /etc/ppp/pptpd-options:

Настройка адресации VPN тоннеля

Адресация компьютеров (устройств) в тоннеле не должна совпадать с уже используемой адресацией у всех участников VPN туннеля.

В моем примере я буду использовать подсеть 172.22.22.0. Чтобы ее настроить для PPTP тоннеля необходимо отредактировать файл /etc/pptpd.conf.

а затем в конец файла добавляем настройки адресов нашего тоннеля:

Сделать это можно с помощью редактора, например из состава MC (Midnight Commander):

Как установить и настроить безопасный PPTP сервер на Debian Linux

Или прямо из командной строки:

Список пользователей PPTP сервера

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

Формат строки: имя-пользователя имя-сервиса пароль адрес-клиента-в-тоннеле.

В случае, если вы будете использовать множественный вход, то вместо конкретного адреса можно указать звездочку.

Как установить и настроить безопасный PPTP сервер на Debian Linux

Добавить пользователя можно не прибегая к редактору, прямо из консоли:

Так как данные хранятся в окрытом виде, то для хоть какой-то безопасности присвоим файлу /etc/ppp/chap-secrets следующие права:

Запуск PPTP сервера на Debian

Если все сделали без ошибок, то можно запустить PPTP сервер:

При необходимости можно проверить сатус его работы:

Как установить и настроить безопасный PPTP сервер на Debian Linux

Автозагрузка PPTP сервера при старте операционной системы

В Debian 9 PPTP сервер добавить в автозагрузку можно следующей командой:

исключить из автозагрузки соответственно:

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

Заключение

К серверу настроенному по этой инструкции беспроблемно подключаются клиенты Windows 8.1/10, Android 9, а так же роутеры серии Keenetic. Это проверено мной лично.

В прочем и другие клиенты так же не должны испытывать проблем при подключении.

Читайте также: