Home » Linux » Debian » Настройка pptp сервера на Debian

Настройка pptp сервера на Debian

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

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Введение

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

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

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

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

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

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

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

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

# apt-get install pptpd

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

# mcedit /etc/pptpd.conf
option /etc/ppp/pptpd-options
logwtmp
bcrelay eth1:1
localip 192.168.10.1
remoteip 192.168.10.30-50
eth1:1 Виртуальный интерфейс. Нужен для передачи dhcp параметров клиентам pptp.
192.168.10.1 IP адрес pptp сервера в vpn сети
192.168.10.30-50 Диапазон адресов, которые будут назначены pptp пользователям в vpn сети

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

# mcedit /etc/ppp/options
ms-dns 77.88.8.1
ms-dns 8.8.4.4
require-mschap-v2
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 10
lcp-echo-failure 100
noipx
nodefaultroute

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

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

# mcedit /etc/ppp/chap-secrets
user-01 pptpd passw51 192.168.10.41
user-02 pptpd passw88 192.168.10.42
user-03 pptpd passw59 192.168.10.43
user-04 pptpd passw27 192.168.10.44

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

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

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

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

# apt-get install isc-dhcp-server

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

# mcedit /etc/dhcp/dhcpd.conf
deny unknown-clients;
ddns-update-style none;

option domain-name "office";
option domain-name-servers 77.88.8.8, 8.8.4.4;
default-lease-time 604800;
max-lease-time 864001;

log-facility local7;

local-address 192.168.0.1;
subnet 192.168.0.0 netmask 255.255.255.0 {
        option routers 192.168.0.1;
        authoritative;
        allow unknown-clients;
        option netbios-name-servers 192.168.0.1;
        option domain-name-servers 77.88.8.8, 8.8.4.4;
        option domain-name "debian.office";
        option broadcast-address 192.168.0.255;
        range 192.168.0.150 192.168.0.199;
        }

option ms-classless-static-routes code 249 = array of unsigned integer 8;
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

subnet 192.168.10.0 netmask 255.255.255.0 {
        option dhcp-server-identifier 192.168.10.1;
        authoritative;
        range 192.168.10.51 192.168.10.99;
        option ms-classless-static-routes 24, 192,168,0, 192, 168, 10, 1;
        option rfc3442-classless-static-routes 24, 192,168,0, 192, 168, 10, 1;
        option routers 192.168.10.1;
        }

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

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

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

# mcedit /etc/network/interfaces
auto eth1:1
iface eth1:1 inet static
address 192.168.10.1
netmask 255.255.255.0

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

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

# service networking restart

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

# service isc-dhcp-server restart
# service pptpd restart

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

# service pptpd start

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

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

После:

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

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

listen-address=192.168.10.1
dhcp-range=vpn,192.168.10.50,192.168.10.99,255.255.255.0,1h
dhcp-option=tag:vpn,vendor:MSFT,2,1i
dhcp-option=tag:vpn,249,192.168.0.0/24,192.168.10.1
dhcp-option=tag:vpn,121,192.168.0.0/24,192.168.10.1

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

Заключение

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

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

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Дополнительные материалы по Debian

Рекомендую полезные материалы по Debian:
Настройки системы
  • Установка
  • Базовая настройка
  • Настройка сети
  • Обновление 8 до 9
  • Обновление 7 до 8
  • Включение логов cron
Подробная установка Debian 9 Stratch с помощью графического инсталлятора со скриншотами и пояснениями к каждому пункту установщика.
Базовая настройка сервера Debian. Приведены практические советы по улучшению безопасности и удобства администрирования.
Подробное описание настройки сети в Debian - задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др.
Обновление предыдущей версии Debian 8 Jessie до последней Debian 9 Stratch. Подробная инструкция с описанием по каждому этапу обновления.
Обновление версии Debian 7 wheezy до Debian 8 Jessie. Подробная инструкция с описанием по каждому этапу обновления.
Включение записи логов cron в Debian в отдельный файл и настройка ротации этого файла. Отключение логов в syslog.
Настройка программных комплексов
 
  • Proxmox
  • Шлюз в интернет
  • Установка Asterisk
  • Asterisk+Freepbx
  • PostgreSQL для 1С
  • Настройка pptp
Подробное описание установки гипервизора proxmox на raid1 mdadm на базе операционной системы Debian 8. Приведены практические советы по настройке.
Настройка интернет шлюза на Debian. Включает в себя настройку iptables, nat, dhcp, dns, iftop.
Чистая установка Asterisk 13 на сервер под управлением Debian 8. Никаких дополнений и GUI, только vanilla asterisk.
Установка Freepbx 12 и Asterisk 13 на сервер под управлением Debian/Ubuntu. Подробное описание и разбор ошибок установки.
Рассказ об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива.
Описание установки и настройки pptp сервера в Debian с передачей статических маршрутов клиенту для организации доступа к ресурсам сети.
Разное
  • Бэкап с помощью rsync
  • Тюнинг postgresl для 1C
Подробное описание настройки бэкапа с помощью rsync на примере скрипта инкрементного архива на системе Centos, Debian, Ubuntu, Windows.
Ускорение работы 1С с postgresql и диагностика проблем производительности

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

9 комментариев

  1. Прохожий

    Bозможно следовало бы дописать и об настройке ipsec

  2. это самый уебанский сайт с манами, такую херню чувак пишет просто жуть.... не советую, или чоньть сломаете если будете копипастить или вообще сервак потеряете если он на дедике гденить в жопе

    • Александр

      Ну слава богу! Я уж думал на этом сайте никогда не появится существо с какашками вместо мозга. На этом сайте абсолютно рабочие маны с описаниями понятными даже для умственно-отсталых. Достаточно внимательно смотреть на то, что ты копипастишь, эти статьи пишет человек и ему свойственны опечатки типа: option routers 192.168.01.1; или dhcp-range=vpn,192.168.10.50192.168.10.99,255.255.255.0,1h
      В первом случае 01 вместо 10, а во втором запятую не поставил, но тебе даже это не дано освоить.
      Автору респект за труды

      • Спасибо за замечания, поправил.

        • Александр

          Просьба к автору, вы бы могли написать статью с описанием установки и настройки vpn и pppoe сервера на базе accel-ppp. И желательно тот случай когда сервер находится за NAT-ом.

  3. Не понятна затея с DHCP.
    Внешний 93.157.ххх.ххх - eth0
    Внутренний 192.168.0.1 - eth1
    Сервер PPTP - 172.168.0.1 - ppp0 для доступа из Интернет.
    Пул - 172.168.0.2-254 - раздается пользователям.
    Я просто разрешил форвардинг из ppp+ в lan и все работает без роутов.

    • У пользователей при подключении по pptp шлюз по-умолчанию меняется? Если они это специально не отключали, то меняется и весь интернет трафик идет через pptp. В таком случае никакие маршруты дополнительные не нужны. Но это не удобно.

      • Странно, у меня по умолчанию как раз наоборот, галочки нет и ее приходилось ставить. По крайней мере на win7 и win10.

      • Александр

        Просьба к автору, вы бы могли написать статью с описанием установки и настройки vpn и pppoe сервера на базе accel-ppp. И желательно тот случай когда сервер находится за NAT-ом.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar