Debian l2tp client настройка

Обновлено: 07.07.2024

В продолжение темы VPN серверов на Debian, попробуем поднять L2TP+IPSec VPN сервер.

Устанавливать будем на том же сервере, где сейчас установлен VPN PPTP.

1. Настройка Debian, обновим пакеты и настроим сеть

Обновим систему и пакеты:

2. Установим VPN сервер l2tp + ipsec

В качестве ipsec демона будем использовать openswan, а в качестве l2tp сервера стандартный xl2tpd:

Openswan ставим из исходников, поскольку нет кандидатов на установки из репозиториев.

Ставим необходимые зависимости:

Настроим авторизацию через PreShared Key:

Скрипт для настройки сети:

Делаем скрипт исполняемым:

Теперь необходимо добавить скрипт в автозагрузку. Однако В Debian 9 по-умолчанию не работает файл-автозапуска скриптов rc.local. Запустим его.

Пишем в него следующее:

Делаем его исполняемым:

Включаем автозапуск rc-local:

Добавляем содержимое нашего скрипта /root/ipsec в файл rc.local перед exit 0 и запускаем скрипт:


В итоге мы имеем сервер, который может обслуживать VPN подключения, и по PPTP, и по L2TP+IPSec.

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

А подскажите как настроить L2TP VPN без IPSec.
С L2TP VPN с шифрованием IPSec нашел множество инструкций, и деже готовых скриптов, и даже получилось настроить. Но не могу найти ни одной инструкции L2TP VPN без IPSec.
Условия: Комп за роутером, порт 1701 проброшен и ТСР и UDP. ОС Ubuntu 18.04.5 LTS (чистая, со всеми последними обновлениями). Выходить в интернет через этот VPN не надо.
Я установил сервер L2TP
apt-get install xl2tpd
и как только не настраивал файл
vi /etc/xl2tpd/xl2tpd.conf
не запускается сервер, и подключиться к нему не могу.
port = 1701 пробросил в роутере
Может у кого есть скрипт настройки L2TP VPN без IPSec (шифрование просто не нужно в данном случае).

Я не понимаю зачем вообще L2TP без IPSEC? Используйте тогда вообще PPTP, что там, что там шифрование слезы (MPPE 128bit) и никого не напугаешь этим, если конечно вопрос не принципиальный использования UPD, а не TCP.

Ну и как-то так:
для L2TP/IPSec в качестве транспорта применяется протокол UDP, где порт 1701 используется в качестве порта отправителя и получателя для инициализации туннеля, порт UDP-500 применяется для обмена ключами шифрования, порт UDP-4500 для NAT-операций, протокол 50 (ESP) для передачи зашифрованных данных через IPSec.

Тут наверно спорить нет смысла. Каждый пользуется тем, что ему нужно и достаточно. Трудно да и зачем убеждать человека пользоваться тем, в чем он не нуждается. И он прав в своем выборе, поскольку удовлетворен.

Что касается портов, я в первом комментарии все порты перечислил.

airmeno Cпасибо что не хотите переубеждать! А вы можете прото помочь в том вопросе который я озвучил первым. Просто как настроить L2TP VPN без IPSec шифрования

Звезда активна
Звезда активна
Звезда активна
Звезда не активна
Звезда не активна

Важно! Прежде чем начать нам потребуется узнать версию Raspbian (Debian) на вашей машине. От этого будут зависеть некоторые тонкости.

1. Выполните команду
sudo cat /etc/os-release

в первой строке вывода будет информация о версии. Например:
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"

Итак, если у вас Jessie, то выполняйте пункты с 1 по . Если Wheezy то идите в конец страницы, там вас ждут некоторые небольшие хлопоты.

Сначала устанавливаем соединение IPsec, которое и создает шифрованный туннель. Затем внутри этого туннеля запускается протокол L2TP для авторизации по имени пользователя и паролю системы VPNKI.

Debian Jessie

*** Сначала IPSEC

2. Установим пакет strongswan для шифрования IPsec
sudo apt-get install -y strongswan

3. Добавим в файл /etc/ipsec.secrets общий ключ для всех соединений
sudo nano /etc/ipsec.secrets

вот прямо вот такой текст

: PSK "vpnki"

Сохраняем Ctrl+X

4. Откроем файл /etc/ipsec.conf
sudo nano /etc/ipsec.conf

и добавим в конец

conn %default
ikelifetime=16h
keylife=12h
rekeymargin=3m
keyingtries=1
keyexchange=ikev1
authby=secret
aggressive = no

Сохраняем Ctrl+X

5. Перезапустим strongswan
sudo ipsec restart

6. Проверим что IPsec устанавливает туннель, выполните команду
sudo ipsec up vpnki-l2tp

7. Проверим, что ассоциации созданы
sudo ipsec statusall

*** Затем xl2tpd

Инструкция для версии xl2tpd-1.3.1 (узнать версию можно из /var/log/syslog при старте xl2tpd)

8. Установим пакет xl2tpd для подключения по протоколу L2TP
sudo apt-get install -y xl2tpd

9. Настроим пакет xl2tpd, для этого добавим в файл /etc/xl2tpd/xl2tpd.conf новое соединение с именем vpnki

sudo nano /etc/xl2tpd/xl2tpd.conf

и добавим в конец следующий текст

10. Создадим новый файл
sudo nano /etc/ppp/options.l2tpd.client

Сохраняем Ctrl+X

11. Создайте управляющий файл для демона xl2tpd
sudo mkdir -p /var/run/xl2tpd
sudo touch /var/run/xl2tpd/l2tp-control

12. Перезапустите демон xl2tpd
sudo service xl2tpd restart

13. Теперь запустите соединение
sudo echo "c vpnki" > /var/run/xl2tpd/l2tp-control

14. Проверим, что соединение успешно установлено. Для этого выполните команду
sudo ifconfig -s

в ней вы должны обнаружить работающий интерфейс ppp0

15. Выполните команду ping для проверки доступности сервера vpnki
ping 172.16.0.1

*** Автозапуск при старте

17. Добавим установление соединения ipsec к серверу vpnki при старте системы. Для этого выполните:
sudo nano /etc/ipsec.conf
найдите параметр auto=add и замените его на auto=start

18. Осталось уже немного. Добавим старт соединения к серверу vpnki через соединение xl2tpd при старте системы
Для этого откроем файл
sudo nano /etc/rc.local

и добавим в него:

Сохраняем Ctrl+X
Обратите внимание, что в скрипте запуска есть команда перезапуска демона xl2tpd. Она нужна по причине наличия ранее описанного бага

19. Протестируем rc.local без перезагрузки
sudo /etc/rc.local

20. Соединение должно установиться. Для проверки выполните команду
sudo ifconfig -s

в ней вы должны обнаружить работающий интерфейс ppp0
Если все ок, значит скрипт в /etc/rc.local работает корректно

*** Маршруты

21. Осталось прописать маршруты. Сделать это можно как вручную, так и получив по DHCP от сервера vpnki
Для автоматического получения о сети VPNKI и сетей ваших других туннелей (DHCP Option 249) необходимо скачать, разархивировать и разместить этот файл (с названием splitp) в /etc/ppp/ip-up.d

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

Лучше переходите к п.23.

22. Измените права для исполнения файла при поднятии интерфейса

sudo chmod 755 /etc/ppp/ip-up.d/splitp

23. Если вы хотите все прописать руками, то сделать это можно так
В случае обрыва связи и ее восстановлении нам также потребуется автоматически прописать маршруты к сети VPNKI и к вашей "другой" сети. Для этого создайте файл

sudo nano -B /etc/ppp/ip-up.d/routeadd

Добавьте в файл следующие строки:

Сохраните нажав Ctrl+X

24. Измените права на исполнение файла при поднятии интерфейса ppp0

chmod 755 /etc/ppp/ip-up.d/routeadd

Если у вас Debian Wheezy

К сожалению для пользователей Wheezy, из репозитория устанавливается пакет strongswan версии 4.x.x, но. устанавливается некорректно (по крайней мере у нас) и поэтому не работает. Для нашей же конфигурации требуется версия пакета strongswan 5.2.1 который легко устанавливается на Jessie. Однако установить его на Wheezy все-таки возможно. Мы, конечно, должны предупредить, что вы делаете все на свой страх и риски и обязательно сделайте бэкап.

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

1. Выполните sudo nano /etc/apt/sources.list и сделайте так, что бы ваша Raspberry могла получать пакеты для двух типов ОС:

Сохраните Ctrl-X

2. Добавим новые слова для выбора версии ОС при обновлении. Для этого создайте новый файл

sudo nano /etc/apt/preferences

и добавьте в него

Package: *
Pin: release n=jessie
Pin-Priority: 900

Package: *
Pin: release n=wheezy
Pin-Priority: 300

Package: *
Pin: release o=Raspbian
Pin-Priority: -10

Or, if you want to stick to wheezy
Package: *
Pin: release n=wheezy
Pin-Priority: 900

Package: *
Pin: release n=jessie
Pin-Priority: 300

Package: *
Pin: release o=Raspbian
Pin-Priority: -10

Сохраните Ctrl-X

3. Сделайте команду apt-get upgrade для загрузки новых версий приложений

4. Установите требуемую версию strongswan 5.2.1 из репозитория Jessie командой

sudo apt-get install -t jessie strongswan

Если все успешно установилось, то переходите к настройкам ipsec и xl2tpd, которые приведены в пунктах 1 - 24

Наша система будет работать с многими типами домашних и офисных маршрутизаторов. Более подробно смотрите в разделе по настройке оборудования, а начать настройку лучше с этого примера.

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

Настройка IPSec

  • Проверьте наличие поддержки IPSec в вашем ядре:

Это можно сделать командой:

Если некоторые опции не поддерживаются, вам необходимо переконфигурировать ядро ОС.

При установке racoon выберите ручную настройку.

  • Откройте в Интернет-браузере http://gencert.campus.mephi.ru/. В поле "Login" вводим номер своей зачётной книжки (например, 112358), в поля "Password" вводим пароль для защиты сертификата (этот пароль не обязательно должен совпадать с паролем для доступа в Интернет) и нажимаем "Generate!". Сохраните сертификат в формате tar.
  • Далее, необходимо извлечь сертификаты стандарта X.509 из архива и переместить их в директорию /etc/racoon/certs:
  • Откройте файл /etc/racoon/racoon.conf в текстовом редакторе и заполните его следующим содержимым:
  • Откройте файл /etc/*ipsec-tools.conf в текстовом редакторе и заполните его следующим содержимым (случай туннельного режима):
  • Создайте сетевой интерфейс с натированием:
  • Запустите демон:

Настройка L2TP на базе XL2TPd

L2TP соединение в Debian можно реализовать с использованием пакета XL2TPd, либо OpenL2TP. Рассмотрим эти случаи по очереди.

  • Откройте терминал с правами суперпользователя (root). Если в вашей системе это запрещено из соображений безопасности, вам следует выполнять все действия с использованием утилиты sudo.
  • Проверьте наличие поддержки PPP в вашем ядре:

Это можно сделать командой:

Если некоторые опции не поддерживаются, вам необходимо переконфигурировать ядро ОС.

  • Проверьте наличие «ppp» устройства. При отсутствии его необходимо создать:
  • Установите пакеты:
  • Откройте в текстовом редакторе файл /etc/xl2tpd/xl2tpd.conf и допишите в конец (для студентов и аспирантов):

, либо (для сотрудников):

со следующим содержимым (для студентов и аспирантов):

, либо (для сотрудников):

Здесь и далее вместо foo следует укаpывать логин, а вместо bar - пароль для доступа в интернет. (Не путайте с паролем для сертификата!)

  • Откройте в текстовом редакторе файл «/etc/ppp/options», найдите строку «auth» и закомментируйте её.
  • Допишите (для студентов и аспирантов) в конец файла «/etc/ppp/chap-secrets» , или (для сотрудников) в конец файла «/etc/ppp/pap-secrets»:
  • Проверьте, загружен ли у вас модуль ядра ppp-generic комaндой lsmod. Если нет, загрузите его
  • Далее, необходимо отключить Network Manager. Для этого, проверьте стандартный runlevel в вашей системе. Например,

Т.е. в примере стандартным является runlevel 2. Затем, проверьте runlevel вашей системы в рабочем сотоянии:

Т.е. в примере система работает в runlevel 3. Обычно, эти значения совпадают, но, как видно из примера, не всегда.

  • Внимание! Следующее действие может привести к неработоспособности сети, в случае, если вы перезагрузка машину до окончательной настройки L2TP (или другого подключения)! Следует отключить задгузку Network Manager как в стандартном, так и в рабочем runlevel. Для этого надо переименовать ссылку на Network Manager в директории /etc/rdS, где S - номер runlevel. Для приведённого выше примера:

Перестройте запуск программ в соответствии с внесёнными изменениями:

Если вам потребуется восстановить подключение к сети по старому протоколу, то можно снова запустить Network Manager командой:

со следующим содержимым:

  • Сделайте скрипт исполняемым и выполнте его
  • Запустите демон:

После этого таблица маршрутизации должна выглядеть примерно так:

Если сервер доступен, то настройка соединения прошла успешно.

Настройка L2TP на базе OpenL2TP

  • Откройте терминал с правами суперпользователя (root). Если в вашей системе это запрещено из соображений безопасности, вам следует выполнять все действия с использованием утилиты sudo.
  • Проверьте наличие поддержки PPP over L2TP в вашем ядре:

Это можно сделать командой:

Если некоторые опции не поддерживаются, вам необходимо переконфигурировать ядро ОС.

Если в данном файле версия debian указана в численном виде, то можно использовать следующее соответствие чисел и имени:

Например, 6.0.2 - это "squeeze"

Скачайте пакет, соответствующий вашему дистрибутиву и релизу вашего ядра. Релиз ядра можно узнать командай uname -r. Например:

! Также предлагается отдельно собранная версия openl2tp-1.8 под debian wheezy[amd64], пакеты доступны по ссылкам 1 и 2 или из репозитория "deb http://mirror.mephi.ru/debian-mephi unstable main".

или если вы подключили репозиторий "deb http://mirror.mephi.ru/debian-mephi unstable main" (только для wheezy[amd64]):

  • Далее, необходимо отключить Network Manager. Для этого, проверьте стандартный runlevel в вашей системе. Например,

Т.е. в примере стандартным является runlevel 2. Затем, проверьте runlevel вашей системы в рабочем сотоянии:

Т.е. в примере система работает в runlevel 3. Обычно, эти значения совпадают, но, как видно из примера, не всегда.

  • Внимание! Следующее действие может привести к неработоспособности сети, в случае, если вы перзагрузита машину до окончательной настройки L2TP (или другого подключения)! Следует отключить задгузку Network Manager как в стандартном, так и в рабочем runlevel. Для этого надо переименовать ссылку на Network Manager в директории /etc/rdS, где S - номер runlevel. Для приведённого выше примера:
  • Перестройте запуск программ в соответствии с внесёнными изменениями:
  • Остановите Network Manager:

Если вам потребуется восстановить подключение к сети по старому протоколу, то можно снова запустить Network Manager командой:

Однако, для дальнейшей настройки L2TP его следует снова выключить.

  • Создайте файл «/etc/ppp/ip-up.d/mephivpn.sh» со следующим содержимым:
  • Сделайте скрипт исполняемым:
  • Запустите демон
  • Запустите утилиту настройки OpenL2TP (для студентов и аспирантов):

, либо (для сотрудников):

Здесь и далее вместо foo следует укаpывать логин, а вместо bar - пароль для доступа в интернет. (Не путайте с паролем для сертификата!)

Проверьте состояние соединения:

Если в строке state: указано ESTABLISHED, то конфигурирование пакета прошло успешно. Сохраните файл с настройками:

После этого таблица маршрутизации должна выглядеть примерно так:

Если сервер доступен, то настройка соединения прошла успешно.

Proxy

Если в командной строке "ping 8.8.8.8" сообщает о том, что связь до 8.8.8.8 есть, а тем ни менее на сайты не заходит, значит, вполне возможно, что вы забыли отключить прокси в настройках вашего браузера

Настраиваем L2TP VPN-сервер на платформе Linux (Debian / Ubuntu)

L2TP - один из наиболее популярных VPN-протоколов, обладающий, благодаря IPsec, отличной безопасностью, достаточной простотой и широкой поддержкой со стороны всех современных ОС. Для работы с ним не требуется установка дополнительного ПО и какие-либо сложные настройки. Мы уже рассматривали настройку L2TP VPN-сервера на платформах Windows и Mikrotik, а теперь расскажем, как настроить аналогичный сервер в Linux, дистрибутивах основанных на Debian или Ubuntu.

Перед тем, как приступать к работе над данной статьей мы внимательно изучили русскоязычный сегмент сети на предмет освещения данной темы и были весьма сильно удивлены. Большинство находящихся на первых страницах поиска ресурсов перепечатывает одну и ту же устаревшую инструкцию, даже в достаточно свежих публикациях. Но наш сайт с самого своего основания принципиально не занимается перепечатками (кроме переводов) и мы всегда проверяем на практике то, что рекомендуем нашим читателям. В этот раз нам пришлось потратить некоторое лишнее время на чтение документации, зато теперь мы можем предложить вам актуальный материал по настройке L2TP в Linux.

В качестве систем на тестовом стенде мы использовали Debian 10 и Ubuntu 20.04, но с некоторыми изменениями данная инструкция применима к любым версиям Linux со strongSwan версии 5.0 и выше.

Настраиваем IPsec

Именно с устаревшими настройками IPsec вам придется столкнуться в большинстве опубликованных инструкций. Нет, все даже будет работать, но вот безопасность такого решения окажется довольно низкой, не соответствующей современным требованиям. Поэтому, если у вас уже имеется настроенный экземпляр L2TP-сервера мы настоятельно советуем обновить его настройки.

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

Затем откроем файл настроек /etc/ipsec.conf и добавим в его конец следующие две секции:

Первая секция задает общие параметры: включает фрагментацию IKE и настраивает протокол обнаружения мертвых узлов (Dead Peer Detection, DPD), отвечающий за обнаружение неактивных клиентов. Вторая относится уже к L2TP-соединениям, указывая использовать транспортный режим IPsec, аутентификацию по общему ключу и задает используемые шифры. Приведенные значения являются рекомендуемыми и взяты из официальной документации strongSwan.

Общий ключ следует указать в файле /etc/ipsec.secrets, добавив в него следующую строку:

Где mySharedKey - общий ключ, так как от него зависит безопасность вашей VPN-сети мы рекомендуем использовать в качестве ключа случайно сгенерированную строку из букв, цифр и спецсимволов. Для этого можно воспользоваться командой:

Результатом ее выполнения станет случайная строка длинной в 18 символов.

l2tp-vpn-server-debian-ubuntu-001.jpg

После внесения указанных настроек перезапустим службу:

В Ubuntu имя службы несколько иное - strongswan-starter, поэтому команда будет иметь вид:

Настраиваем L2TP

Для реализации функций L2TP-сервера предназначен пакет xl2tpd, для его установки выполните:

Затем откройте файл настроек /etc/xl2tpd/xl2tpd.conf, раскомментируйте и приведите к следующему виду опции:

Большая часть опций относится к настройке протокола L2TP и требует понимания его работы, поэтому мы на них останавливаться не будем. Разберем те опции, которые имеют существенное значение. Параметр auth file указывает на файл с данными для аутентификации, а pppoptfile - набор опций для PPP-соединения, которое используется внутри L2TP-туннеля, name - имя сервера, которое будет использоваться для поиска аутентификационных данных в файле chap-secrets.

Опции local ip и ip range отвечают за локальный адрес сервера в VPN-сети и диапазон адресов для выдачи удаленным клиентам. Здесь можно использовать два подхода: выдавать клиентам адреса из диапазона локальной сети офиса и включить ProxyARP, в этом случае настраивать маршрутизацию на клиентах не требуется, они будут как-бы включены в общую сеть офиса на канальном уровне (L2), либо выдавать адреса из непересекающегося диапазона и использовать маршрутизацию. Автоматизировать создание маршрутов для Windows-клиентов можно с использованием PowerShell.

Для настройки PPP перейдем в /etc/ppp и скопируем стандартный файл настроек:

Затем открываем файл /etc/ppp/options.xl2tpd на редактирование и приводим к следующему виду. Опции перечислены в порядке их следования, нужно раскомментировать их и указать нужное значение, если опция отсутствует, то ее следует добавить в конце файла.

Если вы будете использовать ProxyARP то дополнительно раскомментируйте опцию:

Также для Windows-клиентов можно передать настройку DNS-серверов, для этого добавьте опции:

Это позволит настроить первичный и альтернативный DNS-сервера в системе.

Сохраним все внесенные изменения и перезапустим службу L2TP-сервера:

l2tp-vpn-server-debian-ubuntu-002.jpg

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

Первым указываем логин, затем имя службы, оно должно совпадать с тем, которое мы указали в опции name в xl2tpd.conf, после него идет пароль и IP-адрес клиента, символ * обозначает что можно присвоить любой адрес из выбранного диапазона. Если же требуется выдать клиенту постоянный адрес, то его следует указать явно, и он не должен входить в динамический диапазон указанный в ip range, например:

Для доступа к L2TP-серверу следует разрешить в брандмауэре входящие подключения к портам 500 UDP и 4500 UDP, подключение к 1701 UDP, вопреки распространенному заблуждению, разрешать не следует.

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