L2TP/IPsec можно использовать для совместимости с действующими Windows-клиентами, когда такая схема согласована. Для нового проекта оцените также IKEv2 и WireGuard: выбор зависит от аутентификации, клиентских ОС и политики компании. Здесь разбираем именно L2TP с обязательной защитой IPsec и маршрутизируемым доступом к разрешённым серверам.
Пример рассчитан на RouterOS 7, IPv4 и MikroTik с входящим публичным адресом. Он не заменяет весь firewall и не изменяет default IPsec-профили. Если L2TP-сервер уже используется, сначала сравните его конфигурацию: команды set меняют общий сервер, а не создают независимый экземпляр.
1. Схема и условия применения
Пример использует публичный адрес 203.0.113.10 и WAN ether1, включённый в существующий список WAN. LAN-интерфейс bridge-lan имеет адрес 192.168.20.1/24. Разрешённое приложение — 192.168.20.10:443, внутренний DNS — 192.168.20.53. Их шлюз должен возвращать трафик через этот MikroTik либо иметь маршрут к VPN-пулу.
VPN-клиентам выделяем отдельный диапазон 10.88.0.10–10.88.0.20, адрес серверной стороны PPP — 10.88.0.1. Проверьте отсутствие пересечений с LAN, маршрутами и сетями удалённых сотрудников. Публичный адрес документационный: замените его своим.
У MikroTik за NAT потребуется подходящая схема IPsec/NAT-T на вышестоящем устройстве. CGNAT без управляемого входящего доступа не исправляется правилами локального firewall. В этом случае измените архитектуру, например организуйте исходящий туннель к доступному узлу.
2. Что проверить и сохранить до изменения
Сохраните экспорт без show-sensitive и отдельную защищённую резервную копию. Используйте локальную консоль или независимый путь управления; при удалённых изменениях учитывайте Safe Mode и его ограничения по Configuration Management.
/export file=before-l2tp-ipsec
/interface l2tp-server server print
/interface list member print where list=WAN
/ip firewall filter print detail
/ip firewall nat print detail
/ip ipsec active-peers print
/ppp active print
Проверьте существующие IPsec-сервисы, mangle, RAW/notrack, RADIUS и VPN-пулы. Если сервер уже включён или его используют другие сотрудники, остановитесь и подготовьте отдельный план изменения. Автоматически включаемый L2TP IPsec peer может пересекаться с существующими настройками.
На действующем firewall должны корректно обрабатываться established,related и invalid. Ниже добавляются только правила примера. Их размещение относительно существующих accept/drop нужно проверить вручную.

3. Как создать пул и профиль PPP
Создайте отдельный список интерфейсов для VPN и профиль. Не включайте VPN в общий список LAN, если тот даёт широкие права.
/interface list add name=AVG-L2TP comment="AVG-L2TP interfaces"
/ip pool add name=avg-l2tp-pool ranges=10.88.0.10-10.88.0.20
/ppp profile add name=avg-l2tp-profile local-address=10.88.0.1 \
remote-address=avg-l2tp-pool dns-server=192.168.20.53 \
interface-list=AVG-L2TP only-one=yes change-tcp-mss=yes \
use-encryption=yes comment="AVG-L2TP profile"
interface-list добавляет созданные PPP-интерфейсы в указанный список. only-one ограничивает повторные сессии локального пользователя; при RADIUS поведение нужно проверять отдельно. change-tcp-mss относится к IPv4 TCP в PPP, а use-encryption — к PPP-шифрованию и не заменяет обязательность IPsec. Параметры профиля описаны в PPP AAA.
Если имена уже существуют, не запускайте add повторно. Для клиента нужен адрес из пула и соответствующие разрешения firewall, а не bridge с LAN и не proxy-arp «для работы VPN».
4. Как создать пользователя и настроить сервер
В примере нет настоящих секретов. REPLACE_WITH_USER_PASSWORD и REPLACE_WITH_RANDOM_PSK — обозначения, которые нельзя использовать в рабочей сети. Задайте индивидуальный длинный пароль пользователя и отдельный случайный PSK, сохранённые в корпоративном хранилище. Сначала создайте пользователя отключённым:
/ppp secret add name=vpn-admin-01 service=l2tp \
profile=avg-l2tp-profile password="REPLACE_WITH_USER_PASSWORD" \
disabled=yes comment="AVG-L2TP test user"
/interface l2tp-server server set enabled=no \
default-profile=avg-l2tp-profile authentication=mschap2 \
use-ipsec=required ipsec-secret="REPLACE_WITH_RANDOM_PSK"
Применяйте set только к неиспользуемому серверу в согласованном окне. В WinBox соответствуют PPP → Secrets и PPP → Interface → L2TP Server. Перед включением замените значения-заглушки через защищённый административный доступ; не пересылайте их в заявке или скриншоте.
use-ipsec=required запрещает незащищённые L2TP-подключения; настройка описана в официальном примере MikroTik IPsec. PSK подтверждает IPsec-сторону, а пароль пользователя — PPP-вход. Общий PSK не является полноценной MFA и усложняет отзыв доступа при его раскрытии.
5. Какие правила нужны в input
Добавьте правила отключёнными, затем разместите их в нужном месте перед итоговым drop. Здесь принимается IKE/NAT-T и ESP, а UDP 1701 разрешён только после IPsec:
/ip firewall filter add chain=input action=accept \
in-interface-list=WAN protocol=udp dst-port=500,4500 \
disabled=yes comment="AVG-L2TP IKE NAT-T"
/ip firewall filter add chain=input action=accept \
in-interface-list=WAN protocol=ipsec-esp \
disabled=yes comment="AVG-L2TP ESP"
/ip firewall filter add chain=input action=accept \
in-interface-list=WAN protocol=udp dst-port=1701 \
ipsec-policy=in,ipsec disabled=yes comment="AVG-L2TP protected"
/ip firewall filter add chain=input action=drop \
in-interface-list=WAN protocol=udp dst-port=1701 \
ipsec-policy=in,none disabled=yes comment="AVG-L2TP plain drop"
ESP — IP-протокол 50, не порт 50. drop для незащищённого UDP 1701 должен стоять выше старого широкого разрешения этого порта, если оно есть. Убедитесь, что существующие RAW и input не отбрасывают нужный трафик раньше.
Правила транспорта не дают пользователю доступ к LAN. Они относятся к самому VPN-серверу. Если допустимые внешние адреса клиентов фиксированы, дополнительно ограничьте источники; для мобильных сотрудников такое ограничение требует отдельной политики.
6. Как разрешить только приложение и внутренний DNS
Для транзита используйте forward и VPN-список интерфейсов. Пример разрешает HTTPS одного сервера и DNS конкретного резолвера:
/ip firewall filter add chain=forward action=accept \
in-interface-list=AVG-L2TP out-interface=bridge-lan \
src-address=10.88.0.0/24 dst-address=192.168.20.10 \
protocol=tcp dst-port=443 connection-state=new \
disabled=yes comment="AVG-L2TP app"
/ip firewall filter add chain=forward action=accept \
in-interface-list=AVG-L2TP out-interface=bridge-lan \
src-address=10.88.0.0/24 dst-address=192.168.20.53 \
protocol=udp dst-port=53 connection-state=new \
disabled=yes comment="AVG-L2TP DNS UDP"
/ip firewall filter add chain=forward action=accept \
in-interface-list=AVG-L2TP out-interface=bridge-lan \
src-address=10.88.0.0/24 dst-address=192.168.20.53 \
protocol=tcp dst-port=53 connection-state=new \
disabled=yes comment="AVG-L2TP DNS TCP"
/ip firewall filter add chain=forward action=drop \
in-interface-list=AVG-L2TP disabled=yes comment="AVG-L2TP other drop"
/ip firewall filter add chain=input action=drop \
in-interface-list=AVG-L2TP disabled=yes comment="AVG-L2TP router drop"
Узкие accept должны предшествовать AVG-L2TP other drop; этот drop должен предшествовать широким разрешениям VPN. Ответный трафик обслуживает существующая политика established,related. AVG-L2TP router drop ограничивает доступ VPN-клиента к самому роутеру; разместите его выше широкого доверия к LAN/VPN. DNS в этом варианте расположен на отдельном сервере, а не MikroTik.
Проверьте FastTrack и NAT применительно к IPsec: соединения, которым необходима обычная обработка, исключают из ускорения по действующей политике. Не добавляйте masquerade всего VPN-пула в LAN. При корректном обратном маршруте сервер должен видеть реальный VPN-адрес клиента.
7. Как включить вариант после проверки
Перед включением убедитесь, что секреты заменены, интерфейсы совпадают, порядок правил проверен и лишние широкие accept устранены согласованным изменением. Включите только добавленные фильтры по их префиксу:
/ip firewall filter enable [find where comment~"^AVG-L2TP "]
/ppp secret enable [find where name="vpn-admin-01"]
/interface l2tp-server server set enabled=yes
На роутере не должно быть чужих правил с тем же префиксом. Команда фильтра не переставляет правила и не исправляет прежнюю политику. Включение единого L2TP-сервера влияет на всю его конфигурацию.
Если IPsec или PPP не запускается, не открывайте UDP 1701 без ipsec-policy и не включайте PAP ради обхода ошибки. Диагностируйте стадию отказа.
8. Как настроить Windows-клиент и split tunnel
В Windows откройте Параметры → Сеть и Интернет → VPN → Добавить VPN. Выберите поставщика «Windows (встроенные)», имя AVG-L2TP, адрес своего шлюза и тип L2TP/IPsec с предварительным ключом. Введите согласованный PSK и индивидуальный PPP-логин. Интерфейс может отличаться между выпусками Windows.
В свойствах адаптера через ncpa.cpl проверьте тип L2TP, предварительный ключ и соответствие MS-CHAP v2 серверу. Для пользовательского профиля задайте split tunnel и маршруты к двум разрешённым узлам:
Set-VpnConnection -Name 'AVG-L2TP' -SplitTunneling $true
Add-VpnConnectionRoute -ConnectionName 'AVG-L2TP' -DestinationPrefix '192.168.20.10/32'
Add-VpnConnectionRoute -ConnectionName 'AVG-L2TP' -DestinationPrefix '192.168.20.53/32'
Для общего профиля добавьте -AllUserConnection и используйте необходимые права. Параметры маршрута описаны в Add-VpnConnectionRoute.
DNS-политика Windows требует отдельной проверки: выдача DNS через PPP не гарантирует, что каждое имя будет спрашиваться у нужного резолвера. Сначала проверьте конкретный сервер DNS, затем обычное разрешение имени.
9. Как проверить IPsec, PPP, маршрут и сервис
На MikroTik:
/ip ipsec active-peers print
/ip ipsec installed-sa print
/ppp active print detail
/ip firewall filter print stats where comment~"^AVG-L2TP "
/log print where topics~"ipsec|l2tp|ppp"
Сначала должны быть установлены IPsec SA, затем PPP-сессия с адресом из пула. На Windows:
Get-VpnConnection -Name 'AVG-L2TP'
Test-NetConnection -ComputerName 192.168.20.10 -Port 443
Resolve-DnsName app.corp.example -Server 192.168.20.53
Имя демонстрационное. TCP-успех не проверяет права в приложении. Дополнительно проверьте отказ при обращении к неразрешённому серверу и к управлению MikroTik. Если IPsec есть, а PPP нет, изучайте аутентификацию и профиль; если PPP есть, а сервиса нет — маршруты, forward и локальный firewall сервера.
Для ошибки 789/809 в Windows сверяйте код с событием RasClient и временем серверного журнала. Не отключайте защиту и не вносите NAT-параметр реестра без подтверждения топологии. Если передача зависает, исследуйте MTU/PMTUD. Подробности — в разборе диагностики L2TP.
10. Как отозвать доступ и отменить изменение
Для отключения конкретного пользователя запретите его учётную запись и завершите его действующую сессию:
/ppp secret disable [find where name="vpn-admin-01"]
/ppp active remove [find where name="vpn-admin-01"]
Отключение secret не следует считать гарантией прекращения уже активного соединения. При раскрытии общего PSK нужен план его замены на всех клиентах, а не только удаление одного пользователя.
Если сервер создан только для этого примера, после проверки отсутствия других пользователей отключите его и добавленные правила:
/interface l2tp-server server set enabled=no
/ip firewall filter disable [find where comment~"^AVG-L2TP "]
Профиль, пул и interface-list удаляйте только после проверки зависимостей; предыдущие настройки сервера и порядок firewall восстанавливаются по записанному исходному состоянию. Для Windows удалите только созданные маршруты и профиль по согласованному плану.
Примеры сверены с документацией, но не проверялись на вашем роутере. Перед внедрением нужен тест совместимости сборок Windows/RouterOS, проверка шифрования, доступов и возврата. АВАНГАРД ИТ поможет адаптировать схему к действующему firewall и требованиям компании.

