11
8月
2023
VPN по протоколу L2TP за 5 минут
17:04

VPN по протоколу L2TP за 5 минут

11 8月 2023 17:04

В статье рассказано о настройке VPN типа L2TP/IPSec под ОС Linux Mint 21.2.

Введение

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

Для использования типа VPN типа L2TP/IPSec PSK.

(Инструкция была переработана и проверена 04.12.2023 для совместимости с Ubtuntu 20.04 и 22.04 / Linux Mint 21 / LxLE).

Удаление Libreswan

Обновление кеша apt:

sudo apt update

Данная команда удалит libreswan и автоматически установит strongswan:

sudo apt-get remove libreswan

Запуск и регистрация службы strongswan в systemd:

sudo systemctl strongswan-starter.service start
sudo systemctl strongswan-starter.service enable

Переустановка плагина Strongswan для NetworkManager

sudo apt reinstall network-manager-l2tp network-manager-l2tp-gnome

Генерация общего ключа Pre-shared key

В качестве общего ключа можно использовать любую последовательность (часто рекомендуют 12345678 🙂),
но лучше использовать по крайней мере 128-битный ключ.

dd if=/dev/random count=16 bs=1 | xxd -ps

PSK ключ следует передать между машинами безопасным образом (не через электронную почту, а, например, через другой VPN или с помощью USB-флешки).

Настройка сервера L2TP

Настраиваем роутер, на котором запускаем VPN типа L2TP - вводим общий ключ, имя пользователя и пароль.

Общие настройки - Изменить набор компонентов
Изменить набор компонентов роутера Zyxel

Добавление VPN L2TP/IPSec на роутере Zyxel

Добавляем сервер L2TP/IPsec

Выполняем настройку VPN сервера. Для этого, заходим в меню "Приложения" в левой части окна и нажимаем мышью на название VPN L2TP/IPSec. Откроется экран для настройки VPN сервера:
Основные настройки сервера L2TP/IPSec
Предоставление прав пользователю (имя пользователя и пароль добавили ранее).
Предоставляем пользователю возможность подключения

Запуск службы на клиенте Ubuntu / Linux Mint

sudo systemctl enable ipsec.service
sudo systemctl start ipsec.service

Создаем подключение к L2TP серверу (настройка L2TP на клиенте)

Следующие настройки для L2TP/IPSec PSK.

В системном лотке Ubuntu / Linux Mint левой кнопкой мыши щелкнуть по иконке сети

  • Соединения VPN - Настроить VPN
    l2tp-01

Выбираем вместо Ethernet тип VPN в выпадающем списке
l2tp-02

Тип "Layer2 tunneling protocol (L2TP)"
l2tp-03

Кнопка "Cоздать".
l2tp-04

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

  • Шлюз (Gateway - белый IP адрес домашнего роутера)

  • Тип - Пароль

  • Имя пользователя

  • Пароль
    l2tp-05

  • Enable IPSec tonnel to L2TP host

  • Pre-shared key
    l2tp-06

В системном лотке нажимаем на значко сети - Соединения VPN - наше подключение.

Подключение к VPN в моём случае заработало сразу.
connected

Если нет - проверяем параметры (IP-адрес сервера, pre-shared ключ, имя пользователя, пароль, возможность подключения).
На клиенте, поскольку он является инициатором, открывать порты на брандмауэре не нужно. На сервере должны быть открыты на вход порты 1701/UDP, 500/UDP и 4500/UDP (при включении приложения VPN L2TP/IPSec правила для Firewall добавляются в Zyxel Keenetik автоматически).

Протокол L2TP работает на втором, пакетном уровне OSI и не блокируется внутри РФ ни мобильными операторами, ни провайдерами фиксированного Интернет при передаче между российскими автономными системами. Например, между Мегафоном и Ростелекомом.

Настройка маршрута VPN соединения на клиенте

Если не настраивать маршрут в свойствах подключения, то будет доступен только роутер (шлюз).

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

1) Вначале открываем свойства подключения (на панели Network Manager в системном лотке нажимаем левую кнопку мыши - "СоединенияVPN" - "Параметры соединений". Откроется окно с со списком подключений подключений:
Маршруты на клиенте
Выбираем нужное подключение VPN и нажимаем на шестерню "свойства".

Выполняем настройку маршрута - на закадке IPv4 нажимаем "Маршруты", затем "Добавить":
Добавление маршрута
Заполняем параметры:

  • адрес - 192.168.1.0
  • маска сети - 255.255.255.0
  • шлюз - 192.168.1.1
  • метрика - 1

(Где вместо IP-адреса 192.168.1.0 указываем адрес своей локальной домашней сети, например, 192.168.77.0,
вместо шлюза 192.168.1.1 указываем IP-адрес шлюз домашней сети, например 192.168.77.1).

Через VPN в домашнюю сеть можно заходить на компьютеры в доме (FTP и т.д.). Доступ в Интернет клиентов из домашней сети также работает.

Такие же настройки можно выполнить на смартфоне под ОС Android.
Настройка VPN в Android
Настройка VPN в Android - продолжение

Дополение от 27.11.2023:

Если трафик с ПК в Интернет проходит мимо VPN

Проблема: соединение VPN с сервером успешно установлено, но трафик клиента не идёт через VPN.

Решение: На клиенте (ПК на работе или ноутбуке) настраиваем маршрут.*

1) добавил новый маршрут - к внешнему "белому" IP адресу L2TP сервера xx.xx.xx.xx,
через роутер 192.168.1.1 (IP-адрес шлюза default gateway на работе).

sudo ip route add xx.xx.xx.xx via 192.168.1.1

2) удалил старый маршрут со шлюзом по по умолчанию

sudo ip route del default

3) добавил новый маршрут - весь трафик через VPN сервер, внутренний адрес которого в сети за VPN - yy.yy.yy,yy.

sudo ip route add default via yy.yy.yy.yy

где:
xx.xx.xx.xx - фиксированный "белый" IP адрес VPN сервера (роутера) в сети Интернет,
192.168.1.1 - IP адрес шлюза (роутера) рабочей локальной сети, из которой подключаемся (заменить на реальный),
yy.yy.yy.yy - IP адрес роутера в удалённой локальной сети, к которой подключаюсь.

Пример сценария на языке shell:

Пусть рабочий роутер имеет ip-адрес 192.168.1.1, а домашний роутер 192.168.0.1, внешний IP домашнего рутера с VPN 35.12.56.197:

#!/bin/sh
sudo ip route add 35.12.56.197 via 192.168.1.1
sudo ip route del default
sudo ip route add default via 192.168.0.1

Сохранил сценарий в домашней папке под именем gw.sh, задал права:
chmod +x gw.sh

Запуск скрипта - командой:

~/gw.sh

После отключения от VPN восстановить работу сети можно командой:

sudo service networking restart


相关出版物