Debian pptp ipsec настройка

Обновлено: 04.07.2024

Недавно автору этих строк понадобилось настроить PPTP-соединение в Linux. После чтения документации оказалось что всё очень просто.

Приводимые здесь инструкции применимы в первую очередь для Debian/Ubuntu, однако, скорее всего без больших изменений ими можно воспользоваться и на других дистрибутивах.

Во-первых нужно установить несколько пакетов:

Во-вторых создаём файл /etc/ppp/peers/vpn0 следующего содержания:

Далее открываем в редакторе файл /etc/ppp/chap-secrets и добавляем строку:

Наконец выполняем команду:

И всё работает. В системе должен появиться новый ppp-интерфейс. Проверить это можно командой:

Если же соединения не происходит, то можно попытаться выполнить команду:

И посмотреть какие ошибки будут выданы на экран.

Если нужно чтобы соединение выполнялось автоматически при загрузке компьютера, то нужно добавить в файл /etc/network/interfaces строки:

Таким способом автор успешно подключается к описанному ранее PPTP-серверу.

Комментарии:

Небольшое дополнение: чтобы вальнуть весь трафик через vpn нужно добавить в /etc/ppp/peers/vpn0 строчку:

Единственным недостатком такого подключения является то, что, если по каким либо причинам соединение разорвалось, то интерфейс падает и не переподключается. Мне нужно было создать впн подключение, что бы оно было на фиксированном интерфейсе(для создания правил в iptables), при разрыве переподключалось и не пересоздавала интерфейс(что бы можно было удобно всё это дело мониторить по snmp)

В общем нашел такое решение в роутере ASUS wl500gP, и сплагатил их конфиг себе

Ну собственно создаём файл /etc/ppp/peers/vpn0 с таким содержимым:

Не могу:) Да и не хочу:) Потому что я знаю в чём проблема и решать еёё дело не благодарное. Сабжевый роутер скорее всего использует классический NAT, описанный ещё в RFC 1631. Этот NAT не содержит хаков для поддержки PPTP, который defective by design.

Моё ИМХО: или ставить роутер с соответствующими хаками, или не использовать сей арахичный протокол, ибо существуют куда как более вменяемые альтернативы.

Основная проблема PPTP в том что он использует GRE, который не работает через NAT. Есть роутеры, которые палят пакеты, идущие на tcp/1723 и вытаскивают из них информацию о туннеле после чего его корректно натят. Но это нарушение RFC 1631. Так что нафиг такое счастье.

Для объединения компьютеров между собой и даже целых локальных сетей через интернет используют VPN туннели. Как правило один из узлов используется в качестве сервера, а остальные подключаются к нему как клиенты.

PPTP (англ. Point-to-Point Tunneling Protocol) — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети.
Подробнее в Википедии

В этой статье я расскажу как настроить PPTP сервер на операционной системе Debian 9.

Как установить PPTP сервер на Debian

Чтобы установить PPTP сервер на Debian выполните последовательно следующие команды в консоли от имени ROOT:

Обратите внимание, что демон (сервис) PPTP в имени на конце содержит букву [d].

Как настроить PPTP сервер на Debian

Настройка сервера для построения VPN туннеля на основе PPTP сводится к редактированию трех файлов:

  • /etc/pptpd.conf
  • /etc/ppp/chap-secrets
  • /etc/ppp/pptpd-options

Настройка безопасности PPTP

Как правило файл /etc/ppp/pptpd-options уже содержит все необходимые инструкции для правильной и безопасной работы PPTP сервера и редактировать его не надо. В нем находятся не только настройки безопасности, но именно на них следует обратить особое внимание.

В Debian 9 по-умолчанию файл /etc/ppp/pptpd-options имеет следующее содержание:

Если у вас этого файла нет или у него другое содержимое и вы хотите внести в него изменения, то с начала сделайте резервную копию файла настроек:

Оптимальные параметры PPTP сервера, проверьте их наличие и при необходимости добавьте в файл /etc/ppp/pptpd-options:

Настройка адресации VPN тоннеля

Адресация компьютеров (устройств) в тоннеле не должна совпадать с уже используемой адресацией у всех участников VPN туннеля.

В моем примере я буду использовать подсеть 172.22.22.0. Чтобы ее настроить для PPTP тоннеля необходимо отредактировать файл /etc/pptpd.conf.

а затем в конец файла добавляем настройки адресов нашего тоннеля:

Сделать это можно с помощью редактора, например из состава MC (Midnight Commander):

Как установить и настроить безопасный PPTP сервер на Debian Linux

Или прямо из командной строки:

Список пользователей PPTP сервера

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

Формат строки: имя-пользователя имя-сервиса пароль адрес-клиента-в-тоннеле.

В случае, если вы будете использовать множественный вход, то вместо конкретного адреса можно указать звездочку.

Как установить и настроить безопасный PPTP сервер на Debian Linux

Добавить пользователя можно не прибегая к редактору, прямо из консоли:

Так как данные хранятся в окрытом виде, то для хоть какой-то безопасности присвоим файлу /etc/ppp/chap-secrets следующие права:

Запуск PPTP сервера на Debian

Если все сделали без ошибок, то можно запустить PPTP сервер:

При необходимости можно проверить сатус его работы:

Как установить и настроить безопасный PPTP сервер на Debian Linux

Автозагрузка PPTP сервера при старте операционной системы

В Debian 9 PPTP сервер добавить в автозагрузку можно следующей командой:

исключить из автозагрузки соответственно:

Для просмотра сервисов добавленных в автозагрузку используйте команду:

Заключение

К серверу настроенному по этой инструкции беспроблемно подключаются клиенты Windows 8.1/10, Android 9, а так же роутеры серии Keenetic. Это проверено мной лично.

В прочем и другие клиенты так же не должны испытывать проблем при подключении.

Для объединения компьютеров между собой и даже целых локальных сетей через интернет используют VPN туннели. Как правило один из узлов используется в качестве сервера, а остальные подключаются к нему как клиенты.

PPTP (англ. Point-to-Point Tunneling Protocol) — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети.
Подробнее в Википедии

В этой статье я расскажу как настроить PPTP сервер на операционной системе Debian 9.

Как установить PPTP сервер на Debian

Чтобы установить PPTP сервер на Debian выполните последовательно следующие команды в консоли от имени ROOT:

Обратите внимание, что демон (сервис) PPTP в имени на конце содержит букву [d].

Как настроить PPTP сервер на Debian

Настройка сервера для построения VPN туннеля на основе PPTP сводится к редактированию трех файлов:

  • /etc/pptpd.conf
  • /etc/ppp/chap-secrets
  • /etc/ppp/pptpd-options

Настройка безопасности PPTP

Как правило файл /etc/ppp/pptpd-options уже содержит все необходимые инструкции для правильной и безопасной работы PPTP сервера и редактировать его не надо. В нем находятся не только настройки безопасности, но именно на них следует обратить особое внимание.

В Debian 9 по-умолчанию файл /etc/ppp/pptpd-options имеет следующее содержание:

Если у вас этого файла нет или у него другое содержимое и вы хотите внести в него изменения, то с начала сделайте резервную копию файла настроек:

Оптимальные параметры PPTP сервера, проверьте их наличие и при необходимости добавьте в файл /etc/ppp/pptpd-options:

Настройка адресации VPN тоннеля

Адресация компьютеров (устройств) в тоннеле не должна совпадать с уже используемой адресацией у всех участников VPN туннеля.

В моем примере я буду использовать подсеть 172.22.22.0. Чтобы ее настроить для PPTP тоннеля необходимо отредактировать файл /etc/pptpd.conf.

а затем в конец файла добавляем настройки адресов нашего тоннеля:

Сделать это можно с помощью редактора, например из состава MC (Midnight Commander):

Как установить и настроить безопасный PPTP сервер на Debian Linux

Или прямо из командной строки:

Список пользователей PPTP сервера

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

Формат строки: имя-пользователя имя-сервиса пароль адрес-клиента-в-тоннеле.

В случае, если вы будете использовать множественный вход, то вместо конкретного адреса можно указать звездочку.

Как установить и настроить безопасный PPTP сервер на Debian Linux

Добавить пользователя можно не прибегая к редактору, прямо из консоли:

Так как данные хранятся в окрытом виде, то для хоть какой-то безопасности присвоим файлу /etc/ppp/chap-secrets следующие права:

Запуск PPTP сервера на Debian

Если все сделали без ошибок, то можно запустить PPTP сервер:

При необходимости можно проверить сатус его работы:

Как установить и настроить безопасный PPTP сервер на Debian Linux

Автозагрузка PPTP сервера при старте операционной системы

В Debian 9 PPTP сервер добавить в автозагрузку можно следующей командой:

исключить из автозагрузки соответственно:

Для просмотра сервисов добавленных в автозагрузку используйте команду:

Заключение

К серверу настроенному по этой инструкции беспроблемно подключаются клиенты Windows 8.1/10, Android 9, а так же роутеры серии Keenetic. Это проверено мной лично.

В прочем и другие клиенты так же не должны испытывать проблем при подключении.

Статья справедлива для всех случаев когда у Debian сервера есть белый IP адрес смотрящий в интернет и серый IP к которому подключены другие компьютеры. Это может быть как локальная сеть, так и VPN туннель.

Пересылка пакетов между сетевыми интерфейсами

Возможно, что в вашей системе этот параметр уже присутствует, но со значением 0 (ноль). В таком случае исправьте его на 1 (единицу).

Чтобы необходимое нам значение заработало нужно применить новую конфигурацию, для этого выполните в консоли сервера следующую команду:

О параметре net.ipv4.ip_forward

Если этот параметр выключен (закоментирован или значение равно 0), то компьютер (операционная система) считает себя узлом IP сети и дропает (DROP) все пакеты, предназначенные не ему (т.е. отбрасывает пакеты адрес получателя которых отличен от IP-адресов, назначенных на интерфейс, на котором получен пакет).

Если параметр включен, то ОС считает себя маршрутизатором и действует в соответствии с RFC1812, в том числе пытается переслать адресованные не ей пакеты в соответствии с таблицей маршрутизации.

Перенаправление трафика

Теперь самое время сказать серверу куда направлять трафик, который прилетает на наш сервер, как на шлюз (вместо ens32 укажите тот интерфейс, которым ваш сервер смотрит в интернет). Для этого выполните следующую команду в консоли сервера:

Эта команда будет работать до перезагрузки сервера.

А для того, чтобы все работало и после старта операционной системы необходимо в файл /etc/rc.local добавить следующую строку перед строкой в конце файла exit 0.

У меня на сервере файл /etc/rc.local после внесенных изменений выглядит так:

Для чего нужен файл rc.local в Debian

Файл rc.local в Debian используется для того чтобы добавлять собственные скрипты, которые будут выполняться после старта системы.

Как узнать имя сетевого интерфейса в Debian

Один из способов это посмотреть настройки в файле /etc/network/interfaces. Либо выполните следующую команду в консоли:

Как пустить в интернет VPN клиентов на Debian сервере

Тестирование и выводы

После того, как вы сделали все настройки и запустили VPN сервер, обязательно проверьте скорость его работы (вернее скорость вашего доступа в интернет через VPN соединение), например, с помощью Speedcheck.

Читайте также: