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

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

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

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Курс стоящий, все подробности читайте по ссылке. Есть бесплатные курсы.

Введение

Сама по себе настройка 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.1IP адрес 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 подсети. Без него у меня не работала передача маршрута.

Онлайн курс "DevOps практики и инструменты"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Помогла статья? Есть возможность отблагодарить автора

Дополнительные материалы по 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

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

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

  1. Аватар

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

    • Аватар
      Александр

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

      • Zerox

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

        • Аватар
          Александр

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

  2. Аватар

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

    • Zerox

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

      • Аватар

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

      • Аватар
        Александр

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

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

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.