Как настроить vpn сервер на роутере mikrotik

mikrotik-pptp-l2tp-server-000.pngПродолжая актуальную сегодня тему удаленного доступа, сегодня мы рассмотрим настройку роутеров Mikrotik для использования из в качестве PPTP или L2TP VPN-серверов. С одной стороны тема эта, вроде бы простая, с другой, как обычно, имеет свои особенности, которые следует учитывать еще на стадии выбора решения. Ведь хороший специалист выбирает инструмент под задачу, а не пытается делать наоборот, признавая сильные и слабые стороны каждого решения.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Перед тем, как браться за настройку VPN-сервера на базе Mikrotik мы рекомендуем вам ознакомиться с нашим материалом: Производительность младших моделей Mikrotik hEX и hAP. Экспресс-тестирование. Если коротко: на моделях без аппаратной поддержки AES вы не получите для соединений L2TP/IPsec скоростей более 25-30 МБит/с, на моделях с поддержкой AES скорость упирается в 35-50 МБит/с. В большинстве случаев для сценария удаленного доступа этого достаточно, но все-таки данный момент обязательно следует иметь ввиду, чтобы не получить потом претензию, что Mikrotik работает плохо и этому объективно будет нечего противопоставить.

Что касается PPTP, то здесь все достаточно хорошо, даже недорогие модели роутеров позволяют достигать скоростей около 100 МБит/с, но при этом следует помнить, что PPTP имеет слабое шифрование и не считается безопасным в современных реалиях. Однако он может быть неплохим выбором, если вы хотите завернуть в него изначально защищенные сервисы, например, при помощи SSL.

Предварительная настройка роутера

Прежде чем начинать настройку VPN-сервера нужно определиться со структурой сети и выделить для удаленных клиентов пул адресов. Если брать сценарий удаленного доступа, то здесь есть два основных варианта: Proxy ARP, когда клиенты получают адреса из диапазона локальной сети и имеют доступ к ней без дополнительных настроек и вариант с маршрутизацией, когда клиентам выдаются адреса из диапазона не пересекающегося с локальной сетью, а для доступа в сеть на клиентах добавляются необходимые маршруты. В современных Windows-системах это можно автоматизировать при помощи PowerShell.

После того, как вы определились со структурой сети, следует перейти в IP — Pool и создать новый пул адресов для выдачи удаленным клиентам. Количество адресов в пуле должно соответствовать количеству планируемых VPN-клиентов, либо превышать его.

mikrotik-pptp-l2tp-server-001.png

Эти же действия в терминале:

/ip pool
add name=vpn_pool1 ranges=192.168.111.141-192.168.111.149

Затем перейдем в PPP — Profiles и настроим профиль для нашего VPN-сервера, который будет содержать базовые настройки. Если вы настраиваете сразу и PPTP и L2TP-сервера, то можете использовать для них как общий профиль, так и создать отдельные. В случае с общим профилем они будут иметь общий адрес сервера и общий пул адресов. В данном разделе уже существуют два стандартных профиля default и default-encryption, поэтому при желании можете не создавать новые профили, а настроить имеющиеся.

На вкладке General задаем параметры: Local Address — локальный адрес сервера, должен принадлежать к тому же диапазону, что и пул адресов, который вы задали выше, Remote Address — адреса для выдачи удаленным клиентам, указываем в этом поле созданный пул.

mikrotik-pptp-l2tp-server-002.pngСледящая вкладка — Protocols, здесь мы рекомендуем установить параметр Use Encryption в положение required, что будет требовать от клиента обязательного использования шифрования.

mikrotik-pptp-l2tp-server-003.png

Чтобы добавить новый профиль в терминале выполните (в данном случае мы создаем профиль с именем vpn):

/ppp profile 
add change-tcp-mss=yes local-address=192.168.111.140 name=vpn remote-address=vpn_pool1 use-encryption=required

Чтобы изменить существующий default-encryption:

/ppp profile 
set *FFFFFFFE local-address=192.168.111.140 remote-address=vpn_pool1 use-encryption=required

Для default вместо set *FFFFFFFE укажите set *0:

/ppp profile 
set *0 local-address=192.168.111.140 remote-address=vpn_pool1 use-encryption=required

Остальные параметры оставляем без изменений, для удаленных клиентов они не применяются (в том числе сжатие) и работают только при соединении между устройствами с RouterOS. Отсутствие сжатия также следует учитывать, особенно если ваши клиенты используют медленные каналы подключения, скажем 3G-модемы.

Теперь добавим пользователей, для этого откроем PPP — Secrets и создадим новую учетную запись. Обязательно заполняем поля: Name и Password, а также Profile, где указываем созданный на предыдущем шаге профиль, если профили клиента и сервера не будут совпадать — подключение окажется невозможным. Поле Service позволяет ограничить действие учетных данных только одним сервисом, для этого нужно указать его явно, если же вы хотите использовать одни учетную запись для всех видов подключения — оставьте значение по умолчанию any.

mikrotik-pptp-l2tp-server-004.pngВ терминале:

/ppp secret
add name=test1 password=123 profile=default-encryption service=pptp

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

Настройка PPTP-сервера

Настроить PPTP-сервер в RouterOS просто. Откройте PPP — Interface и нажмите кнопку PPTP Server, в открывшемся окне установите флаг Enabled, в поле Default Profile укажите созданный на подготовительном этапе профиль и в разделе Authentication оставьте только mschap2.

mikrotik-pptp-l2tp-server-005.png

Это же действие в терминале:

/interface pptp-server server
set authentication=mschap2 default-profile=default-encryption enabled=yes

Следующим шагом следует разрешить подключения к нашему VPN-серверу в брандмауэре, для этого следует разрешить входящие подключения для порта 1723 TCP. Открываем IP — Firewall и создаем новое правило: Chain — input, Protocol — tcp, Dst. Port — 1723, в поле In. Interface указываем внешний интерфейс роутера, в нашем случае ether1. Так как действие по умолчанию — accept то просто сохраняем правило.

mikrotik-pptp-l2tp-server-006.pngВ терминале создать правило можно командой:

add action=accept chain=input dst-port=1723 in-interface=ether1 protocol=tcp

На этом настройку PPTP-сервера можно считать законченной, он готов принимать подключения.

Настройка L2TP/IPsec-сервера

Точно также, как и при настройке PPTP-сервера переходим в PPP — Interface и нажмите кнопку L2TP Server. В открывшемся окне ставим флаг Enabled, в Default Profile указываем созданный ранее профиль, а в Authentication оставляем только mschap2. Затем включаем использование IPsec — Use IPsec — yes и в поле IPsec Secret вводим предварительный ключ соединения:

mikrotik-pptp-l2tp-server-007.pngДля включения сервера с указанными настройками в терминале выполните:

/interface l2tp-server server
set authentication=mschap2 enabled=yes default-profile=default-encryption ipsec-secret=myIPsecPreKey use-ipsec=yes

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

Переходим в IP — IPsec — Proposal и приводим набор настроек default к следующему виду: Auth. Algorithms — sha1, sha256, Encr. Algorithms — aes-128-cbc, aes-192-cbc, aes-256-cbc, PFS Group — ecp384.

mikrotik-pptp-l2tp-server-008.pngДанные настройки в терминале:

/ip ipsec proposal
set [ find default=yes ] auth-algorithms=sha256,sha1 pfs-group=ecp384

Затем откроем IP — IPsec — Profiles и изменим настройки профиля default: Encryption Algorithm — aes256, DH Group — modp2048, ecp256, ecp384.

mikrotik-pptp-l2tp-server-009.pngВ терминале:

/ip ipsec profile
set [ find default=yes ] dh-group=ecp256,ecp384,modp2048 enc-algorithm=aes-256

Для окончания настройки разрешим подключения к L2TP-серверу в брандмауэре. Для этого нам понадобится создать два правила, первое должно разрешать подключения для протоколов L2TP (порт 1701 UDP), IKE (порт 500 UDP) и протокола NAT-T (порт 4500 UDP), второе для протокола 50 ESP (Encapsulating Security Payload). Переходим в IP — Firewall и создаем первое правило: Chain — input, Protocol — udp, Dst. Port — 500,1701,4500, в поле In. Interface указываем внешний интерфейс роутера, в нашем случае ether1. Затем второе: Chain — input, Protocol — ipsec-esp, In. Interface -внешний интерфейс (ether1). Так как действие по умолчанию accept достаточно просто сохранить правила.

mikrotik-pptp-l2tp-server-010.pngДля терминала выполните следующие команды:

/ip firewall filter
add action=accept chain=input dst-port=500,1701,4500 in-interface=ether1 protocol=udp
add action=accept chain=input in-interface=ether1 protocol=ipsec-esp

На этом настройка L2TP/IPsec-сервера закончена.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

В сегодняшней статье мы рассмотрим настройку PPTP-сервера на Mikrotik (RouterOS) через Winbox. Роутер будет находиться на нашем тестовом стенде EVE-NG, по этому я буду использовать образ Mikrotik CHR 6.45.7 для виртуальных машин.

Пару слов о протоколе PPTP. Протокол является клиент-серверным, работает по TCP и использует в своей работе GRE. Стоит отметить, что ваши данные будут гарантированно доставлены благодаря использованию TCP. Зачастую бывает, что провайдер блокирует GRE, в результате соединение между клиентом и сервером не может установиться.

Имейте ввиду, что если вы собираетесь использовать внутри PPTP телефонию, то качество связи может ухудшиться. Предполагается что на роутере настроен доступ в интернет, и провайдер предоставляет публичный (белый) IP адрес.

Если вы хотите углубить свои знания по работе с роутерами MikroTik, то наша команда рекомендует пройти курсы которые сделаны на основе MikroTik Certified Network Associate и расширены автором на основе опыта . Подробно читайте ниже.

Содержание

  1. Настройка
  2. Настройка Firewall для PPTP Сервера
  3. 89 вопросов по настройке MikroTik

Настройка

Для начало нам нужно подключится к роутеру через Winbox.

подключаемся к роутеру 172.16.11.2

MikroTik имеет доступ в интернет через интерфейс ether1 с адресом 172.16.11.2/24. Так же на нем настроена локальная сеть на интерфейсе General-Bridge с адресом 192.168.10.1/24. В Bridge находятся интерфейсы ether2-ether4

Открываем вкладку PPP:

Открываем вкладку PPP

Нас интересует PPTP Server, и сразу дам рекомендацию, не нужно заходить в нее и включать сервер PPTP. Большая ошибка многих конфигураций — это использование стандартных профайлов. Прежде чем включать VPN, нужно создать и настроить новый. Он нужен для более тонкой настройки PPTP сервера Mikrotik. В нем мы включаем и отключаем нужные параметры. Предлагаю взглянуть.

Переходим в Profiles

Вкладка Profiles в pptp

Жмем на плюс, так же стандартные Profile не нужно удалять или выключать.

Добавления профайла черех плюс

Перед нами открывается окно нового профайла. В строке «Name» задаем понятное имя. В строке Local Address указываем IP адрес Mikrotik в VPN. Я указываю 172.16.25.1. То есть при подключении клиента к PPTP VPN автоматически назначается именно это адрес для сервера Mikrotik.

Задаем ip адрес для pptp

В строке Remote Address указываю IP адрес или пул адресов для клиентов внутри VPN. Так как я буду подключать больше одного клиента к VPN, то создам пул из той же подсети.

Переходим в нужный нам раздел IP-Pool.

Создаем IP-Pool

Создаю пул, нажатием плюс. Задаю имя PPTP-VPN-Clients и задаю IP адреса 172.16.25.10-172.16.25.20 в строке Address.

Присваиваем имя pptp серверу

Нажимаем Apply и Ok. Проверяем, создался ли наш пул. Если все хорошо, то возвращаемся к созданию PPTP профайла.

Проверка пула

В строке Remote Address выпадающего списка, стал доступен наш пул. Выбираем его.

Выбор на вкладке Remote Address

Приведем свежующие параметры к такому виду:

  • переключаем Change TCP MSS в yes;
  • параметр Use UPnP переключаем в no.

Снова рекомендация, никогда не оставляйте default если хотите, чтобы все работало именно так как, вы планируете.

Рекомендация по default

Переходим в Protocols и изменяем:

  1. Ставим no для Use MPLS;
  2. Ставим yes для Use Compression;
  3. Ставим yes для Use Encryption.

Вкладка Protocols ppp

Далее в Limits указываем no для Only One. Остальные настройки можно не задавать. К примеру, если бы нужно было ограничить скорость клиента в VPN, то нас интересовала вкладка Queue – но это совсем другая история.

Вкладка Limits

Теперь можно сохранять. Жмем Apply и OK

В списке должен появиться наш созданный профайл.

Проверяем наш созданный профайл

Нам осталось включить PPTP сервер на Mikrotik и настроить Firewall. Нас интересует PPTP в меню Interface.

Включение PPTP сервера

Ставим галочку Enabled.

Выбираем в Default Profile наш созданный PPTP-General-Profile.

Authentication — для более безопасной проверки подлинности рекомендую использовать только mschap2. Мы отключаем все другие протоколы проверки подлинности, но будьте осторожны, т.к. некоторые устройства могут не поддерживать протокол MS-CHAPv2.

Выбираем протокол аутентификации

Жмем Apply и OK.

Настройка Firewall для PPTP Сервера

На этом еще не все, нам осталось настроить Firewall. Если ваш роутер с пустой конфигурацией, то делать ничего не нужно. Если у вас есть запрещающие правила входящего трафика, то нужно внести некоторые изменения.

Внимание, если вы используете default config, то правила вносить необходимо.

Переходим в Firewall. (IP-Firewall), выбираем Filter Rules и жмем плюс.

Добавляем правила в Firewall для pptp

В окне создания New Firewall Rule выбираем цепочку input, поскольку трафик будет идти именно на роутер (входящий трафик).

Protocol выбираем gre.

Connection State ставим галочку new.

Добавляем правила для GRE протокола

Далее идем во вкладку Action и в параметре Action проверяем чтобы значение было на accept.

Разрешающие правило для GRE

Нажимаем Apply и OK.

Создаем еще одно. Нажимаем плюс. Все параметры остаются такие же, за исключением параметров Protocol и Dst.port.

Protocol выбираем tcp

Dst.port 1723.

Правило для TCP порта 1723

Сохраняем и проверяем.

Проверяем два созданных правила

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

Для удобства подпишем их одним комментарием.

Задаем комментарий двух правил

Теперь понятно, что это за правила, в какой цепочке и для чего нужны.

Комментарий для определения цепочки

Пару слов про блокировку GRE. Некоторые товарищи все же блокируют его, но как понять, доходит ли пакеты до нас?

Расскажу маленькую хитрость. В каждом правиле firewall есть счетчик, они называются Bytes и Packets.

Счетчик пакетов на соединении

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

89 вопросов по настройке MikroTik

Вы хорошо разбираетесь в Микротиках? Или впервые недавно столкнулись с этим оборудованием и не знаете, с какой стороны к нему подступиться? В обоих случаях вы найдете для себя полезную информацию в курсе «Настройка оборудования MikroTik». 162 видеоурока, большая лабораторная работа и 89 вопросов, на каждый из которых вы будете знать ответ. Подробности и доступ к началу курса бесплатно тут.

Время на прочтение
7 мин

Количество просмотров 31K

Эта статья о том, как перестать мучиться с сертификатами для IKEv2-RSA и их установкой.

В Интернете есть множество статей и видео по настройке аутентификации IKEv2 с использованием сертификатов. Главная проблема такой конфигурации — необходимость генерации множества сертификатов, доставки и установки их на каждое клиентское устройство. Довольно замороченный процесс, согласитесь?

Вместе с тем, протокол IKEv2 предоставляет быстрый, защищенный доступ к локальной сети с возможностью автоматической передачи маршрутов и параметров DNS VPN‑клиенту.
Но схему доступа можно существенно упростить используя аутентификацию по логину и паролю. Полученную схему можно масштабировать на прочие VPN‑протоколы — l2tp, pptp, sstp, ovpn. Для этого необходимо VPN‑сервер MikroTik перевести на седьмую версию RouterOS. И нам потребуется сгенерировать всего один сертификат — для VPN‑сервера.

В седьмой версии RouterOS появились очень полезные функции, которые позволяют превратить MikroTik в полноценный VPN‑сервер. Среди того, что существенно облегчает жизнь админу для нашей задачи очень подходят два новшества:

  • Работа с сертификатами Let’s Encrypt

  • Встроенный Radius‑сервер

Теперь, для отдельно взятого vpn‑сервера MikroTik больше не требуется сторонний генератор и установщик сертификатов. Механизм запроса и установки действительного сертификата от Let’s Encrypt позволяет сделать это за несколько секунд. Встраиваемый Radius‑сервер решает проблему отсутствия такового в небольшой локальной сети или невозможности использования по иным причинам.

Важное уточнение по сертификатам от Let’s Encrypt в составе ОС.

Необходимо убедиться, правильно ли на клиенте установлены действующие сертификаты от Let’Encrypt. Это важно не только для нашей задачи, но и для корректной работы других служб и приложений использующих сертификаты.

Дело в том, что цепочка доверия Let’s Encrypt выглядит на сегодня так:

https://letsencrypt.org/certificates/

Иерархия сертификатов Let's Encrypt

Иерархия сертификатов Let’s Encrypt

Все автоматически выдаваемые клиентам‑микротикам сертификаты подписаны от имени R3.
В клиентской ОС Windows сертификат R3 обязательно должен быть установлен как «промежуточный доверенный центр сертификации» в хранилище КОМПЬЮТЕРА (Local Machine). Самая распространенная проблема при импорте сертификата обычно находится в метре от ПК и кликает «мышкой». ОС Windows по‑умолчанию пытается данный сертификат установить в хранилище пользователя, что ведет к проблемам доступа.

Итак. Убедитесь, что сертификат R3 присутствует в хранилище «промежуточные доверенные центры сертификации» КОМПЬЮТЕРА. Если нет — скачайте по ссылке https://letsencrypt.org/certs/lets‑encrypt‑r3.pem и установите сертификат правильно.

Выбор правильного хранилища для сертификата

Выбор правильного хранилища для сертификата

Начальные условия:

  • Внешний IP (FQDN): gw1.mt-courses.ru

  • Локальная сеть: 10.10.4.0/24

  • Адреса для ikev2-клиентов: 192.0.2.0/24

  • Маршрутизатор под управлением MikroTik RouterOS версии 7.x

Настройка MikroTik RouterOS. Подготовка

1. Генерация запроса и установка сертификата на сервер

Необходимые условия: на роутере должен быть открыт и доступен извне порт http (tcp:80). По‑умолчанию, на этом порту работает служба webfig. Доступ к ней извне всем подряд оставлять крайне НЕ рекомендуется, так что можно открывать порт только в момент генерации/обновления сертификата.

Также желательно наличие FQDN связанного с внешним IP вашего MikroTik. Например, gw1.mt‑courses.ru.

Скрипт получения сертификата:

/ip/firewall/filter add chain=input protocol=tcp dst-port=80 action=accept comment="temporary filter rule" place-before=1
/certificate/enable-ssl-certificate dns-name=gw1.mt-courses.ru
/ip/firewall/filter remove [find comment="temporary filter rule"]

Если в результате работы команды вы увидели сообщение «progress: [success] ssl certificate updated«, значит сертификат успешно сгенерирован и установлен в хранилище. Проверяем:

/certificate/print

Результат:

Flags: K — PRIVATE‑KEY; A — AUTHORITY; I, R — REVOKED; T — TRUSTED
Columns: NAME, COMMON‑NAME

0  K T letsencrypt‑autogen_2023–xx–xxThh:mm:ssZ gw1.mt‑courses.ru

2. Получение и установка дополнительного пакета user-manager на MikroTIk

Для этого Вам потребуется зайти на сайт https://www.mikrotik.com в раздел «Software» и скачать оттуда архив «extra packages» соответствующий аппаратной архитектуре Вашего роутера MikroTik.

Внешний вид страницы загрузки пакетов RouterOS версии 7

Внешний вид страницы загрузки пакетов RouterOS версии 7

Обратите внимание, чтобы номер версии пакета точно соответствовал установленной версии RouterOS! Невозможно установить пакеты версии, отличающейся от версии установленной на роутере операционной системы.

Из архива Вам потребуется единственный файл «user‑manager-7.x.npk»

Содержимое архива extra-packages

Содержимое архива extra-packages

Данный файл необходимо извлечь из архива, скопировать в корень файловой системы маршрутизатора MikroTik и произвести перезагрузку (/system reboot ).

В случае, если пакет успешно установлен, в корневом меню WinBox появится новый пункт «User Manager» (если нет — читайте LOG. В начале будет описана причина ошибки)

Внешний вид меню Winbox маршрутизатора с установленным пакетом "User-Manager

Внешний вид меню Winbox маршрутизатора с установленным пакетом «User-Manager

Настройка IKEv2

Теперь переходим к самому основному, собственно настройке VPN‑сервера доступа по протоколу IKEv2. Поскольку при подключении клиента, ему выделяется некий виртуальный IP‑адрес, то сначала нам необходимо создать пул адресов для подключаемых клиентов:

/ip/pool add name=vpn-pool ranges=192.0.2.1–192.0.2.254

Переходим непосредственно к настройке IPSec. Настройка IPSec требует создания нескольких сущностей:

Пункты настройки IPSec в меню Winbox

Пункты настройки IPSec в меню Winbox
  1. Profile

  2. Proposal

  3. Group

  4. Policy Template

  5. Peer (шаблон)

  6. Modeconf

  7. Identity

Group используется как тег для связывания Identity и Policy Template для генерации индивидуальных Policy из шаблона (template) при подключении клиента. По сути, Identity, это то, что собирает во едино все настройки, когда клиент подключится к серверу. По этому Identity настраивается в последнюю очередь, когда остальные параметры созданы.


Здесь хочу дать вам совет: Никогда. Н‑и-к‑о-г‑д-а, без острой необходимости не изменяйте в RouterOS профили с названием «Default», если точно НЕ знаете, как это повлияет на дальнейшую работу. В Winbox всегда есть возможность создать копию профиля и проводить эксперименты с копией. В консоли тоже есть такая возможность — ключевое слово «copy‑from=».

1,2) Для наглядности создадим копии имеющихся Proposal и Profile. При этом отключим в Proposal PFS:

/ip/ipsec/proposal
print
add copy-from=0 name=proposal-ike2 pfs-group=none
/ip/ipsec/profile
print
add copy-from=0 name=profile-ike2

Новые наборы параметров для IKEv2

Новые наборы параметров для IKEv2

3) Создадим отдельную Group для Policy:

/ip ipsec policy group add name=ike2

Группа для генерации policy

Группа для генерации policy

4) Создаем шаблон Policy Template для подключенных пиров, получивших адрес из пула 192.0.2.0/24:

/ip/ipsec/policy add dst-address=192.0.2.0/24 group=ike2 proposal=proposal-ike2 src-address=0.0.0.0/0 template=yes

Новый шаблон Ploicy Template ссылается на Proposal с шага 1 и на Group с шага 3

Новый шаблон Ploicy Template ссылается на Proposal с шага 1 и на Group с шага 3

5) Создаем шаблон пира (клиента):

/ip/ipsec/peer add exchange-mode=ike2 name=peerike2 passive=yes profile=profile-ike2

Шаблон для peer ссылается на Profile с шага 1

Шаблон для peer ссылается на Profile с шага 1

6) Создаём mode‑config. Это набор параметров, которые будут переданы клиенту, включая адрес DNS‑сервера и маршруты до локальных сетей. В примере клиенту передается маршрут до локальной сети 10.10.4.0/24:

/ip/ipsec/mode-config 
add address-pool=vpn-pool name=ike2-modconf split-include=10.10.4.0/24 system-dns=yes

Новый modeconf с параметрами для передачи клиенту. Ссылается на Pool

Новый modeconf с параметрами для передачи клиенту. Ссылается на Pool

7) Создаем итоговый identity. В нем мы также будем использовать ссылку на полученный сертификат от Let’s Encrypt:

/ip/ipsec/identity
add auth-method=eap-radius certificate=letsencrypt-autogen_2023-xx-xxThh:mm:ssZ generate-policy=port-strict mode-config=ike2-modconf peer=peerike2 policy-template-group=ike2

Identity ссылается на Radius, Group, Modeconf и сертификат Let's Encrypt

Identity ссылается на Radius, Group, Modeconf и сертификат Let’s Encrypt

UPD: по рекомендации товарища @modnyman лучше сразу скачать на микротик и указать также сертификат R3 от Let’s Encrypt. Тогда не придется устанавливать его на клиентские устройства в дальнейшем для избежания ошибки IKE с кодом 13801 (см.последний абзац)

Промежуточный сертификат Let's Encrypt можно указать сразу в составе IPSec Identity

Промежуточный сертификат Let’s Encrypt можно указать сразу в составе IPSec Identity

Параметр «auth-method=eap-radius» говорит микротику, что запросы аутентификации надо пересылать на Radius-сервер. Осталось его настроить прямо на MikroTik. Наш встроенный radius (UserManager) будет использовать пароль «MySuperPass1234» и, кроме клиентов IPSec IKEv2, будет дополнительно обрабатывать запросы обычных ppp-клиентов (pptp/l2tp/sstp…)

/radius
add address=127.0.0.1 secret=MySuperPass1234 service=ppp,ipsec
/radius incoming
set accept=yes

Настройка обращений к встроенному user-manager. Пункт "ppp" не обязателен.

Настройка обращений к встроенному user-manager. Пункт «ppp» не обязателен.

Минимальная, самая примитивная настройка user-manager состоит из команд включения, разрешения взаимодействия с локальным сервером доступа используя пароль «1234» и добавления пользователя с логином «user1@gw» и паролем «1234567890»:

/user-manager
set enabled=yes
/user-manager router
add address=127.0.0.1 name=router1 shared-secret=MySuperPass1234
/user-manager user
add name=user1@gw1 password=1234567890

Описание доступа для vpn-сервера и одного пользователя

Описание доступа для vpn-сервера и одного пользователя

Код для RouterOS целиком

/ip/firewall/filter add chain=input protocol=tcp dst-port=80 action=accept comment="temporary filter rule" place-before=1
/certificate/enable-ssl-certificate dns-name=gw1.mt-courses.ru
/ip/firewall/filter remove [find comment="temporary filter rule"]
/ip/pool add name=vpn-pool ranges=192.0.2.1–192.0.2.254
/ip/ipsec/proposal
print
add copy-from=0 name=proposal-ike2 pfs-group=none
/ip/ipsec/profile
print
add copy-from=0 name=profile-ike2
/ip/ipsec/policy group add name=ike2
/ip/ipsec/policy add dst-address=192.0.2.0/24 group=ike2 proposal=proposal-ike2 src-address=0.0.0.0/0 template=yes
/ip/ipsec/peer add exchange-mode=ike2 name=peerike2 passive=yes profile=profile-ike2
/ip/ipsec/mode-config add address-pool=vpn-pool name=ike2-modconf split-include=10.10.4.0/24 system-dns=yes
/ip/ipsec/identity add auth-method=eap-radius certificate=letsencrypt-autogen_2023-xx-xxThh:mm:ssZ generate-policy=port-strict mode-config=ike2-modconf peer=peerike2 policy-template-group=ike2
/radius add address=127.0.0.1 secret=MySuperPass1234 service=ppp,ipsec
/radius incoming set accept=yes
/user-manager set enabled=yes
/user-manager router add address=127.0.0.1 name=router1 shared-secret=MySuperPass1234
/user-manager user add name=user1@gw1 password=1234567890

Подключаем клиента windows.

Создаем новое подключение к VPN.

Имя/адрес сервера: указываем FQDN, своё, на которое выдан сертификат (у меня это gw1.mt-courses.ru)

Логин в примере: user1@gw1 Пароль: 1234567890

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

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

Если всё сделано правильно, то должно произойти успешное подключение в VPN.

Если же возникает ошибка IKE с кодом 13801 то, скорее всего, неправильно или не туда в системе установлен сертификат R3.

Пожалуй самой востребованной функцией после Wi-Fi в MikroTik’ах является VPN. Вообще данный сервис набирает особые обороты в последнее время для построения частных защищённых сетей или для получения доступа к ресурсам Интернет с другого IP адреса. К примеру определённые Интернет ресурсы в некоторых странах блокируют доступ с IP адресов из других стран, или из за того, что провайдер использует общий IP адрес, некоторые ресурсы блокируют доступ, по причине большого количества запросов с одного IP, воспринимая это как атаку. В решении всех этих проблем нам поможет VPN. Для начала разберёмся что это, как работает и какие виды VPN существуют.

Предидущие статьи:
MikroTik настройка для начинающих. Часть 1 — Настройка интернет в MikroTik
MikroTik настройка для начинающих. Часть 2 — Настройка Wi-Fi в MikroTik

Следующие статьи:
MikroTik настройка для начинающих. Часть 4 — Интернет для детей в MikroTik

Настройка VPN в MikroTik (PPTP, L2TP, OpenVPN)

Существует три наиболее часто используемых протокола VPN — это PPTP, L2TP и OpenVPN. Не углубляясь в технические особенности каждого (всё есть на Вики и повторяться не имеет смысла), нам для понимания принципа нужно знать одну простую вещь. VPN — это тоннель точка-точка. Т.е. это то, что позволяет соединить одно устройство с другим через сеть Интернет, создав при этом прямой изолированный тоннель между данными устройствами. Настроить VPN в MikroTik достаточно просто. Всё что нам потребуется для этого знать — это данные для подключения к удалённому VPN серверу и используемый протокол. Как всегда три простых шага.

  • Настройка профиля;
  • Настройка сервера;
  • Настройка клиента.

Русскоязычный онлайн-курс по MikroTik от нашего коллеги Дмитрия Скромнова. Здесь можно изучить MikroTik и RouterOS самостоятельно по курсу «Настройка оборудования MikroTik». Курс основан на официальной программе MTCNA, но содержит больше информации. Это 162 видеоурока и большая практическая задача, разбитая на 45 лабораторных работ. Время на изучение неограниченно – все материалы передаются бессрочно и их можно пересматривать сколько нужно. Первые 25 уроков можно посмотреть бесплатно, оставив заявку на странице курса.

Настройка профиля

Конечно, можно использовать предустановленный профиль, но тогда не будет полного понимания конфигурации, да и не все протоколы смогут работать с профилем по умолчанию. В независимости от типа VPN, сконфигурированный профиль понадобится и на сервере и на клиенте, за исключением того, что на клиенте поля Local Address и Remote Address не заполняются, соответственно пул создавать не нужно. Никаких специфических настроек мы вносить не будем, единственное что я рекомендую делать — это создавать адрес лист и интерфейс лист для VPN, изменять TCP MSS (бывает очень полезно если у вас PPPoE) и использовать UPnP. Эти нехитрые опции в дальнейшем могут пригодиться.

Для начала создадим список интерфейсов с именем My-VPN-IFs, и пул адресов (на сервере) с именем VPN-pool1 как это сделать, можно прочитать в первой и второй части. Теперь переходим к настройке профиля. Здесь мы указываем имя профиля, имя пула адресов, имя списка адресов, выбираем ранее созданный список интерфейсов и указываем DNS серверы. В качестве DNS можно указать локальный адрес вашего MikroTik’а если у вас присутствуют локальные доменные имена или иные статические записи DNS.

Настройка PPP профиля в MikroTik

Настройка PPP профиля в MikroTik

Теперь сохраняем профиль и переходим к настройке сервера. Естественно, подразумевается что сервером VPN выступает один MikroTik, а клиентом другой.

Важно!!! Для OpenVPN, в профиле, поле Local Address не должно быть пустым! Здесь необходимо указать IP из той же сети что и указанный пул, но при этом этот адрес не должен входить в указанный пул. Проще говоря, если мы используем сеть 10.0.3.0/24, из которой используется пул 10.0.3.10-10.0.3.100, то локальный адрес должен быть в промежутке между 10.0.3.1-10.0.3.9 или 10.0.3.101-10.0.3.254.

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

Сложность Настройки VPN сервера в MikroTik напрямую зависит от выбранного протокола. Рассмотрим каждый, в порядке возрастания сложности, предварительно создав пользователя(ей) для аутентификации на нашем сервере. Данная конфигурация идентична для всех типов VPN.

Настройка PPP пользователя в MikroTik

Настройка PPP пользователя в MikroTik

В дальнейшем именно эти данные будут использованны для аутентификации на нашем VPN сервере. Помимо логина и пароля, здесь для каждого пользователя можно указать к какому сервису данный пользователь будет иметь доступ (Service), указать локальный и клиентский IP адрес (Local/Remote address), добавить маршрут (Routes) и установить ограничения (Limit *).

PPTP — самый простой тип VPN как с точки зрения конфигурации, так и защищённости. Считается наиболее производительным за счёт отсутствия вменяемого шифрования, однако это очень древний протокол, который стоит использовать только в крайнем случае.

Настройка PPTP сервера в MikroTik

Настройка PPTP сервера в MikroTik

L2TP — промышленный стандарт среди VPN. В связке с IPsec используется повсеместно всевозможными банками, ритейл сетями и прочими крупными компаниями. Требует дополнительных ресурсов за счёт шифрования, однако считается одним из наиболее защищённых. Из минусов здесь только один IPsec пароль. Это значит, что все пользователи этого VPN сервера будут использовать один IPsec пароль при разных паролях аутентификации. Из рекомендаций пожалуй самые очевидные — включить IPsec и отключить chap и pap, чтобы пароли не летали в открытом или плохо шифрованном виде.

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

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

OpenVPN — на мой взгляд это самый достойный протокол, который обеспечит идеальный баланс скорости, защиты данных и надежности. Собственно говоря, именно этот протокол стоит использовать и именно он используется в качестве основного всевозможными VPN-сервисами. Для работы этого протокола, на обеих сторонах (клиент-сервер) используются (опционально) SSL сертификаты, которые нам необходимо сгенерировать. Для начала генерируем корневой сертификат (УЦ).

Создание SSL сертификата в MikroTik

Создание SSL сертификата в MikroTik
Создание CA SSL сертификата в MikroTik
Создание CA SSL сертификата в MikroTik

Рекомендуется указывать 127.0.0.1 для корневого сертификата, однако любой действующий IP адрес на данном MikroTik’е тоже подойдёт. По завершению процесса в поле Progress появится надпись done. После её появления, закрываем все окошки. Вообще, стоит заполнять все реквизиты SSL сертификата, но мы здесь чуток поленимся 😉 .
Теперь переходим к созданию сертификата OpenVPN сервера и клиента. Процесс аналогичен предыдущему, за исключением пары пунктов. Здесь мы указываем не IP хоста, а корневой сертификат УЦ (CA) и естественно другое (уникальное) имя создаваемого сертификата.

Создание OVPN SSL сертификата в MikroTik

Создание OVPN SSL сертификата в MikroTik
 Создание клиентского OVPN SSL сертификата в MikroTik
Создание клиентского OVPN SSL сертификата в MikroTik

После того как все сертификаты созданы, нужно экспортировать корневой сертификат и сертификат+ключ всех клиентов. Важно! Корневой сертификат в отличие от клиентских экспортируется без закрытого ключа, поэтому поле Export Passphrase оставляем пустым. В то же время, все пароли у ключей клиентских сертификатов должны быть разными (уникальными) и не совпадать с паролями этих клиентов. Эти пароли необходимо запомнить/записать!!! Экспортированные сертификаты можно найти в файлах на локальном диске.

Экспорт CA SSL сертификата в MikroTik

Экспорт CA SSL сертификата в MikroTik
Экспорт SSL сертификата в MikroTik
Экспорт SSL сертификата в MikroTik
Экспортированные SSL сертификаты в MikroTik
Экспортированные SSL сертификаты в MikroTik

Справившись с сертификатами, переходим к настройке OpenVPN сервера. Здесь выбираем сертификат OpenVPN сервера, указываем на необходимость клиентского сертификата и выбираем способы шифрования.

Настройка OVPN сервера в MikroTik

Настройка OVPN сервера в MikroTik

Так выглядит конфигурация VPN сервера в MikroTik для наиболее популярных протоколов. Естественно, чтобы не углубляться в подробности, здесь опущено много параметров, поэтому если возникают вопросы по какому-то из них, не стесняемся, оставляем комментарии, задаём вопросы.

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

Теперь рассмотрим настройки клиентов применительно к каждому протоколу. Аналогично серверу, начнём по мере возрастания сложности. Напомню, что на клиенте так же как и на сервере необходимо создать профиль VPN, в котором в отличие от сервера поля Local Address и Remote Address не заполняются, а пул не создаётся.

PPTP — в поле Connect To вводим IP адрес или доменное имя нашего сервера. Далее логин, пароль, профиль и тип шифрования пароля. Жмём Apply, получаем результат. Как только увидели в нижней части окна running и Status: connected, можем переходить к использованию.

Настройка PPTP клиента в MikroTik

Настройка PPTP клиента в MikroTik

L2TP — от предыдущего отличается только опциями IPsec, поэтому действуем по аналогии.

Настройка L2TP клиента в MikroTik

Настройка L2TP клиента в MikroTik

OpenVPN — как и сервер, требует в нашей конфигурации SSL, поэтому импортируем экспортированные с сервера сертификаты и ключ. Для начала загружаем их в систему.

Импорт SSL сертификатов в MikroTik

Импорт SSL сертификатов в MikroTik

Теперь загруженные сертификаты необходимо импортировать в систему. Для закрытого ключа используем ранее введённый на сервере пароль.

Импорт корневого SSL сертификата в MikroTik

Импорт корневого SSL сертификата в MikroTik
Импорт клиентского SSL сертификата в MikroTik
Импорт клиентского SSL сертификата в MikroTik
Импорт закрытого ключа сертификата в MikroTik
Импорт закрытого ключа сертификата в MikroTik

Выполнив эти нехитрые действия, можем переходить к настройке OpenVPN клиента. Аналогично предыдущим, за исключением поля выбора сертификата и типа аутентификации. Если вдруг не получилось с первого раза, напомню про поле Local Address в профиле на сервере.

Настройка OpenVPN клиента в MikroTik

Настройка OpenVPN клиента в MikroTik

Вот собственно и всё, теперь можно использовать VPN как душе угодно! Если вдруг возникли сложности, вопросы или предложения, пишем в форме для комментариев ниже, именно благодаря вашим комментариям я выбираю наиболее актуальные для вас темы, ну а пока, буду делать следующий рецепт как «готовить» MikroTik.

Друзья, для тех, кто хочет стать настоящим профи, я рекомендую пройти Онлайн-курс по MikroTik на русском от нашего коллеги Дмитрия Скромнова. Здесь можно изучить MikroTik и RouterOS самостоятельно по курсу «Настройка оборудования MikroTik». Курс основан на официальной программе MTCNA, но содержит больше информации. Это 162 видеоурока и большая практическая задача, разбитая на 45 лабораторных работ. Время на изучение неограниченно – все материалы передаются бессрочно и их можно пересматривать сколько нужно. Первые 25 уроков можно посмотреть бесплатно, оставив заявку на странице курса.

В этот раз я расскажу как настроить 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

  • Как настроить vpn через роутер asus
  • Как настроить vpn на роутере huawei ax3
  • Как настроить vpn канал на роутере
  • Как настроить vpn туннель на роутере tp link
  • Как настроить vpn сервер на роутере zyxel