L2TP/IPSec на Huawei USG6510E – это технология организации защищённого удалённого доступа, где протокол L2TP используется для создания логического туннеля, а IPSec обеспечивает шифрование и аутентификацию трафика. В сочетании они позволяют безопасно подключать удалённых пользователей к корпоративной сети через Интернет.

В данной инструкции представлен простейший вариант настройки L2TP/IPSec без использования сертификатов. На стороне клиента используется ОС Windows и UniVPN .
Настройка сервера.
Интерфейс.
Выбираем любой удобный интерфейс и назначаем на него внешний IP-адрес. На этот интерфейс будут подключаться клиенты из филиалов.

Настройка через CLI.
|
1 2 3 4 5 6 7 |
system-view interface GigabitEthernet0/0/4 undo shutdown ip address 10.150.170.1 255.255.255.0 alias IPSEC-VPN service-manage ping permit quit |
Добавляем интерфейс в зону untrust.
|
1 2 |
firewall zone untrust add interface GigabitEthernet0/0/4 |
Пул для VPN.
Создаем пул адресов, которые будут раздаваться внутри IPsec.

Настройка через CLI.
|
1 2 3 4 |
system-view ip pool IPSEC-POOL section 0 192.168.60.2 192.168.60.20 dns-list 192.168.60.1 |
Домен и пользователи.
Создаем отдельный домен для клиентов L2TP/IPsec.

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

Настройка через CLI.
Создаем домен и назначаем сценарий использования.
aaa (authentication, authorization, accounting) – единая система управления доступом на USG. Настройки схемы и домена выполняются через неё.
|
1 2 3 4 5 6 |
system-view aaa domain IPSEC-DOMAIN service-type internetaccess l2tp ike quit quit |
Создаем пользователя vpnuser в домене ipsec-domain.
|
1 2 3 4 |
system-view user-manage user vpnuser domain ipsec-domain password Pass-135 quit |
Созданные пользователи появляются в указанном домене. Если домен не указывать, то пользователь создастся в домене default. Можно использовать домен LDAP.
Политика IPSec.
L2TP over IPSec – это специальный раздел с мастером настройки, предназначенным только для L2TP/IPSec-клиентов.
В этом разделе режим site-to-multisite выбирается автоматически и изменить его нельзя.

Если перезайти в уже созданную политику, то можно обнаружить следующие настройки.
Mode: Site-to-multisite.
Peer Type: L2TP over IPSec Client.

Virtual System: public – если на USG включена технология виртуальных систем, здесь выбирается, в каком VSYS создаётся политика.
Policy Name – имя создаваемой IPSec-политики.
Local Interface – интерфейс, через который выполняются L2TP/IPSec соединения. Выбираем созданный ранее интерфейс.
Local Address – IP-адрес сервера IPsec. Выбирается автоматически из выбранного интерфейса.
Peer Address – адрес удалённого пира. Для L2TP/IPSec -клиентов это всегда Any, потому что клиенты подключаются с разных IP-адресов из интернета.
Authentication Type – способ аутентификации в IPSec.
Pre-shared key: Pass-135 – общий заранее согласованный ключ. Стандартный и единственно используемый вариант для L2TP/IPSec. Это пароль, который должен совпадать на обеих сторонах – на USG и на устройстве клиента. Вводим сложный пароль из не менее 8 букв разного регистра, цифр и спец.символов.
Local ID – идентификатор локальной стороны в IKE. В L2TP/IPSec обычно не требуется указывать, используется IP-адрес по умолчанию.
Peer ID — идентификатор удалённого клиента. Для L2TP/IPSec не используется (клиенты разные, ID неизвестен).Оставляется пустым.
Add Security Policy – кнопка, чтобы создать соответствующую двустороннюю security policy, которая разрешит IKE/IPsec трафик на выбранный интерфейс. Система сама предложит необходимые правила. Политиками займемся позже.
Authentication Mode – метод аутентификации внутри L2TP (не IPSec). Это проверка логина-пароля пользователя в туннеле.
PAP – передаёт пароль в незашифрованном виде. Используется только если клиент не поддерживает CHAP. Нежелательно.
CHAP – передаёт хэш пароля, более безопасный метод. Выбираем его.
IP Address Pool – пул IP-адресов, которые выдаются VPN-клиентам при подключении. Выбираем созданный ранее пул. Выбранный тут пул автоматически добавляется в default-lns группу в разделе L2TP.
Split Tunnel – разделенный туннель.
Enabled – в туннель идёт только корпоративный трафик, весь остальной интернет идёт напрямую через провайдера клиента.
Disabled – весь клиентский трафик (включая интернет) идёт через VPN.
При активации доступно новое поле.
Accessible Network – это список сетей, к которым VPN-клиент получит доступ через туннель, когда включён Split Tunnel. Это аналог параметра Windows «Использовать основной шлюз в удалённой сети», но с ручным указанием подсетей.
Info – пояснение под формой.
Данный мастер автоматически создаёт L2TP-группу и привязывает IP-пул. Лучше создавать только одну L2TP over IPSec политику. Если подключение не работает, проверяйте default-lns и параметры аутентификации пользователей. При создании нескольких политик могут возникать конфликты между L2TP и IPSec.

Data Flow to Encrypt – это правило, которое определяет, какой трафик должен шифроваться IPSec-политикой. Нужно добавить, иначе система не разрешит сохранить настройки. По сути, для L2TP/IPSec весь трафик туннеля шифруется автоматически, и этот Data Flow служит только для корректного завершения конфигурации, а не для фильтрации реального трафика. Поэтому в настройке указываем any. В других ситуациях можно выбрать определенные адреса и протоколы.
Далее стандартное предупреждение. Оно появляется, когда выставлены значения any, потому что USG думает, что весь трафик может идти через IPSec, даже тот, который шифровать не нужно. Нажимаем ОК.

В site-to-site IPSec за этим нужно следить. Ненужный трафик через туннель может создать нагрузку или конфликт.
В L2TP over IPSec это не критично, потому что IPSec шифрует только L2TP-туннель (PPP-сессии), никакой другой трафик из локальной сети через этот туннель не пойдёт, пока клиент не подключен, т.е. предупреждение носит формальный характер.
Reverse Route Injection (RRI) – это функция, используемая для автоматического добавления маршрутов в локальную маршрутизируемую таблицу устройства, чтобы пакеты, возвращающиеся от VPN-клиентов, корректно доставлялись обратно в туннель. Управлять можно только значением приоритета. Менять Priority нужно только, если есть несколько маршрутов к одной сети и требуется явно задать предпочтение.
IKE/IPSec Proposal (предложение) – это набор правил шифрования и параметров безопасности, которые используют две стороны (клиент и Huawei USG) для построения IPsec-туннеля.
Предложение делится на две фазы.
IKE Proposal – параметры фазы 1. Устанавливают защищённый канал для переговоров.
IPsec Proposal – параметры фазы 2. Шифруют трафик внутри канала.
IKE Parameters (фаза 1).
IKE Version: IKEv1 – это версия протокола IKE, используемого для установки защищённого канала между клиентом и сервером перед началом IPSec-шифрования. Windows L2TP/IPsec поддерживает только IKEv1.
Negotiation Mode: Automatic или Main – режим согласования, определяет, как проходит обмен параметрами в фазе 1 IKE. Automatic – USG сам использует подходящий режим. Aggressive Windows не поддерживает. Main – может не разрешить выбрать система.
Encryption: AES-256 – шифрование канала фазы 1. Стандартно и безопасно. Если не заработает, для совместимости можно отметить AES-128. Если в списке первым стоит AES-256 – Windows выберет AES-256. Если первым стоит AES-128 – Windows выберет AES-128. Как правил порядок фиксированный. Обычно 256 приоритетнее, и он и будет использован.
Authentication: SHA2-256 – хеш-алгоритм аутентификации. Win10+ поддерживает.
DH Group: 14 – параметры Диффи–Хеллмана (обмен ключами). Совместимо с Windows.
SA Timeout: 86400 – срок действия SA фазы 1 (24 часа). Стандартный нормальный таймаут.
IPSec Parameters (фаза 2).
Encapsulation Mode: Transport – режим инкапсуляции IPsec во второй фазе.
Transport – используется для L2TP/IPsec в Windows. IPsec шифрует только полезную нагрузку (L2TP), не полностью весь IP-пакет.
Tunnel – шифрует весь исходный пакет, используется в Site-to-Site.
Automatic – устройство само выбирает, но для L2TP лучше явно ставить Transport.
Security Protocol: ESP – стандартный протокол для шифрования в IPsec.
ESP Encryption: AES-256 – симметричное шифрование, защищает содержание данных фазы 2. Полностью поддерживается Windows и UniVPN. Можно включить также AES-128 – устройства сами выберут совпадающий набор.
ESP Authentication: SHA2-256 – аутентификация подтверждает целостность данных с использованием хэш-функции. SHA2-256 полностью поддерживается Windows 10+.
PFS (Perfect Forward Secrecy) – совершенная прямая секретность. Создаёт отдельный DH-обмен для фазы 2. Windows L2TP/IPsec не поддерживает PFS, поэтому, выставляется NONE.
SA Timeout (Phase 2 Lifetime) – жизненный цикл SA для IPsec-туннеля.
SA = Security Association (ассоциация безопасности). Это внутренний IPsec-объект, который хранит ключи шифрования, параметры шифрования, таймауты, параметры туннеля. Именно SA определяет: как шифруются пакеты, какие ключи используются и сколько времени они действительны. SA Timeout – когда SA нужно пересоздать.
By Time – сколько секунд «живет» SA фазы 2. Типовое значение: 3600 секунд (1 час).
By Traffic – максимальный объём данных через SA. Когда достигнут – SA пересоздаётся. Типовое значение 5242880 KB (≈ 5 ГБ).
Windows и большинство клиентов согласуют таймаут только по времени. Значение по трафику фактически используется редко, но его можно оставить по умолчанию.
Dead Peer Detection (DPD) – это механизм проверки, «жив ли» IPSec-клиент или удалённый туннель. Если клиент пропал (например, потерял интернет), USG должен это заметить и закрыть SA, чтобы освободить ресурсы и не держать «зависший» туннель.
Detection Mode.
Periodic – USG отправляет проверочные пакеты регулярно, каждые N секунд. Надёжно, рекомендуемо.
On-demand – проверка отправляется только если трафика нет или есть подозрение на разрыв. Используется редко.
Detection Interval: 30 сек – интервал отправки запроса клиенту о его актуальности.
Retry Interval: 15 сек – если ответа нет, через сколько повторять проверку.
Retrans Times: 3 раза – сколько повторных попыток считать нормой, прежде чем признать туннель «мертвым».
После создания политики, её можно найти и отредактировать при необходимости в разделе IPSec.
Группа L2TP.
Настройки группы определяют параметры L2TP-сервера: безопасность туннеля, аутентификацию пользователей и сетевые параметры (IP-адресация). Редактируем существующую группу.

Group Type – тип группы.
LNS (L2TP Network Server) – режим сервера. Принимает подключения.
LAC (L2TP Access Concentrator) – режим клиента. Инициирует подключения к другому серверу.
Local Tunnel Name – имя туннеля на стороне сервера.
Peer Tunnel Name – ожидаемое имя туннеля на стороне клиента. Это дополнительная мера безопасности и идентификации.
Tunnel Password – общий ключ для аутентификации туннеля. Должен совпадать у клиента и сервера.
Authentication Domain – домен аутентификации пользователей.
Associated Zone – зона безопасности для туннеля.
L2TP Authentication:
PAP – пароль в открытом виде (ненадёжно).
CHAP – защищённая аутентификация (рекомендуется).
Присваиваем IP-адрес для внутреннего сервера и диапазон раздаваемых адресов (созданный ранее пул).

User Address Assignment – назначение адреса пользователя.
Server Address/Subnet Mask – IP-адрес сервера LNS.
Address Pool – пул IP-адресов для выдачи клиентам.
Настройка группы через CLI.
|
1 2 3 4 5 |
system-view l2tp-group default-lns tunnel password cipher Pass-135 allow l2tp virtual-template 0 remote domain ipsec-domain quit |
Активация сервера L2TP.
После того как конфигурация готова, активируем глобальную настройку L2TP.
Через CLI.
|
1 2 |
system-view l2tp enable |
Сервис-схема.
[Создается автоматически при создании группы в GUI.]
service-scheme – это набор правил, определяющий что получит пользователь, после того как подключился (IP, DNS, маршруты и тп).
Схема настраивается напрямую только через CLI. В GUI схема автоматически создается при создании или редактировании группы L2TP. Т.е. она уже создана выше. Для понимания процессов представлено создание через CLI.
|
1 2 3 4 |
aaa service-scheme IPSEC-SCHEME ip-pool IPSEC-POOL quit |
Удаление схемы и всех ее настроек внутри.
|
1 2 |
aaa undo service-scheme service-scheme IPSEC-SCHEME |
Просмотр схем.
|
1 |
display service-scheme |
Просмотр конкретной схемы.
|
1 |
display service-scheme name IPSEC-SCHEME |
У автоматически созданной схемы не удобное название в виде набора цифр. Через CLI можно задавать любое собственное название.
Виртуальный интерфейс.
[Создается автоматически при создании группы в GUI.]
Virtual-Template – это шаблон туннелей L2TP, который используется как основа для создания виртуальных интерфейсов для клиентов. Создан автоматически выше при настройках в графическом интерфейсе. Для понимания процессов представлено создание через CLI.
|
1 2 3 4 5 6 7 8 9 |
system-view interface Virtual-Template0 ppp authentication-mode chap y remote service-scheme IPSEC-SCHEME ip address 192.168.60.1 255.255.255.0 alias L2TP_LNS_0 service-manage ping permit quit |
Для Virtual-Template зона trust или не назначается.
Чтоб можно было пинговать с клиентов IP-адрес 192.168.60.1 на интерфейсе настроен ping permit.
Просмотр состояния.
|
1 |
display interface Virtual-Template |
Просмотр конфигурации.
|
1 |
display current-configuration interface Virtual-Template0 |
Если были созданы лишние виртуальные интерфейсы, то удалить их можно так.
|
1 |
undo interface Virtual-Template1 |
Если интерфейс привязан к default-группе, то удалить его не получится.
Отвязка всех настроек от дефолтного интерфейса
|
1 2 |
l2tp-group default-lns display this |
Всё что есть – отвязываем.
|
1 2 |
undo allow undo password |
и тп
Затем.
|
1 |
undo interface Virtual-Template0 |
Политики безопасности.
Политики настраивались тут. Согласно настройке запрещено всё, кроме того что явно разрешено. Поэтому создаем правила разрешающие L2TP/IPSec.
Для классического L2TP over IPsec требуются:
IKE Phase 1: UDP 500 – установление защищённого канала управления (IKE SA) между клиентом и сервером.;
IPsec NAT-T: UDP4500 – IPSec (ESP) плохо проходит через NAT, поэтому пакеты инкапсулируются в UDP 4500;
ESP IPsec: IP ESP (50) – основной протокол, который шифрует и передаёт полезные данные;
L2TP: UDP 1701 – работает только внутри уже созданного IPSec-туннеля, обеспечивает назначение IP-адреса пользователю, создание виртуального интерфейса, PPP-аутентификацию.
Это всё можно перечислить в одном правиле, но тогда сложно управлять, смешиваются hits, не понятно, что срабатывает, а что нет. Поэтому создавать нужно отдельные правила для каждого протокола.
Предустановленных портов UDP 500 и 4500 нет, создаем их.

Аналогично создается порт UDP4500.
Создание портов через CLI.
|
1 2 3 4 5 |
system-view ip service-set PORT-500-UDP type object service 0 protocol udp source-port 0 to 65535 destination-port 500 ip service-set PORT-4500-UDP type object service 0 protocol udp source-port 0 to 65535 destination-port 4500 |
Создаем политики безопасности.

Через CLI.
|
1 2 3 4 5 6 7 8 9 |
system-view security-policy rule name ALLOW-L2TP source-zone untrust destination-zone local destination-address 10.150.170.1 mask 255.255.255.255 service l2tp action permit quit |
destination-zone: local – потому что трафик направляется в сам USG.
source-address (адрес клиента) заранее неизвестен. Клиент может подключаться из любых сетей. Поэтому source-address обычно не указывают, или ограничивают только по географии. Это относится к client-to-site. Если IP-адрес клиента статический, это бывает часто в site-to-site, то его нужно в этом случае указывать, чтоб подключение шло только с него.
destination-address – IP-адрес внешнего интерфейса USG. Если не указать destination-address правила будут срабатывать на любых интерфейсах.
Аналогично создаются правила для других протоколов.
|
1 2 3 4 5 6 7 8 |
security-policy rule name ALLOW-UDP-500 source-zone untrust destination-zone local destination-address 10.150.170.1 mask 255.255.255.255 service PORT-500-UDP action permit quit |
|
1 2 3 4 5 6 7 8 |
security-policy rule name ALLOW-UDP-4500 source-zone untrust destination-zone local destination-address 10.150.170.1 mask 255.255.255.255 service PORT-4500-UDP action permit quit |
|
1 2 3 4 5 6 7 8 |
security-policy rule name ALLOW-ESP source-zone untrust destination-zone local service esp destination-address 10.150.170.1 mask 255.255.255.255 action permit quit |
Расположить правила нужно ближе к верху списка (выше правила полного доступа в Интернет).
|
1 2 3 4 5 6 |
security-policy rule move ALLOW-L2TP before FULL-INTERNET-ACCESS rule move ALLOW-UDP-500 before FULL-INTERNET-ACCESS rule move ALLOW-UDP-4500 before FULL-INTERNET-ACCESS rule move ALLOW-ESP before FULL-INTERNET-ACCESS quit |
По количеству hits видно сколько раз политика сработала.
Политика безопасности для проходящего трафика.
В данном случае трафик проходит через USG (forward) от клиента к серверу. Разрешаем трафик от источника к назначению по IP-адресу. Общие forward-правила из untrust в trust это плохая практика. Сузим правило с помощью зоны безопасности. Создаем новую зону с произвольным приоритетом.

Добавляем в созданную зону виртуальный интерфейс. Сделать это можно только через CLI.
|
1 2 3 4 5 |
system-view firewall zone vpn_ipsec set priority 75 add interface Virtual-Template0 quit |
Просмотр.
|
1 |
display zone |
Удаление интерфейса из зоны (если понадобится).
|
1 2 |
firewall zone vpn_ipsec undo add interface Virtual-Template0 |
Уточнение используемого интерфейса.
|
1 2 |
l2tp-group default-lns display this |
В GUI может появляться Virtual-if0. Он добавляем в зону. Но этот интерфейс не подходит вот почему.
Virtual-Template0 – это шаблон для туннелей L2TP.
Virtual-if0 – это динамический интерфейс, который создаётся на базе Virtual-Template0 при подключении L2TP-клиента. Он наследует настройки шаблона, получает IP из пула, через него идёт фактический трафик клиента. Если клиентов несколько – для каждого создаётся отдельный Virtual-ifX, все базируются на Virtual-Template0.
Security policy и зона VPN обычно привязываются к Virtual-Template0, а не к Virtual-if0. Так правило автоматически действует на все динамические Virtual-ifX, создаваемые этим шаблоном.
Создаем политику безопасности.
Через CLI.
|
1 2 3 4 5 6 7 8 |
system-view security-policy rule name ALLOW-FORWARD-TRAFFIC source-zone vpn_ipsec destination-zone trust source-address 192.168.60.0 mask 255.255.255.0 destination-address 192.168.1.0 mask 255.255.255.0 action permit |
Расположить правило нужно там же где и предыдущие.
|
1 2 3 |
security-policy rule move ALLOW-FORWARD-TRAFFIC before FULL-INTERNET-ACCESS quit |
При установлении туннеля трафик идет из untrust в local. После создания туннеля проходящий трафик идет от клиента в локальную сеть из vpn_ipsec в trust.
Сохраняем всю настроенную конфигурацию на кнопку Save в верхней части браузера.
Настройка клиента.
Клиент с ОС Windows 11. Скачиваем и устанавливаем UniVPN. При установке создастся виртуальный сетевой адаптер.
Запускаем.
Создаем новое соединение.
Вводим данные в соответствии с настройками сервера.
Connection name – любое понятное имя.
LNS Server Address – IP-адрес сервера L2TP «внешний», на который будет происходить подключение.
Tunnel Name – название туннеля на стороне клиента, такое же как вводили при настройке сервера.
Authentication Mode – режим аутентификации CHAP.
Enable Tunnel Authentication – активация аутентификации для туннеля.
Tunnel Authentication Password – пароль туннеля.
Enable iPSec Protocol – активация IPSec.
Pre-shared Key – тип аутентификации. И далее вводим пароль, такой же как в настройке политики IPSec USG.
Все остальные настройки без изменений.
Нажимаем кнопку Connect.
В открывшейся форме вводим логин пользователя с указанием домена и пароль.
Можно отметить галками сохранение пароля и авто логин.
После нажатия кнопки Login происходит подключение к серверу. Об это сообщит статистика в левой части окна программы.
Чтоб минимизировать действия пользователя активируем автозапуск клиента при включении компьютера.


На этом настройка клиента завершена.
Если подключение не происходит, то о причинах этого появляются различные сообщения. Читаем их и устраняем причину. Или смотрим логи и мониторинг сессии.
Установившиеся туннели отображаются в USG на вкладке Monitoring в L2TP и в IPSec.
Подключенные пользователи отображаются на соответствующей вкладке.
Просмотр через CLI.
|
1 |
display user-manage online-user |
Привязка IP-адреса к пользователю.
|
1 2 3 |
user-manage user vpnuser domain ipsec-domain bind ip-address 192.168.60.2 quit |
Просмотр конфигурации пользователя.
|
1 |
display user-manage user verbose name vpnuser@ipsec-domain |
Маршрут в сеть за USG.
Если в главном офисе сервера находятся, например, в сети 192.168.1.0/24, то чтобы попасть в эту сеть на клиенте нужно создать маршрут. Команда cmd для ПК с ОС Windows.
|
1 |
route add 192.168.1.0 mask 255.255.255.0 192.168.60.1 -p |
Запуск cmd от имени администратора.
В маршруте шлюзом указан внутренний адрес VPN-сервера.
На стороне сервера маршруты к клиентам создаются автоматически.
Просмотр созданного маршрута.
|
1 |
route print |
Трафик должен идти через туннель. Для проверки выполняем трассировку в любой ПК локальной сети.
|
1 |
tracert 192.168.1.10 |