Настройка l2tp ipsec vpn сервер mikrotik и windows 10

В этот раз я расскажу как настроить VPN L2TP сервер, т.к. он обеспечивает более высокий уровень безопасности но и более требователен к ресурсам системы, а также поддерживается не всем оборудованием, например, только самыми последними версиями Andriod на 100%, по крайней мере, мне не попадались современные телефоны которые его не поддерживают. Основной плюс данной стемы это:
а) Использование тоннеля передачи данных (тунелирование).
б) Защита передаваемых данных с помощью IPsec.

Чтобы было понятнее, мы создадим отдельную подсеть для клиентов подключающихся через L2TP, а оттуда уже настроим маршрутизацию туда куда нам нужно.
Для начала создадим диапазон IP адресов для подключающихся клиентов, мы не будем выдавать каждому пользователю персональный IP адрес, а автоматизируем этот процесс и будем выдавать из пула свободных адресов.
Переходим в IP -> Pool мы создадим пул на 20 IP адресов. Назовем его l2tp_pool чтобы было понятно за что он отвечает.

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

Создаем профиль нашего L2TP сервера
переходим в PPP -> Profiles
В настройках профиля указываем:

Имя профиля: L2TP-server ( чтобы было понятно за что он отвечает)
Local adrdress: 192.168.10.1 начало диапазона IP адресов
Remote Address: l2tp_pool указываем название пула адресов который мы создали ранее
Change TCP MSS: yes

(Все что менялось выделено синим!)


Переходим в вкладку Protocols
Use MPLS: yes
Use Compressiaon: no
Use VJ Compressiaon: no
Use Encription: yes

(Все что менялось выделено синим!)

Переходим во вкладку Limits
Там все оставляем по умолчанию и в строке Only one оставляем default

Создаем пользователя, переходим в PPP -> Secrets

Где указываем имя пользователя, пароль, указываем сервис к которому этот пользователь будет применен L2TP, а также профиль с которым будет работать наш L2TP сервер, мы его создали ранее (L2TP-server)

нам остается включить L2TP сервер, переходим в PPP -> Interface нажимаем кнопку L2TP server

Все сто менялось выделено красным!
Где:
Включаем сам сервер L2TP (ставим галку)
Включаем профиль, который мы создали ранее L2TP-server
Убираем все протоколы, оставляем mschap2 (остальные протоколы уже давно и успешно взломаны!)
Ставим галку Use IPsec
Придумываем IPsec Secret: по сути это парольная фраза, которая едина для всех.

Нам с остается создать правила для фаерволла, чтобы мы могли достучаться до нашего L2TP сервера.
Переходим в IP -> Firewall -> Filter Rules
необходимо создать разрешающее правило для следующих портов и протоколов:
Протокол: UDP
Разрешаем порты: 1701,500,4500
В качестве In.Interface указываем тот что подключен к интернет


Также добавляем правило разрешающее ipcec
протокол: ipsec-esp
В качестве In.Interface указываем тот что подключен к интернет

Почти все готово, но если мы подключимся к нашему L2TP серверу, то не сможем выйти в интернет т.к. не создано разрешающее правило, переходим во вкладку NAT
Создаем новое правило
Chain: snat (т.к. NAT это у нас источник пакетов)
Src. Address: 192.168.10.0/24 (указываем подсеть которая у нас используется для выдачи IP адресов клиентам L2TP сервера)
Out.Inerface указываем интерфейс который у нас подключен к интернет.

переходим во вкладку Action и в строке Action указываем маскарадинг

Вот теперь все готово, нам осталось настроить VPN подключение, в Windows оно делается штатными средствами,
но есть нюанс.

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

Создаем стандартное VPN подключение, в нем указываем протокол L2TP/IPsec, чтобы система не переберала все доступные протоколы, а подключалась сразу по нужному.
Указываем, разрешить следующие протоколы, ставим галку MS-CHAP v2

Нам необходимо нажать кнопку: Дополнительные параметры и там указываем парольную фразу, которую мы придумали при создании в строке IPsec Secret

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

Дополнение

Если есть необходимость изменить настройки шифрования, то нам необходимо перейти в IP -> IPsec во вкладку Proposals и там выставить необходимые виды шифрования

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

В процессе использования также выплыл один баг. Если вы подключены по L2TP то при попытке подключиться к маршрутизатору через Winbox система пишет что не правильный логин/пароль, а вот при подключении через PPTP такой проблемы не наблюдается. Как эту тему побороть, я пока не выяснил, если разберусь обязательно отпишусь.
О том что еще можно настроить на MikroTik

Содержание

  1. Введение
  2. Обоснование выбора
  3. Настройка Firewall
  4. Настройка IPsec
  5. Настройка L2TP
  6. Настройка клиента под Windows

Введение

Существует различное множество вариантов VPN, которые можно использовать для той или иной ситуации. В интернете также много статей по настройке, но когда берёшься за какой-то один вариант, возникает много вопросов, т.к. в разных источниках делают обычно по-разному. Особенно это касается всяких непонятных пунктов меню. А чтение официальной документации изначально сбивает с толку, если читаешь в первый раз и пока нет общего понимания, как работает технология. Также было и у меня, когда я столкнулся с необходимостью разобраться, как же всё-таки правильно настроить VPN-сервер на Mikrotik с шифрованием IPsec.

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

Обоснование выбора

Речь пойдет про L2TP, как уже понятно из названия статьи. L2TP изначально предоставляет услугу PPP (на канальном уровне модели OSI) с последующей инкапсуляцией, что позволяет работать поверх IP.

Выбор его обусловлен тем, что:

  • данный протокол поддерживается почти всеми популярными ОС из коробки (Win, Android, iOS), т.е. ничего не нужно дополнительно устанавливать, как в случае с OpenVPN;
  • L2TP можно применять, когда клиент имеет динамический IP-адрес (или находится NAT).

Если бы и сервер и клиент имели статические внешние IP-адреса, то вполне можно было бы использовать чистый IPsec или же IPIP, GRE и EoIP over IPsec. Но чаще всего только с одной стороны имеется белый IP-адрес (например, в одном офисе), А потому все удаленные клиенты могут свободно подключаться через L2TP, будь это пользователи или же удалённые офисы.

Казалось бы, всё хорошо и замечательно с L2TP, но есть и главный его недостаток – отсутствие шифрования. Поэтому для решения этой проблемы и используется IPsec, который работает на сетевом уровне модели OSI и позволяет установить сначала IPsec-соединение, которое будет защищённым, а уже потом внутри него устанавливать L2TP-соединение.

Из минусов такого решения является производительность железки, на которой будет IPsec. CPU маршрутизатора будет интенсивно использоваться для шифрования пакетов и в результате скорость значительно просядет. Но эта проблема также решаема, т.к. у Mikrotik есть модели устройств, которые поддерживают аппаратное шифрование. При выборе маршрутизатора Mikrotik стоит учесть этот момент и рассмотреть модель с поддержкой т.н. hardware acceleration.

Настройка Firewall

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

Для протоколов IKE, NAT-T и ipsec-esp:

/ip firewall
filter add chain=input protocol=17 dst-port=500,4500 action=accept #  IKE, NAT-T 
filter add chain=input protocol=50 action=accept # ipsec-esp

Для протокола L2TP, который работает только через IPsec:

/ip firewall
filter add chain=input protocol=17 dst-port=1701 ipsec-policy=in,ipsec action=accept

После главное не забыть поднять эти правила выше запрещающих правил цепочки input.

Теперь закончив с вводной теорией пора переходить к практике и настроить IPsec на Mikrotik. В последних версиях прошивки RouterOS, настройка IPsec для L2TP ну очень простая, т.к. всё можно организовать на дефолтных настройках с минимальными изменениями. Путь воина – это как минимум понимать, что будет изменяться, зачем и почему, чтобы суметь отладить в случае необходимости.

Все дальнейшие действия настраиваются в меню IP -> IPsec.

Для настройки в основном будут использованы уже имеющиеся элементы default с некоторыми изменениями.

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

  • Всё начинается с группы. Я буду использовать дефолтную, здесь без изменений:
  • После настраивается Profile – определяет набор параметров, которые будут использоваться для согласования IKE во время фазы 1. Эти параметры могут быть общими с другими одноранговыми конфигурациями:

Hash Algorithms я указал sha1, Encryption Algorithm – aes-128, DH Group – modp1024 и modp2048. Данный выбор обусловлен рекомендуемыми значениями из документации Mikrotik + нужно учитывать, что от выбранного алгоритма будет зависеть производительность, т.к. чем больше длина ключа, тем больше будет тратиться ресурсов CPU. Также с данными параметрами можно ещё поиграться в случае необходимости под каждую ситуацию.

Важным параметром тут является NAT Traversal – это протокол, который позволяет работать IPsec через NAT. IPSec использует протоколы сетевого уровня, которые NAT в свою очередь обработать не может. А потому для решения данной проблемы придумали протокол NAT-T (является расширением в IKE, а в IKEv2 его неотъемлемая часть). NAT-T дополнительно инкапсулирует пакеты IPsec в UDP-пакеты, которые NAT в дальнейшем отбрасывает.

Данное решение применимо только к протоколу ESP, т.к. протокол AH подписывает полный пакет, включая заголовок IP, который изменяется NAT, делая подпись AH недействительной.

  • Создается Peer – конфигурация для установки соединения между IKE-демонами, далее это соединение используется для согласования ключей и алгоритмов SA:

Ругань на This entry is unreacheble появляется в используемой мной RouterOS v6.44.3 , в последних версиях должно быть исправлено, на работоспособность не влияет.

Для пира указывается, имя и какой профиль использовать, а также важный параметр Send INITIAL_CONTACT, который должен быть выключен. Данный параметр указывает, следует ли отправлять пакет IKE “initial contact” или ждать удаленную сторону. Этот пакет должен инициировать удаление старых одноранговых SA для текущего адреса источника. Обычно клиенты являются инициаторами, и для этого параметра должно быть установлено значение no. Исходный контакт не отправляется, если для ikev1 включен modecfg или xauth.

А вот параметр Passive включен. Если же пассивный режим отключен, одноранговый узел будет пытаться установить не только фазу 1, но и фазу 2 автоматически, если политики настроены или созданы во время фазы 1.

  • Потом настраивается Identities – параметры конфигурации, специфичные для удаленного узла :

Выбирается созданный ранее Peer, auth метод – ключ, в поле Secret данный ключ вводится. Группа выбрана та, которая была создана в самом начале. Параметр generate-policy=port-strict (принимать порт от клиента) – рекомендуемое значение согласно оф. документации.

В ранних прошивках RouterOS данной вкладки не было, а часть её функционала настраивалась в предыдущем вкладке Peers. Это к сведению, чтобы не путаться.

  • После настраиваются дефолтные Proposals – алгоритмы шифрования для SA. Данный пункт немного похож на Profiles – главное не запутаться.

Здесь указывается имя и используемые алгоритмы – описаны в документации Mikrotik, я выбрал рекомендуемые для своей железки.

  • И на последнем этапе конфигурации IPsec настраивается Policy – используется для определения того, должны ли параметры безопасности применяться к пакету:

Важна галочка Template и указанная группа default, а также указанный протокол UDP и адреса: источника и назначения.

Основное в разделе Action раздела Policy:

Под данную политику будет попадать весь трафик туннеля L2TP, который будет настроен на использование IPsec, а потому в поле Action установлено значение encrypt – то есть будет выполнено шифрование на основе Proposial, в котором указаны выбранные алгоритмы.

На данном этапе настройка IPsec закончена и можно переходить к конфигурации L2TP.

Настройка L2TP

В данной настройке будет минимум шагов, т.к. особых сложностей нет.

Создаётся пул адресов для VPN-клиентов в меню IP-Pool:

Создается PPP-профиль с дефолтными настройками, указывается только локальный адрес и удаленные адреса из созданного ранее пула:

В разделе PPP-Secrets создается пользователь для созданного выше profile.

И в том же разделе PPP включается L2TP-сервер:

Здесь, собственно, активируется сам сервер и указывается, что требуется использование IPsec с нужным секретом, который был задан при настройке IPsec Identities. Используется mschap2 для авторизации через L2TP. Значение required использовано для того, чтобы убедиться, что принимаются только L2TP-соединения, инкапсулированные в IPsec. Хотя на практике у меня с этим параметром получилось установить соединение с Linux-клиента без IPsec – уж не знаю, где ошибка и что не так, но для верности запретил такие подключения без шифрования ещё на уровне firewall в начале статьи.

На этом всё, настройка IPsec и L2TP-сервера на Mikrotik завершена и можно переходить к настройке клиента.

Настройка клиента под Windows

Для наглядности в рамках статьи я настрою клиента на Windows 10, чтобы проверить корректность проделанной работы.

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

А потом в стандартной панели управления изменить настройки безопасности, указав использование обязательного шифрования и разрешить протокол mschap2, который был указан для использования в настройках L2TP-сервера на Mikrotik:

После этого подключение из-под винды корректно устанавливается.

Поговорим о возможности подключения к домашней или офисной сети из вне с помощью протокола L2TP/IPsec.
Для этого используются VPN соединения или туннели.
В рамках данного блога уже рассматривали данную тему:

  1. PPTP сервер на FreeBSD (mpd5)
  2. SoftEther VPN FreeBSD
  3. SoftEter VPN Ubuntu
  4. VPN клиент в Mikrotik

Раз мы используем Mikrotik в качестве роутера, почему бы его не задействовать?:)
На RouteOS есть возможность использовать различные протоколы для построения VPN сервера:

  1. PPTP
  2. L2TP и L2TP/IPsec
  3. SSTP
  4. OpenVPN

PPTP — в данный момент является небезопасным, так же используется протокол GRE.
Несколько раз встречал сети, где GRE не работал.

L2TP/IPsec — является безопасным, так же «из коробки» его как клиенты поддерживают все (Windows, MacOS, Android и iOs)

SSTP — быстрый и безопасный Windows Only

OpenVPN — хорошая вещь, но требуется установки клиента (7 версия RouteOS вроде даже умеет UDP)

В 7 версии RouteOS добавили WireGuard

Для тестовой конфигурации будет использоваться RouteOS v. 6.47.7 CHR (Cloud Hosted Router).
Установленный на VirtualBox.

Поехали:)

Создаем пул адресов для VPN клиентов:

ip pool add name=vpn_pool ranges=10.11.11.10-10.11.11.220

Либо в графическом режиме:
IP->Pool->+
MikroTik add pool
Создаем профиль PPP:

ppp profile add name=l2tp local-address=vpn_pool remote-address=vpn_pool change-tcp-mss=yes

В графическом режиме:
PPP->Profiles->+
Mikrotik PPP Profiles

Создаем пользователя (кем будем соединяться):

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

ppp secret add profile=l2tp service=l2tp name=vladimir password=StrongPassword

В картинках:

PPP->Secrets->+
MikroTik PPP Secrets
Включаем L2TP сервер:

interface l2tp-server server set authentication=mschap2 ipsec-secret=marvins use-ipsec=yes default-profile=l2tp caller-id-type=number enabled=yes

Графический вариант:
PPP->Interface->Click L2TP Server
MilroTik L2TP Server Enabled

Итак, мы создали:

  1. Пользователя vladimir с паролем: StrongPassword
  2. IPsec общий ключ: marvins

Mikrotik Firewall:

L2TP использует следующие UDP порты:

500 — для обмена ключами шифрования

1701- порт отправителя и получателя для инициализации туннеля

4500 — для NAT-операций

Так же для IPsec используется ESP протокол.

Добавим два правила в файрвол:

ip firewall filter add comment="Incoming VPN traffic" chain=input action=accept protocol=udp port=1701,500,4500
ip firewall filter add comment="IPsec ESP" chain=input action=accept protocol=ipsec-esp

Создаем L2TP VPN соединение в windows 10:
VPN Client Windows 10

В настройке интерфейса my_test укажем нужный нам протокол проверки подлинности:

Windows VPN Client

Соединение:

MikroTik Log VPN l2TP IPsec

Лог MikroTik с успешным подключением VPN клиента

При слабой IPsec фразе будет предупреждение в Identities:

Suggestion to use stronger pre-shared key or different authentication method

Suggestion to use stronger pre-shared key or different authentication method

После ее смены на более сильную фразу, типа такой:
LQsFQqabg46O

Предупреждение убирается:
Mikrotik L2TP IPsec Identities

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

На этом все:)

( 4 оценки, среднее 2.5 из 5 )

Summary

Standards: RFC 2661

L2TP is a secure tunnel protocol for transporting IP traffic using PPP. L2TP encapsulates PPP in virtual lines that run over IP, Frame Relay and other protocols (that are not currently supported by MikroTik RouterOS). L2TP incorporates PPP and MPPE (Microsoft Point to Point Encryption) to make encrypted links. The purpose of this protocol is to allow the Layer 2 and PPP endpoints to reside on different devices interconnected by a packet-switched network. With L2TP, a user has a Layer 2 connection to an access concentrator — LAC (e.g., modem bank, ADSL DSLAM, etc.), and the concentrator then tunnels individual PPP frames to the Network Access Server — NAS. This allows the actual processing of PPP packets to be separated from the termination of the Layer 2 circuit. From the user’s perspective, there is no functional difference between having the L2 circuit terminate in a NAS directly or using L2TP.

It may also be useful to use L2TP just as any other tunneling protocol with or without encryption. The L2TP standard says that the most secure way to encrypt data is using L2TP over IPsec (Note that it is default mode for Microsoft L2TP client) as all L2TP control and data packets for a particular tunnel appear as homogeneous UDP/IP data packets to the IPsec system.

Multilink PPP (MP) is supported in order to provide MRRU (the ability to transmit full-sized 1500 and larger packets) and bridging over PPP links (using Bridge Control Protocol (BCP) that allows to send raw Ethernet frames over PPP links). This way it is possible to setup bridging without EoIP. The bridge should either have an administratively set MAC address or an Ethernet-like interface in it, as PPP links do not have MAC addresses.

L2TP includes PPP authentication and accounting for each L2TP connection. Full authentication and accounting of each connection may be done through a RADIUS client or locally.

MPPE 128bit RC4 encryption is supported.

L2TP traffic uses UDP protocol for both control and data packets. UDP port 1701 is used only for link establishment, further traffic is using any available UDP port (which may or may not be 1701). This means that L2TP can be used with most firewalls and routers (even with NAT) by enabling UDP traffic to be routed through the firewall or router.

L2TP Client

Sub-menu: /interface l2tp-client

Properties

Property Description
add-default-route (yes | no; Default: no) Whether to add L2TP remote address as a default route.
allow (mschap2 | mschap1 | chap | pap; Default: mschap2, mschap1, chap, pap) Allowed authentication methods.
connect-to (IP; Default: ) Remote address of L2TP server
comment (string; Default: ) Short description of the tunnel.
default-route-distance (byte; Default: ) Since v6.2, sets distance value applied to auto created default route, if add-default-route is also selected
dial-on-demand (yes | no; Default: no) connects only when outbound traffic is generated. If selected, then route with gateway address from 10.112.112.0/24 network will be added while connection is not established.
disabled (yes | no; Default: yes) Enables/disables tunnel.
keepalive-timeout (integer [1..4294967295]; Default: 60s) Since v6.0rc13, tunnel keepalive timeout in seconds.
max-mru (integer; Default: 1460) Maximum Receive Unit. Max packet size that L2TP interface will be able to receive without packet fragmentation.
max-mtu (integer; Default: 1460) Maximum Transmission Unit. Max packet size that L2TP interface will be able to send without packet fragmentation.
mrru (disabled | integer; Default: disabled) Maximum packet size that can be received on the link. If a packet is bigger than tunnel MTU, it will be split into multiple packets, allowing full size IP or Ethernet packets to be sent over the tunnel. Read more >>
name (string; Default: ) Descriptive name of the interface.
password (string; Default: «») Password used for authentication.
profile (name; Default: default-encryption) Used PPP profile.
user (string; Default: ) User name used for authentication.
use-ipsec (yes | no; Default: no) When this option is enabled, dynamic IPSec peer configuration and policy is added to encapsulate L2TP connection into IPSec tunnel.
ipsec-secret (string; Default: ) Preshared key used when use-ipsec is enabled.

Quick example

This example demonstrates how to set up L2TP client with username «l2tp-hm», password «123» and server 10.1.101.100

[admin@dzeltenais_burkaans] /interface l2tp-client>add name=l2tp-hm user=l2tp-hm password=123 \
\... connect-to=10.1.101.100 disabled=no
[admin@dzeltenais_burkaans] /interface l2tp-client> print detail   
Flags: X - disabled, R - running 
 0    name="l2tp-hm" max-mtu=1460 max-mru=1460 mrru=disabled 
      connect-to=10.1.101.100 user="l2tp-hm" password="123" 
      profile=default-encryption add-default-route=no dial-on-demand=no 
      allow=pap,chap,mschap1,mschap2 

L2TP Server

Sub-menu: /interface l2tp-server

This sub-menu shows interfaces for each connected L2TP clients.

An interface is created for each tunnel established to the given server. There are two types of interfaces in L2TP server’s configuration

  • Static interfaces are added administratively if there is a need to reference the particular interface name (in firewall rules or elsewhere) created for the particular user.
  • Dynamic interfaces are added to this list automatically whenever a user is connected and its username does not match any existing static entry (or in case the entry is active already, as there can not be two separate tunnel interfaces referenced by the same name).

Dynamic interfaces appear when a user connects and disappear once the user disconnects, so it is impossible to reference the tunnel created for that use in router configuration (for example, in firewall), so if you need persistent rules for that user, create a static entry for him/her. Otherwise it is safe to use dynamic configuration.

Icon-note.png

Note: in both cases PPP users must be configured properly — static entries do not replace PPP configuration.

Server configuration

Sub-menu: /interface l2tp-server server

Properties

Property Description
authentication (pap | chap | mschap1 | mschap2; Default: mschap1,mschap2) Authentication methods that server will accept.
default-profile (name; Default: default-encryption) default profile to use
enabled (yes | no; Default: no) Defines whether L2TP server is enabled or not.
max-mru (integer; Default: 1450) Maximum Receive Unit. Max packet size that L2TP interface will be able to receive without packet fragmentation.
keepalive-timeout (integer; Default: 30) If server during keepalive-timeout period does not receive any packets, it will send keepalive packets every second, five times. If the server still does not receive any response from the client, then the client will be disconnected after 5 seconds.
Logs will show 5x «LCP missed echo reply» messages and then disconnect. Available starting from v5.22 and v6rc3.
max-mtu (integer; Default: 1450) Maximum Transmission Unit. Max packet size that L2TP interface will be able to send without packet fragmentation.
use-ipsec (no | yes | require; Default: no) When this option is enabled, dynamic IPSec peer configuration is added to suite most of the L2TP road-warrior setups. When require is selected server will accept only those L2TP connection attempts that were encapsulated in the IPSec tunnel.
ipsec-secret (string; Default: ) Preshared key used when use-ipsec is enabled
mrru (disabled | integer; Default: disabled) Maximum packet size that can be received on the link. If a packet is bigger than tunnel MTU, it will be split into multiple packets, allowing full size IP or Ethernet packets to be sent over the tunnel. Read more >>

To enable L2TP server:

[admin@MikroTik] interface l2tp-server server> set enabled=yes
[admin@MikroTik] interface l2tp-server server> print
          enabled: yes
          max-mtu: 1450
          max-mru: 1450
             mrru: disabled
   authentication: pap,chap,mschap1,mschap2
  default-profile: default-encryption
[admin@MikroTik] interface l2tp-server server>

Monitoring

Monitor command can be used to monitor status of the tunnel on both client and server.

[admin@dzeltenais_burkaans] /interface l2tp-client> monitor 0
     status: "connected"
     uptime: 7h24m18s
  idle-time: 6h21m4s
   encoding: "MPPE128 stateless"
        mtu: 1450
        mru: 1450

Read-only properties

Property Description
status () Current L2TP status. Value other than «connected» indicates that there are some problems establishing tunnel.

  • dialing — attempting to make a connection
  • verifying password — connection has been established to the server, password verification in progress
  • connected — tunnel is successfully established
  • terminated — interface is not enabled or the other side will not establish a connection
uptime (time) Elapsed time since tunnel was established.
idle-time (time) Elapsed time since last activity on the tunnel.
encoding () Used encryption method
local-address (IP Address) IP Address of local interface
remote-address (IP Address) IP Address of remote interface
mru (integer) Negotiated and used MRU

Application Examples

Connecting Remote Client

The following example shows how to connect a computer to a remote office network over L2TP encrypted tunnel giving that computer an IP address from the same network as the remote office has (without any need of bridging over EoIP tunnels)

Consider following setup:

L2tp-rem-office.png

Office router is connected to internet through ether1. Workstations are connected to ether2.
Laptop is connected to the internet and can reach Office router’s public IP (in our example it is 192.168.80.1).

First step is to create a user

[admin@RemoteOffice] /ppp secret> add name=Laptop service=l2tp password=123
local-address=10.1.101.1 remote-address=10.1.101.100
[admin@RemoteOffice] /ppp secret> print detail
Flags: X - disabled
  0   name="Laptop" service=l2tp caller-id="" password="123" profile=default
      local-address=10.1.101.1 remote-address=10.1.101.100

[admin@RemoteOffice] /ppp secret>

Notice that L2TP local address is the same as routers address on local interface and remote address is from the same range as local network (10.1.101.0/24).

Next step is to enable L2TP server and L2TP client on the laptop.

[admin@RemoteOffice] /interface l2tp-server server> set enabled=yes
[admin@RemoteOffice] /interface l2tp-server server> print
            enabled: yes
            max-mtu: 1460
            max-mru: 1460
               mrru: disabled
     authentication: mschap2
    default-profile: default-encryption
[admin@RemoteOffice] /interface l2tp-server server>

L2TP client from the laptop should connect to routers public IP which in our example is 192.168.80.1.
Please, consult the respective manual on how to set up a L2TP client with the software you are using.

Icon-note.png

Note: By default Windows sets up L2TP with IPsec. To disable IpSec, registry modifications are required. Read more >>

At this point (when L2TP client is successfully connected) if you will try to ping any workstation from the laptop, ping will time out, because Laptop is unable to get ARPs from workstations. Solution is to set up proxy-arp on local interface

[admin@RemoteOffice] interface ethernet> set ether2 arp=proxy-arp
[admin@RemoteOffice] interface ethernet> print
Flags: X - disabled, R - running
  #    NAME                 MTU   MAC-ADDRESS         ARP
  0  R ether1              1500  00:30:4F:0B:7B:C1 enabled
  1  R ether2              1500  00:30:4F:06:62:12 proxy-arp
[admin@RemoteOffice] interface ethernet>

After proxy-arp is enabled client can now successfully reach all workstations in local network behind the router.

Site-to-Site L2TP

The following is an example of connecting two Intranets using a L2TP tunnel over the Internet.

Consider following setup:

Site-to-site-l2tp-example.png

Office and Home routers are connected to internet through ether1, workstations and laptops are connected to ether2.
Both local networks are routed through L2TP client, thus they are not in the same broadcast domain. If both networks should be in the same broadcast domain then you need to use BCP and bridge L2TP tunnel with local interface.

First step is to create a user

[admin@RemoteOffice] /ppp secret> add name=Home service=l2tp password=123
local-address=172.16.1.1 remote-address=172.16.1.2 routes="10.1.202.0/24 172.16.1.2 1"
[admin@RemoteOffice] ppp secret> print detail
Flags: X - disabled
  0   name="Home" service=l2tp caller-id="" password="123" profile=default
      local-address=172.16.1.1 remote-address=172.16.1.2 routes="10.1.202.0/24 172.16.1.2 1"

[admin@RemoteOffice] /ppp secret>

Notice that we set up L2TP to add route whenever client connects. If this option is not set, then you will need static routing configuration on the server to route traffic between sites through L2TP tunnel.

Next step is to enable L2TP server on the office router and configure L2TP client on the Home router.

[admin@RemoteOffice] /interface l2tp-server server> set enabled=yes
[admin@RemoteOffice] /interface l2tp-server server> print
            enabled: yes
            max-mtu: 1460
            max-mru: 1460
               mrru: disabled
     authentication: mschap2
    default-profile: default-encryption
[admin@RemoteOffice] /interface l2tp-server server>
[admin@Home] /interface l2tp-client> add user=Home password=123 connect-to=192.168.80.1 disabled=no
[admin@Home] /interface l2tp-client> print
Flags: X - disabled, R - running
 0 R  name="l2tp-out1" max-mtu=1460 max-mru=1460 mrru=disabled connect-to=192.168.80.1 user="Home" 
       password="123" profile=default-encryption add-default-route=no dial-on-demand=no 
       allow=pap,chap,mschap1,mschap2
[admin@Home] /interface l2tp-client>

On home router if you wish traffic for the remote office to go over tunnel you will need to add a specific static route as follows:

[admin@Home] /ip route> add dst-address=10.1.101.0/24 gateway=l2tp-out1

After tunnel is established and routes are set, you should be able to ping remote network.

Basic L2TP/IpSec setup

This example demonstrates how to easily setup L2TP/IpSec server on Mikrotik router (with installed 6.16 or newer version) for road warrior connections (works with Windows, Android And iPhones).

First step is to enable L2TP server:

/interface l2tp-server server
set enabled=yes use-ipsec=required ipsec-secret=mySecret default-profile=default

required is set to make sure that only IPSec encapsulated L2TP connections will be accepted.

Now what it does is enables L2TP server and creates dynamic ipsec peer iwth specified secret

[admin@MikroTik] /ip ipsec peer> print 
 0  D address=0.0.0.0/0 local-address=0.0.0.0 passive=yes port=500 
      auth-method=pre-shared-key secret="123" generate-policy=port-strict 
      exchange-mode=main-l2tp send-initial-contact=yes nat-traversal=yes 
      hash-algorithm=sha1 enc-algorithm=3des,aes-128,aes-192,aes-256 
      dh-group=modp1024 lifetime=1d dpd-interval=2m dpd-maximum-failures=5 

Icon-note.png

Note: Care must be taken if static ipsec peer configuration exists.

Next step is to create VPN pool and add some users.

/ip pool add name=vpn-pool range=192.168.99.2-192.168.99.100

/ppp profile
set default local-address=192.168.99.1 remote-address=vpn-pool

/ppp secret
add name=user1 password=123
add name=user2 password=234

If there are strict firewall policies, do not forget to add rules which accepts l2tp and ipsec.

/ip firewall filter
add chain=input protocol=udp port=1701,500,4500
add chain=input protocol=ipsec-esp

Now router is ready to accept L2TP/IpSec client connections.

L2TP/IpSec with static IPSec server setup

Ipsec/L2TP behind NAT

Consider setup as illustrated below

Ipsec-l2tp-example.png

Client needs secure connection to the office with public address 1.1.1.1, but server does not know what will be the source address from which client connects. It is so called road-warrior setup.
Our client will also be located behind the router with enabled NAT.

For the setup RouterOS router will be used as the client device behind NAT (it can be any device: Windows PC, Smartphone, Linux PC, etc.)

IP Connectivity

On the server:

/ip address 
add address=1.1.1.1/24 interface=ether1

/ip route
add gateway=1.1.1.2

On the clients router:

/ip address 
add address=2.2.2.2/24 interface=ether1
add address=10.5.8.0/24 interface=ether2

/ip route
add gateway=2.2.2.1

/ip firewall nat
add chain=srcnat action=masquerade out-interface=ether1

On the client:

/ip address
add address=10.5.8.120/24 interface=ether1

L2TP Config

On the server:

/interface l2tp-server server
set enabled=yes profil=default

/ip pool 
add name=l2tp-pool ranges=192.168.1.2-192.168.1.20

/ppp profile 
set default local-address=192.168.1.1 remote-address=l2tp-pool

/ppp secret
add name=l2tp-test password=test123456

On the client:

/interface l2tp-client
add connect-to=1.1.1.1 disabled=no name=l2tp-out1 password=password user=l2tp-test

IpSec Config

On server side:

/ip ipsec proposal
set [ find default=yes ] enc-algorithms=3des,aes-128,aes-192,aes-256
/ip ipsec peer
add generate-policy=yes hash-algorithm=sha1 nat-traversal=yes secret=test123456

RouterOS as client:

/ip ipsec proposal
set [ find default=yes ] enc-algorithms=aes-128
/ip ipsec peer
add address=1.1.1.1/32 hash-algorithm=sha1 nat-traversal=yes secret=test123456

/ip ipsec policy
add dst-address=1.1.1.1/32 protocol=udp sa-dst-address=1.1.1.1 \
      sa-src-address=10.5.8.120 src-address=10.5.8.120/32

Notice that nat-traversal is enabled. This option is required because Ipsec connection will be established through the NAT router otherwise Ipsec will not be able to establish phase2.

Icon-warn.png

Warning: Only one L2TP/IpSec connection can be established through the NAT. Which means that only one client can connect to the sever located behind the same router.

Apple iOS (iPhone/iPad) Client

Ios-ipsec.png

You must choose L2TP as VPN type in iOS to connect to the IPsec/L2TP server on RouterOS (this includes the default IPsec server created by QuickSet VPN checkbox).

Read More

  • BCP (Bridge Control Protocol)
  • MikroTik RouterOS and Windows XP IPSec/L2TP

[ Top | Back to Content ]

Зачем

Организация VPN-подключений может использоваться в различных сценариях:

  1. Подключение удалённых клиентов к корпоративной сети (работа на дому, из командировок).
  2. Объединение сегментов локальной сети двух офисов, находящихся на удалении.

Несмотря на великое множество различных протоколов и типов VPN, применительно к Mikrotik чаще всего используется связка L2TP + IPsec, т.к. для клиентов на основе Microsoft Windows не требуется установка дополнительного программного обеспечения (в отличие от OpenVPN, например), что существенно облегчает интеграцию пользователей, не обладающих высоким навыком работы на компьютере.

Итак, настраиваем сервер и клиент L2TP + IPsec.

Шаг 1. Диапазон адресов клиентов

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

IP Pool


Добавляем новый пул, назвав его как-нибудь примечательно,
чтобы потом не затупить.

Шаг 2. Профиль для VPN-подключения

Следующим шагом создадим настройки профиля подключений по VPN.

PPP

Перейдём на вкладку Profiles и добавим новый профиль.
Зададим имя для удобства. Не мудрствуя лукаво, я просто оставил L2TP. А также указал локальный и удалённый
адреса из нашего пула (по счастливой случайности он так же называется L2TP).

Я также отметил возможность изменять максимальный размер сегмента
TCP (опция Change TCP MSS). Есть подозрение, что
это поможет избежать фрагментацию сегментов.

Шаг 3. Секреты

Под секретом в данном случае понимаются учётки VPN-юзеров. Заходим также в
раздел PPP, на вкладку Secrets и
под каждого пользователя создаём свой секрет.

В качестве сервиса выбираем l2tp, а в качестве профиля – созданный на шаге № 2 профиль PPP.

Создал одну учётку пока, для эксперимента. Если уж с ней
получится, то и с другими по аналогии должно пойти на УРА.

Шаг 4. Запускаем сервер L2TP

Здесь просто убедимся, что у нас запущены соответствующие
сервисы.  Заходим в L2TP Server и
убеждаемся в наличии соответствующих настроек:

Здесь, кстати, важный нюанс – для шифрования будем
использовать IPsec. Серьёзных
уязвимостей протокол не имеет, поэтому этого нам будет достаточно. Нужно
указать предварительный ключ – в примере на скрине это слово «ipsec». Можно придумать что-нибудь
посекурнее, например «123» или «password»
— каждый решает сам J

Шаг 5. Тюним IPsec

Важнячок: «из коробки» мой IPSEC глючил и
не давал подключиться. Решение было такое: идём в IP IPSEC и
создаём новую группу в разделе Group.
А потом на вкладке «Policies»
добавить политику, указав нашу новую группу в качестве шаблона. Видимо какой-то
глюк, но с ним многие сталкивались.

Шаг 6. Файрволл

На сетевом экране IP — Firewall необходимо открыть следующие порты (цепочка inputвходящий): протокол udp, порты 500, 4500, 1701.

Можно уточнить правила, указав In. Interface, чтобы ожидать пакеты именно с внешнего интерфейса, а также указать конкретные Src. или Dst. адреса, но это уже будет зависеть от конкретной ситуации. Чем точнее описано правило, тем оно более «секурно», но одновременно и менее гибкое.

Соответственно, если политика по умолчанию у вас accept — то делать ничего не надо. Если drop — скорректировать правила соответствующим образом. Настройка файрволла — тема очень интересная, заслуживает отдельной статьи.

Шаг 7. Настраиваем клиента Windows

VPN-сервер настроен! Самое время настроить клиента. Делать это мы будем из операционной системы Windows 7, хотя настройки в общем-то типовые. Дополнительный софт ставить не надо.

Открываем «Центр управления сетями и общим доступом» через «Панель управления» и нажимаем кнопку «Настройка нового подключения или сети»:

Тут нужно найти пункт, содержащий в сете три волшебные буквы «VPN», а именно: «Подключение к рабочему месту».

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

На следующем шаге указываем IP-адрес нашего VPN-сервера (в данном случае — внешний интерфейс Mikrotik) и даём подключению хорошо читаемое имя. Я укажу наш сайт )

И вот здесь пригодится имя пользователя и пароль, которые мы создавали на этапе «секреты».

Если попытаться подключиться сейчас, то ничего хорошего не выйдет! Всё правильно, открываем свойства созданного VPN-подключения и идём на вкладку «Безопасность».

Выбираем тип VPN: L2TP IPsec, а также нажимаем на кнопку «Дополнительные параметры» и вводим предварительный ключ (ipsec)

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

Данную статью можно закончить! Оставайтесь с нами, рассмотрим и другие варианты подключений!

  • Настройка ftp сервера на windows server 2012 r2
  • Настройка dns сервер windows server 2019
  • Настройка kodi на windows 10
  • Настройка ftp сервера filezilla на windows server 2008
  • Настройка dns server windows 2003 server