Настройка VPN-сервера (PPTP) в ОС Linux

Доброго времени суток. Продолжаем настройку сервера видеонаблюдения. На данном этапе поднимем VPN сервер на базе протокола PPTP. Выбор данного протокола для нашей задачи обусловлен следующими факторами:

1 и основное) Поддержка реализации протокола PPTP практически всеми ОС и оконечными устройствами, в нашем случае это 3G-роутеры.
2) Простота настройки. Пожалуй это самый легкий способ поднять VPN-сервер средствами ОС GNU/Linux

Вначале предполагалось использовать более надежный и безопасный OpenVPN, однако из-за того, что такое соединение способны устанавливать единицы роутеров, был выбран более распространенный PPTP, несомненными плюсами которого являются: простота настройки и отсутствие необходимости устанавливать собственного клиента для Windows.

Первым делом установим пакеты ppp и pptpd:
# apt-get install ppp pptpd

Далее в файле /etc/pptpd.conf укажем IP PPTP сервера и диапазон IP, которые будут выдаваться клиентам. Я выбрал адрес отличный от реального IP сервера и соответствующий ему диапазон:

localip 10.10.10.1
remoteip 10.10.10.100-250

Рисунок 1.


Больше ничего в этом файле не меняем.

Редактируем следующий файл /etc/ppp/pptpd-options
К параметрам по умолчанию я добавил только строчку auth в раздел #Authentification, чтобы сервер принудительно требовал аутентификацию.
Вероятно, необходимы следующие строки, у меня они были включены по умолчанию:

# отказываемся от следующих протоколов шифрования:
refuse-pap
refuse-chap
refuse-ms-chap
# требуем наличие следующих протоколов у клиента:
require-ms-chap-v2
require-ms-mppe-128

Рисунок 2.


Обращаем внимание на строчку, мы ещё упомянем о ней, имя нашего pptp сервера:
name pptpd

Теперь осталась последняя настройка: список pptp клиентов.
Открываем для редактирования файл /etc/ppp/chap-secrets
Каждая строка этого файла представляет собой 4 текстовых поля, разделенных пробелом.
Первое поле - имя pptp клиента.
Второе поле - имя pptp сервера, то самое на которое мы обратили внимание в файле /etc/ppp/pptpd-options, эти имена обязательно должны совпадать.
Третье поле - пароль клиента, на рисунке ниже показаны простые пароли, совпадающие с именем пользователя, это сделано для упрощения тестов, а в реальной работе необходимо использовать сложные пароли, хотя, несомненно, те кто это читает могут вполне обойтись и без подобных нравоучений)
Четвертое поле - IP адрес из диапазона, указанного в файле /etc/pptpd.conf, который будет выдан данному клиенту при подключении, если вместо IP адреса поставить звёздочку, то данному клиенту будет выдан первый свободный IP из диапазона.

Рисунок 3.


В моём случае тестовые настройки следующие:

# первая строка - pptp клиент виртуальной машины Windows
host pptpd host 10.10.10.100
# вторая строка - pptp клиент для мониторинга
# и просмотра видео архивов
usr pptpd usr 10.10.10.101
# третья и последующие строки - удаленные IP камеры
# звёздочка здесь поставлена для примера в реальности
# IP адреса тоже будут заданы жёстко
outcam1 pptpd outcam1 *

Клиент host получит IP-адрес 10.10.10.100, клиент usr - 10.10.10.101, клиент outcam1 скорее всего получит первый свободный адрес 10.10.10.102.

Теперь нам осталось только перезапустить сервис pptpd чтобы применить сделанные настройки.

sudo service pptpd restart

Готово. Можно пробовать подключиться.

Дополнение 1:
Возможна такая ситуация, что клиенты "видят" сервер, и сервер "видит" клиентов, но клиенты "не видят" друг друга, проверить это можно командой ping. Для урегулирования этой ситуации необходимо включить форвардинг IP пакетов. Для этого в файле /etc/sysctl.conf раскомментируем или добавим следующую строку:
net.ipv4.ip_forward=1

Дополнение 2:

На некоторых системах почему-то автоматически не стартует pptpd при загрузке, а работает только после того как его "пнешь" вручную. В таком случае можно сделать следующее:

В /etc/init.d создаем файл autostartpptpd.sh со следующим содержимым:

sudo service pptpd start

Делаем его исполняемым:
# chmod 755 /etc/init.d/autostartpptpd.sh
Помещаем в автозагрузку:
sudo update-rc.d autostartpptpd.sh defaults 99 01

Эта статья опубликована под Creative Commons Attribution ShareAlike лицензией.

Добавить комментарий