Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Настраиваем VPN сервер. Часть 3 — PPTP. Платформа Linux.
Рассмотрев в предыдущих частях теоретические вопросы перейдем к практической реализации. Сегодня мы рассмотрим создание VPN сервера PPTP на платформе Ubuntu Server. Данный материал рассчитан на читателей, имеющих навыки работы с Linux, поэтому мы не будем отвлекаться на вещи описанные нами в других статьях, таких как настройку сети и т.п. Если вы испытываете затруднения — предварительно изучите другие наши материалы.
Практическое знакомство с VPN мы начнем с PPTP, как наиболее простого в реализации. Однако следует помнить о том, что это слабозащищенный протокол и его не следует использовать для доступа к критически важным данным.
Рассмотрим схему, которую мы создали в нашей тестовой лаборатории для практического знакомства с данной технологией:
У нас имеется локальная сеть 10.0.0.0/24 с сервером терминалов 10.0.0.2 и роутером10.0.0.1, который будет выполнять функции VPN сервера, для VPN мы зарезервировали сеть 10.0.1.0/24. Внешний интерфейс сервера имеет условный выделенный IP адрес X.X.X.X. Наша цель — предоставить удаленным клиентам доступ к терминальному серверу и общим ресурсам на нем.
Настройка сервера PPTP
Установим пакет pptpd реализующий функционал PPTP VPN:
Теперь откроем файл /etc/pptpd.conf и зададим основные настройки VPN сервера. Перейдем в самый конец файла, где укажем адрес сервера в VPN сети:
И диапазон адресов для выдачи клиентам:
Адресов нужно выделить не меньше, чем возможных одновременных соединений, лучше с небольшим запасом, так как их увеличение без перезапуска pptpd невозможно. Также находим и раскомментируем строку:
Это позволит передавать VPN клиентам широковещательные пакеты внутренней сети.
Также можно использовать опции listen и speed, первая позволяет указать IP адрес локального интерфейса для прослушивания входящих PPTP соединений, второй указать скорость VPN соединений в бит/с. Например разрешим серверу принимать PPTP соединения только с внешнего интерфейса:
Более тонкие настройки находятся в файле /etc/ppp/pptpd-options. Настройки по умолчанию вполне соответствуют нашим требованиям, однако кратко рассмотрим некоторые из них, чтобы вы имели представление о их назначении.
Секция #Encryption отвечает за шифрование данных и проверку подлинности. Данные опции запрещают использование устаревших и небезопасных протоколов PAP, CHAP и MS-CHAP:
Далее предписывается использовать безопасный протокол проверки подлинности MS-CHAP v2 и 128-битное шифрование MPPE-128:
Следующая секция #Network and Routing, здесь следует обратить внимание на опцию ms-dns, которая позволяет использовать DNS сервер во внутренней сети. Это может быть полезно при доменной структуре сети или наличия в ней DNS сервера который содержит имена всех ПК сети, что дает возможность обращаться к компьютерам по их именам, а не только по IP. В нашем случае данная опция бесполезна и закомментирована. Подобным образом можно задать и адрес WINS сервера опцией ms-wins.
Здесь же находится опция proxyarp, включающая, как несложно догадаться из названия, поддержку сервером Proxy ARP.
В секции #Miscellaneous содержится опция lock, которая ограничивает клиента одним подключением.
На этом настройку сервера можно считать законченной, осталось создать пользователей. Для этого внесем необходимые записи в /etc/ppp/chap-secrets. Записи должны иметь вид:
Первая запись позволяет подключаться к серверу пользователю ivanov c паролем 123 и присваивает ему произвольный IP адрес, вторая создает пользователя petrov с паролем 456, которому при подключении будет присваиваться постоянный адрес 10.0.1.201.
Важное замечание! Если pptpd не хочет перезапускаться, зависая на старте, а в /var/log/syslog добавляя строку long config file line ignored обязательно добавьте в конец файла /etc/pptpd.conf перенос строки.
Наш сервер готов к работе.
Настройка клиентских ПК
В общем случае достаточно настроить VPN соединение с опциями по умолчанию. Однако мы советуем явно указать тип соединения и отключить лишние протоколы шифрования.

Устанавливаем VPN соединение и пробуем пропинговать какой либо ПК в локальной сети, мы без каких либо затруднений получили доступ к терминальному серверу:

Если локальная сеть имеет доменную структуру, достаточно указать DNS сервером для VPN подключения DNS сервер контроллера домена. Воспользуйтесь опцией ms-dns в /etc/ppp/pptpd-options сервера и данные настройки будут получены клиентом автоматически.
Если DNS сервер в локальной сети отсутствует, то можно создать и использовать WINS сервер, информацию о нем также можно автоматически передавать клиентам при помощи опции ms-wins. И наконец, если удаленных клиентов немного, использовать на клиентских ПК файлы hosts (C:\Windows\System32\drivers\etc\hosts), куда следует добавить строки вида:
По одной для каждого ПК в локальной сети к ресурсам которого требуется доступ.
Alexell.Ru
Официальный сайт Alexell
Поднимаем VPN — PPTP сервер на Ubuntu

Для установки понадобятся права root пользователя или sudo.
1. Устанавливаем необходимые пакеты:
После окончания установки, нам понадобится отредактировать несколько файлов. Для изменения файлов вы можете пользоваться любым удобным для вас способом, хоть nano, хоть визуальными редакторами и т.д.
Теперь вам необходимо определиться с локальной подсетью для клиентов VPN. Вы можете сделать себе подсеть из любой подсети, которая не маршутизируется в интернете:
2. Открываем файл /etc/pptpd.conf, находим и раскоментируем (если вдруг закоментированы) строки localip и remoteip, затем прописываем свою ip адресацию.
- localip — ip адрес из выбранной вами подсети, который будет являться локальным шлюзом для клиентов VPN.
- remoteip — пул ip адресов для раздачи клиентам VPN.
Если на вашей машине несколько внешних IP адресов, то вы можете указать конкретный IP, по которому будет доступно подключение к VPN серверу. В конце файла добавьте:
3. Открываем файл /etc/ppp/pptpd-options и добавляем в конце файла:
В этом же файле при необходимости вы можете указать конкретные DNS, которые будут использоваться при подключении через VPN. Найдите и раскоментируйте строки ms-dns:
4. Открываем стандартный файл /etc/sysctl.conf, находим и раскоментируем строку:
5. Добавляем необходимые правила в iptables:
Обратите внимание, что eth0 — имя вашего сетевого интерфейса. Вы можете узнать его с помощью команды ifconfig
Если вам необходимо, чтобы была локальная сеть между клиентами, подключенными к VPN, добавьте следующие правила в iptables:
Обратите внимание, что 172.16.0.0/24 — локальная подсеть, которую вы себе выбрали, а ppp0 — имя pptp интерфейса.
Для сохранения iptables, выполните команду:
6. Пользователей для подключения к VPN серверу добавляем в файле /etc/ppp/chap-secrets
- user1 — имя пользователя
- password1 — пароль пользователя
- «*» — локальный ip будет выдаваться из пула, указанного в файле /etc/pptpd.conf
- «172.16.0.2» — пользователю будет присвоен указанный ip адрес.
7. Перезапускаем сервис pptpd для применения новых настроек:
Ваш PPTP сервер на Ubuntu запущен!
P.S. Если вдруг вы столкнетесь с тем, что добавленные правила iptables пропадают после рестарта firewall или перезагрузки машины, то сделайте действия, описанные ниже.
1. Добавляем заново все правила, как описано в 5-м шаге.
2. Сохраняем правила в конфиг:
3. Открываем файл /etc/network/interfaces и добавляем в самый конец:
Теперь можете перезагрузить Firewall или всю машину и убедиться, что правила iptables сохраняются.
Похожие материалы:
4 комментария Поднимаем VPN — PPTP сервер на Ubuntu
Аноним — 18.07.2018 — 10:25 Ответить
Все сделал по инструкции, делаю подключиться в виндоус подключается, но пишет «Сеть без доступа к интернету»
Alexell — 20.07.2018 — 14:37 Ответить
Проверьте все параметры на сервере по шагам. Проверьте наличие правил iptables, убедитесь, что после перезагрузки сервера все запускается и правила добавляются в iptables.
Подключитесь к VPN (укажите явно тип PPTP), проверьте, получаете ли вы внутренний IP от вашего VPN сервера. Если да, то зайдите в Панель управления\Сеть и Интернет\Сетевые подключения, ПКМ на VPN соединение, выберите «Свойства»->Сеть->IPv4->Свойства->Дополнительно и посмотрите галочку «Использовать основной шлюз в удаленной сети». Попробуйте снять или поставить ее.
Но все таки больше похоже что у вас на самом сервере что-то не так.
total_ce — 06.06.2019 — 09:45 Ответить
Здравствуйте. Настроили точно так же, но почему-то постоянно врубается ethernet соединение, команда IFUP показывает ошибку правил IPTABLES, хотя все указано правильно. Но у нас стоит Ubuntu 18.04
Андрей — 16.04.2020 — 13:11 Ответить
подключаюсь но в свойствах впн соединения у клиента основной шлюз пустой. и доступа в инет через впн сервер пропадает после подключения

