Setup l2tp vpn linux

Linux Debian + L2TP + IPsec ( Налаживаем подключение linux-системы к L2TP-серверу, с обязательным шифрованием VPN-трафика. )

OS: «Linux Debian 8/9/10», «Linux Ubuntu Server 16/18/20 LTS».
Apps: «strongswan», «xl2tpd», «ip», «netplan».

Задача: наладить подключение linux-системы к L2TP-серверу, с обязательным шифрованием VPN-трафика.

Для справки: L2TP («Layer 2 Tunneling Protocol») представляет собой сетевой протокол туннелирования канального уровня, сочетающий в себе протокол L2F («Layer 2 Forwarding»), разработанный компанией «Cisco», и протокол PPTP корпорации «Microsoft». Позволяет организовывать VPN с заданными приоритетами доступа, однако не содержит в себе средств шифрования и механизмов аутентификации — потому для создания защищённой VPN его используют совместно с IPSec.

Для управления L2TP-соединениями воспользуемся подсистемой «xl2tpd», а для шифрования — «strongSwan».

Последовательность действий такова:

1. Конфигурирование подсистемы IPsec-шифрования;
2. Конфигурирование подсистемы L2TP-подключений;
3. Автоматизация добавления сетевых маршрутов;
4. Ручное управление VPN-соединениями;
5. Автоматизация инициализации VPN-соединений.

Конфигурирование подсистемы IPsec-шифрования.

Инсталлируем необходимые приложения и утилиты:

У проекта «strongSwan» хорошая документация, из которой для решения нашей простой задачи вполне достаточно чтения пары страниц: «ConnSection» и «IpsecCommand».

В основном конфигурационном файле подсистемы IPsec-шифрования «strongSwan» описываем общие параметры и правила шифрования трафика от IP до IP (пример связи с L2TP/типовым IPsec-шлюзом на базе «RouterOS»):

# ipsec.conf — strongSwan IPsec configuration file

# Basic configuration
config setup
# strictcrlpolicy=yes
# uniqueids = no
# nat_traversal = yes
# protostack = netkey

# Default options for encryption of connections
conn %default
ikelifetime = 60m
keylife = 20m
rekeymargin = 3m
keyingtries = 1
keyexchange = ikev1
authby = secret
ike = aes128-sha1-modp2048!
esp = aes128-sha1-modp2048!

# Encryption of traffic to the «l2tp.example.net»
conn ipsec-gate.example.net
# Automatic start of encryption at system startup
auto = start
# Restarting encryption if negotiation fails
dpdaction = restart
# Restart encryption on unexpected close
closeaction = restart
# Reconnect unlimited number of times
keyingtries = %forever
keyexchange = ikev1
pfs = no
authby = secret
type = transport
left = %defaultroute
leftprotoport = 17/1701
right = 100.200.250.21
rightprotoport = 17/1701

Секретный ключ шифрования PSK («Pre-Shared Key»), используемый для предварительной клиент-серверной аутентификации, выносится в отдельный файл, где указывается, в каких условиях таковой должен применяться:

Защищаем файл с паролями от доступа посторонних:

Для применения изменений в конфигурации перезапускаем сервис подсистемы IPSec-шифрования:

Читайте также:  Linux установка пакета tar xz

Если конфигурация IPsec выше подразумевает автоматическое включение шифрования, то сразу после перезапуска «strongSwan» мы уже должны получить желаемое.

Если режим запуска шифрования для какого-то направления выбран «ручной» (auto=add), то запускаем его соответствующей командой:

Соответственно, при необходимости, аналогичной ручному запуску командой можно шифрование в заданном направлении остановить:

Просматриваем статус IPsec-соединений:

Security Associations (1 up, 0 connecting):
ipsec-gate.example.net[1]: ESTABLISHED 43 seconds ago, 10.20.30.45. 100.200.250.21
ipsec-gate.example.net{1}: INSTALLED, TRANSPORT, reqid 1, ESP in UDP SPIs: c57b51bb_i 04fa2652_o
ipsec-gate.example.net{1}: 10.20.30.45/32[udp/l2f] === 100.200.250.21/32[udp/l2f]

Теперь весь трафик к целевому сетевому узлу инкапсулируется в IPsec.

Конфигурирование подсистемы L2TP-подключений.

Инсталлируем необходимые приложения и утилиты:

Параметры для настройки L2TP-подключения посредством «xl2tpd» хорошо описаны во встроенном руководстве по эксплуатации, вызываемом командой «man xl2tpd.conf» (как вариант, можно посмотреть web-версию).

Описываем параметры VPN-канала, который должен быть установлен посредством «xl2tpd»:

[lac l2tp-gate.example.net]
lns = 100.200.250.21
;ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client-gate.example.net
length bit = yes
autodial = yes
redial = yes
redial timeout = 30

Описываем параметры PPP-соединения, включая логин и пароль для аутентификации:

ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-mschap-v2
noccp
noauth
mtu 1280
mru 1280
noipdefault
nodefaultroute
usepeerdns
connect-delay 5000
name vpn-node0-tunnel
password strongSecretPassword

Защищаем файл с паролем от доступа посторонних:

Для применения изменений в конфигурации перезапускаем сервис:

Если конфигурация «xl2tpd» выше подразумевает автоматическое создание VPN-туннеля, то сразу после перезапуска «xl2tpd» мы уже должны получить желаемое.

Если режим запуска создания VPN-туннеля выбран «ручной» (autodial=no), то запускаем его соответствующей командой:

Соответственно, при необходимости, аналогичной ручному режиму командой можно определённый VPN-туннель выключить и удалить виртуальный интерфейс:

После вышеприведённых действий в перечне сетевых интерфейсов должен появится новый виртуальный PPP-интерфейс, через который осуществляется передача трафика до целевого L2TP-сервера:

.
ppp0: flags=4305 mtu 1280
inet 10.172.255.2 netmask 255.255.255.255 destination 10.172.255.1
ppp txqueuelen 3 (Point-to-Point Protocol)
.

Простейшим способом проверяем доступность опорного IP-адреса на стороне L2TP-сервера:

Слегка напрягает, что сервисы, обеспечивающие работу IPsec и L2TP прослушивают ряд портов в ожидании входящих подключений тогда, как нам требуется от них только работа в роли клиентов — но, насколько я понимаю, это неотъемлемая особенность работы подсистем, обеспечивающих двухсторонние сетевые туннели:

Proto . Local Address Foreign Address PID/Program name
udp . 0.0.0.0:4500 0.0.0.0:* . /charon
udp . 0.0.0.0:500 0.0.0.0:* . /charon
udp . 0.0.0.0:1701 0.0.0.0:* . /xl2tpd
.

Разумеется, можно прикрыть сетевые сервисы защитным экраном «iptables», предписав предоставлять доступ к портам только для запросов со стороны L2TP-сервера.

Читайте также:  Monitor battery on linux

Автоматизация добавления сетевых маршрутов.

В производственной среде VPN-туннели чаще предназначены для передачи только выделенного трафика — к тем сервисам, что нуждаются в изоляции внутри корпоративной сети. Соответственно, после установления VPN-соединения, необходимо активировать дополнительные сетевые маршруты, направляющие выделенный трафик не через «шлюз по умолчанию», а через L2TP-сервер. Такой функционал давно реализован через систему «хуков (hook)», запускающий произвольные скрипты при изменении состояния PPP-соединений.

Пишем простой bash-скрипт, автоматически запускаемый при инициализации PPP-соединения и добавляющий произвольный набор маршрутов с предварительной проверкой наличия опорной IP-адресации (в имени скрипта «ppp-hook» не допускается символов «.», так что для наглядности заменяем их «-«):

if [[ «${PPP_LOCAL}» == «10.172.255.2» ]] ; then
sleep 1
ip route add 10.10.10.0/24 via 10.172.255.1
ip route add 192.168.10.0/24 via 10.172.255.1
fi

Не забываем сделать скрипт «исполняемым» (в противном случае подсистема PPP проигнорирует его):

Ручное управление VPN-соединениями.

Учитывая то, что сервисы шифрования и поддержки PPP-туннеля реализованы в двух независимых подсистемах, ради обеспечения должного уровня безопасности важно не забывать об очерёдности их включения и выключения — чтобы в какой-то момент через недоверенные участки сети не пошёл незашифрованный трафик.

Последовательная инициализации IPsec-шифрования и L2TP-туннеля:

Последовательное выключение L2TP-туннеля и IPsec-шифрования:

# xl2tpd-control disconnect l2tp-gate.example.net && xl2tpd-control remove l2tp-gate.example.net && ipsec down ipsec-gate.example.net

Автоматизация запуска посредством «ifupdown».

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

.
iface eth0 inet dhcp
.
sleep 5 && post-up ipsec up ipsec-gate.example.net && xl2tpd-control connect l2tp-gate.example.net &

Автоматизация запуска посредством «Netplan».

Новомодная подсистема управления сетевой конфигурацией «Netplan» не имеет встроенного обработчика изменения состояния, что странно. Придётся воспользоваться дополнительным инструментом «Network Dispatcher»:

if [[ «${IFACE}» == «eth0» ]] ; then
sleep 5
ipsec up ipsec-gate.example.net && xl2tpd-control connect l2tp-gate.example.net &
fi

Добавляем скрипту статус «исполняемого» (иначе «networkd-dispatcher» проигнорирует его):

Поблагодарить автора ( сделайте свой денежный вклад в хорошее настроение )

Заметки и комментарии к публикации:

Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )

Источник

VPN в Linux по протоколу L2TP

В большинстве случаев VPN соединение настраивается по туннельному протоколу L2TP.

Поддержки VPN соединения с протоколом L2TP/IPSec в системе Linux по умолчанию нет. Я использую в качестве основной системы Debian 10 и у меня его нет.

список возможных соединений debian 10

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

Читайте также:  Copying directory linux command

Посмотрев дистрибутив Linux mint и Ubuntu оказалось, что и там нет необходимых протоколов.

Так как все эти системы основаны на Debian, решение данного вопроса будет одинаковым на всех системах.

Далее я опишу процесс настройки VPN протоколу L2TP в системе Debina 10

Для начала нам нужно установить необходимые пакеты, которые обеспечат поддержку необходимых нам протоколов.

Необходимые пакеты L2TP для VPN соединения есть в репозиториях Debian 10, поэтому просто ставим их при помощи менеджера пакетов Synaptic.

Открываем менеджер и в поиске пишем L2TP.

после поиска отмечаем для установки два пакета

network-manager-l2tp и его «графическую часть» gnome, удобно для тех кто все делает в графическом интерфейсе

vpn network-manager-l2tp выбор пакетов

Отмечаем нужные пакеты для установки

vpn network-manager-l2tp установка пакетов

В результате выделится зеленым три пакета, для установки.

Со всем соглашаемся и нажимаем применить, дожидаемся окончания установки.

Устанавливаем пакеты для L2tp в терминале

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

Устанавливаем пакет network-manager-l2tp

sudo apt install network-manager-l2tp

Устанавливаем пакет network-manager-l2tp-gnome

sudo apt install network-manager-l2tp-gnome

vpn l2tp установка пакетов из терминала vpn l2tp установка пакетов из терминала

Настраиваем само подключение по протоколу L2TP

После установки всех необходимых пакетов нам остается только выбрать необходимый способ подключения в окне сетевых соединений.

vpn l2tp настраиваем соединение

Далее все заполняем согласно вашим данным, все данные по подключению вам должен предоставить администратор.

Шлюз — ip вашего сервера, соответственно далее логин и пароль.

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

настраиваем соединение

Не забудьте указать PSK ключ для подключения, ниже показано где его ввести

настраиваем соединение

После ввода всех данных, сохраняете настроенное соединение и можете выбрать его по клику левой кнопки мыши в трее

l2tp подключаемся

На этом, настройка VPN подключения закончена.

Если есть, что добавить или поделится опытом пишите в комментариях.

Я настраивал вот по такому протоколу:
Настройка internet beeline vpn alexandr@mx:~/Настройка internet beeline vpn
$ sudo su
root@mx:/home/alexandr/Настройка internet beeline vpn# ls
xl2tpd_1.3.12-1.1_amd64.deb
libstrongswan_5.7.2-1_amd64.deb
strongswan-starter_5.7.2-1_amd64.deb
strongswan_5.7.2-1_all.deb
trongswan-libcharon_5.7.2-1_amd64.deb
strongswan-charon_5.7.2-1_amd64.deb
network-manager-l2tp_1.2.10-1_amd64.deb
network-manager-l2tp-gnome_1.2.10-1_amd64.deb
dpkg -i xl2tpd_ 1.3.12-1.1_amd64.deb dpkg -i libstrongswan_5.7.2-1_amd64.deb dpkg -i strongswan-starter_5.7. 2-1_amd64.deb dpkg -i strongswan-libcharon_5.7.2-1_amd64.deb dpkg -i strongswan-charon_5.7.2-1_amd64.deb dpkg -i strongswan_5.7.2-1_all. deb dpkg -i network-manager-l 2tp_1.2.10-1_amd64.deb dpkg -i network-manager-l2tp- gnome_1.2.10-1_amd64.deb

Windows 10 отключается интернет

Windows 7 USB 3.0

загрузчик UEFI в Windows

Canon LBP 6000 в Linux

погода Linux Conky

LAMP Mongaro

Linux systemctl

работа с протоколом SSH

apt-key 8 Linux

LAMP в Linux

Audacity

© 2019-2023 Про ПК. Инструкции по работе на компьютере, настрока операционных систем Windows и Linux, использование программ.

Источник

Оцените статью
Adblock
detector