Магазин / аукцион / FPR / donate / услуги / RSS / распечатать / вход 
Мой мир
Вконтакте
Одноклассники
Google+

[22 ноября 2017 | 30 ноября 2017 | 3 декабря 2017]

Linux Ubuntu простейший PPTP-сервер

Решил сделать себе ещё одну заметочку о том как быстро настроить простой PPTP-сервер на Ubuntu. Как PPTP-сервер на Cisco я уже писал, но потребовалось сделать доступ по этому протоколу на Линуксе. В качестве примера у меня Ubuntu 15 версии.

Версия Ubuntu.

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

Установка сервиса (демона) производится командой:

apt-get install pptpd

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

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

#Файл с опциями подключения
option /etc/ppp/pptpd-options
logwtmp
#Адрес сервера pptp
localip 192.168.254.1
#Пул адресов выдаваемых клиентам
remoteip 192.168.254.201-210,192.168.254.101
connections 15

В принципе, внутри самого файла есть масса комментариев, но немного разъясню, что для чего надо:
option — указывает файл с опциями подключения.
logwtmp — используется для работы комманды last.
localip — назначает локальный IP-адрес, который будет использоваться в качестве шлюза. Для корректной работы необходимо выделить пул адресов который не пересекается с уже имеющимися сетями подключенными к этому серверу. Скорей всего у вашего сервера подключена внешняя сеть и внутренняя сеть и по этому достаточно выделить подсеть не пересекающаяся именно с этими подсетями.
remoteip — пул адресов которые будут выделяться подключающимся пользователям. Можно перечислить в виде диапазона, можно перечислить через запятую.
connections — указывает количество одновременных подключений, если его закомментировать, то ограничений на количество подключений не будет.

Теперь нам необходимо перечислить опции подключения. Они перечисляются в файле: /etc/ppp/pptpd-options.

name pptpd
#запрещаем протоколы
refuse-pap
refuse-chap
refuse-mschap
#включаем шифрование
require-mschap-v2
require-mppe-128
ms-dns 192.168.30.1
ms-dns 8.8.8.8
proxyarp
nodefaultroute
novj
novjccomp
nologfd
lock
nobsdcomp
#MTU и MRU подбираются в ручную
mtu 1400
mru 1400

В этом файле масса комментариев которые разъясняют значения параметров и где их можно использовать:
name pptpd — имя сервиса.
refuse-pap — выключить протокол PAP.
refuse-chap — выключить протокол CHAP.
refuse-mschap — выключить протокол MS-CHAP.
require-mschap-v2 — включить протокол MS-CHAP-v2.
require-mppe-128 — включить шифрование MPPE-128.
ms-dns — указать DNS. Можно указать внутренний, либо внешний. Если вы собираетесь обращаться к внутренним компьютерам по имени, то нужно указать внутренний DNS.
nodefaultroute — этот параметр обязательно должен быть включен, если его выключить, то трафик с сервера пойдёт через подключившегося клиента.
novj и novjccomp — отключение методов сжатия Вана Якобсона из-за них могут не подключаться Windows-клиенты.
lock — параметр для блокировки повторного входа. Если вы хотите, чтобы под одним и тем же логином в систему входило несколько людей одновременно, то его необходимо закомментировать.
nologfd — отключение логов, они очень быстро разрастаются и могут привести к переполнению файла логов, он необходим лишь на стадии отладки.
nobsdcomp — отключение сжатия BSD-Compression, из-за его использования так же возможны проблемы на Windows-клиентах.
mtu и mru — по умолчанию они установвлены в значение 1500 байт, но из-за того, что при передаче информации в GRE добавляется дополнительный заголовок, то размер пакета увеличивается и он не может корретно пройти. Экспериментально было выяснено, что значение 1400 байт вполне достаточно для корректной работы большинства клиентов.

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

Вот его содержимое:

# Secrets for authentication using CHAP
# client   server   secret   IP-addresses
user1   pptpd   password1   *
user2   pptpd   password2   192.168.254.101
user3   pptpd   password3   *

В этом файле прописываются четыре столбца разделённых табулятором Первое поле — имя пользователя. Второе — имя сервера на котором будет происходить коннект. Третье — поле пароля, там необходимо вписать пароль пользователя. И четввёртое поле отвечает за назначаемый адрес. Если указать звёздочку, то будет назначен любой свободный адрес из пула. Если прописать определённый адрес, то он будет назначен индивидуально для этого пользователя.

Теперь осталось разрешить форвард пакетов между интерфейсами. Скорей всего у вас это уже сделано, но проверить не помешает. Заглядываем в файл: /etc/sysctl.conf И ищем в нём строку содержащую.

net.ipv4.ip_forward=1

Если эта строка закомментирована, то следует снять с неё комментарий. Если её вообще нет, то её необходимо записать. После перезагрузки этот параметр включится. Осталось запустить этот сервис. Для этого дадим команду:

service pptpd start

На этом конфигурация PPTP-сервера закончена. Пользователи могут подключаться и видеть нашу маленькую виртуальную сеть. И больше ничего. Далее нужно понять, что же мы вообще хотели достичь используя этот PPTP-сервер. Кстати, автоматически этот демон не запускается, не забудьте разместить команду запуска в файл /etc/rc.local.

Доступ в локальную сеть

Если вас интересует доступ в локальную сеть предприятия, то возникнет очень неприятная картина. Так как по умолчанию PPTP-сервер станет шлюзом по умолчанию, то интернет с клиента тоже пойдёт через PPTP-сервер, чем будет загружено интернет-подключение и возникнут проблемы с доступом в интернет. Для этих целей нужно отключить установку шлюза по умолчанию из VPN-сети.

В Windows заходим в свойства подключения.

PPTP-подключение.

Далее в Сеть. Выбираем пункт: Протокол интернета версии 4 (TCP/IPv4)Свойства.

PPTP-подключение.

Здесь нажимаем на кнопку Дополнительно.

PPTP-подключение.

Убираем галочку на пункте Использовать основной шлюз в удалённой сети. После этого применяем все параметры и подключаемся. После этой настройки пользователь получит доступ к локальным ресурсам сервера, а в интернет он будет выходить через свой основной канал.

Доступ в интернет через PPTP

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

PPTP-подключение.

После этого необходимо назначить NAT для выхода пользователей из подсети PPTP-клиентов в интернет. Если работать согласно нашей схеме сети комманда будет выглядеть следующим образом.

iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -j MASQUERADE

Итоги

Поднять PPTP-сервер на Ubuntu чуть сложнее чем на Cisco, но не представляет никаких сложностей. Учитывая то, что протокол не обеспечивает должной надёжности, хочу порекомендовать использовать что-нибудь иное. Например, протокол L2TP+IPSec или IKEv2. В этом случае трафик будет надёжно зашифрован и никто не сможет подсмотреть или подменить пакеты.

Если вас мало интересует шифрование трафика, то можно использовать либо нешифрованные туннели, либо прокси сервер.

• Перейти в архив


Комментарии

Включите JavaScript для комментирования.


Сообщайте нам о замеченных ошибках на: web@orcinus.ru. Все пожелания и советы будут учтены при дальнейшем проектировании сайта... Мы готовы сотрудничать со всеми желающими. Мнение авторов может не совпадать с точкой зрения редакции сайта www.orcinus.ru. В некоторых случаях, мнение автора может не совпадать с мнением автора! Phone: +7-902-924-70-49.

Рейтинг@Mail.ru LiveInternet Rambler's Top100 Яндекс.Метрика