avatar Прямые руки Настраиваем VPN сервер L2TP и IPsec на Mikrotik RouterOS

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

33 комментария

avatar
Было бы прекрасно, если еще была «консольная» версия настройки.
Так как не у всех есть Windows, для настройки через WinBox
avatar
А действительно!
нужно будет подумать, на худой конец, можно зайти через WEB интерфейс…
avatar
Хорошая статья.
Для консольщиков можно в конце приводить настройки, экспортировав конфигурацию следующим образом:

Сохранить конфигурацию в файл:

/export compact file=myconfig

При этом конфигурация микротика сохраняется в понятном текстовом виде.
По такой же аналогии используем команды import
/export file=[filename] — экспорт конфигурации роутера в файл
/import file-name=[filename] — импорт конфигурации роутера из файла
avatar
Показать конфиг в терминале:

/export compact
avatar
Mikrotik был настроен по этому мануалу, но… при подключении в логах выдается:
ipsec, error key length mismatched, mine:256 peer:128
При отключении шифрования коннектится отлично. Понимаю что проблема в ipsec, но перерыл настройки, но так и не нашел в чем затык, поможете?
avatar
Здравствуйте.
А IPsec Secret вы одинаковый на сервере и на клиенте указали?
avatar
Да, иначе бы он выдал ошибку авторизации
avatar
Возможно вы указали слишком короткий ключ, проверьте настройки:
mine:256 peer:128
avatar
Спасибо за детальную статью со скриншотами.
Как победить отвал VPN если клиенты клиенты находятся за NAT-ом? Например подключатся к роуоутеру из гостиницы, где у всех у всех один внешний IP адрес.
avatar
Здравствуйте.
Как для L2TP победить я не знаю, возможно имеет смысл посмотреть в сторону openvpn
avatar
Здравствуйте. Настроил соединение по данной инструкции, проблем с подключением как внутри сети так и снаружи нет, НО я замахался дропать непрошенных гостей по 500 порту. Есть ли смысл открывать порты к маршрутизатору, когда и без этого соединение работает?
Microtic RouterBoard 1100 AHx2 v.6.39.1
avatar
вы не путайте маршрутизацию и блокировку портов, если лишние люди не должны подключаться к порту, то он должен блокироваться, а доступ к нему разрешают с определенного диапазона IP адресов или запрещают совсем
avatar
Попытался настройить по данному гайду. Винда 10 выдает ошибку: Попытка L2TP-соединения не удалась из-за ошибки, произошедшей на уровне безопасности во время согласования с сервером.

В логах микротика: 172.16.172.48 failed to preprocess ph2 packet.

Как побороть?
avatar
после того как винда перестанёт пытаться в логах появляется запись: phase1 negotiation failed due to timeup 172.16.172.1[500] <=> 172.16.172.48[500]
avatar
я не сталкивался с такой ошибкой
avatar
А как сделать, чтобы интернет оставался по дефолтному маршруту и при этом работали dns от микротик.
Если делать как в статье, то интернет получаем от удаленного офиса и вся сеть за mikrotik удаленного офиса видна(По dns и по IP).

Если убрать галку использовать шлюз в удаленной сети, то ресурсы за mikrotik Не доступны.
Надо добавлять маршрут route add 192.168.X.0 mask 255.255.255.0 192.168.10.1
НО при это dns не работают, приходится добавлять вручную через hosts или на домашний mikrotik в Static

Есть ли решение без добавления ручного маршрута? Не хочу чтобы клиенты пользовались интернетом из офиса
avatar
Здравствуйте.
Тут 2 варианта
1) Вы настраиваете подключение и VPN сервер будет у вас шлюзом по умолчанию
2) Вы настраиваете подключение но шлюзом по умолчанию оно не является, вам надо прописать DNS севера в настройках VPN подключения
avatar
Как делается 2 вариант?
Я писал выше, шлюзом оно «не является», только тогда галку снимешь. И потом надо маршрут пистаь.

Как это сделать без убирания галки «использовать шлюз в удаленной сети»
avatar
да все просто, заходим в настройки VPN подключения вкладка Cеть-> ip версии 4 -> свойства-использовать седеющие адреса ДНС серверов
avatar
Да это понятно :-)
Вы настраиваете подключение но шлюзом по умолчанию оно не является
Как оно может не являться? или есть галка или ее нету. Если нету, то нету маршрута до удаленной сети.

в openvpn На Linux прекрасно сделано. Когда соединяешься по vpn он не перебивает основной маршрут
avatar
Будет работать если ДНС сервера находятся в одном диапазоне с IP адресом который выдается VPN клиенту
Пример:
Клиент VPN получает IP 192.168.10.10, а адреса ДНС серверов 192.168.10.2 и 192.168.10.3
avatar
Не работает так…
У меня VPN клиент получает адреса:
20.20.20.X
ДНС автоматом прописывается 192.168.X.254 (локальный адрес шлюза).

При это сеть 192.168.X.0/24 не пингуется пока не добавишь маршрут.

Как передать маршрут клиенту?
avatar
Я наверно в предыдущих комментах не так выразился)))ДНС работает.
НАДО прозрачно ходить в сеть офиса без добавления маршрута и чтобы интернет был свой(домашний)
avatar
Фокус с выдачей ip адресов из локальной сети знаю. Но это не есть хорошо!
avatar
тогда только руками, я так думаю!
avatar
Здравствуйте!
Помогите разобраться, подключение проходит, я даже могу подключиться со своего компьютера к web консоли нашей атс, НО со сторонф МикроТика пропадает инте, т.е. ТимВьювер отваливается, как только делаю отключение от ВПН все работает. Така я же беда была при соединении по PPPtP 2х микртоиков, в чем собственно и заключается задача, объединить 2 сети. Только в обоих случаях инет отваливается.
avatar
Все перепроверил, ВСЕ РАБОТАЕТ КАК НАДО, в итоге Тим отвалился из-за смены IP адреса на моей win7, она получила адрес которым МикроТик смотрит в инет, т.е. все так как и должно быть, отсюда вопрос если соединять два МикроТика как на втором который клиент, да и на первом (сервере), в этот туннель запускать только трафик меж сетями 1го 192.168.2.0/24 и 2го 192.168.1.0/24 при этом клиент подключается с адресом 192.168.3.2
комментарий был удален
avatar
После непродолжительной эксплуатации со стороны Микротика где настроен VPN клиент, начал тормозить интернет некоторые сайты вообще не открываются, другие тормозят, отключаешь клиента и все начинает летать. В чем может быть проблема?
avatar
Здравствуйте.
А что с загрузкой процессора а маршрутизаторе?
avatar
Здравствуйте!
Загрузка на минимуме.
avatar
Смотрите когда у вас подключен VPN клиент, то трафик идет через VPN сервер, если на нем есть проблемы с интернетом то интернет начинает тормозить, как только VPN клиент отключается, то трафик начинает идти через шлюз вашего провайдера, где, скорее всего, все нормально!
Рекомендую попробовать выполнить трассировку к IP адресу, когда интернет начинает тормозить, чтобы понять как идет трафик, а потом можно выполнить ping к этому адресу и посмотреть какая задержка у пакетов.
После этого повторить операцию, но уже с отключенным VPN клиентом, думаю разница будет видна, даже по маршрутизации.
avatar
Сделал все по инструкции наткнулся на ошибку «peer sent packet for dead phase2 » подключался с android и iphone решение нашлось здесь habrahabr.ru/post/327152/
Есть что добавить? Регистрируйся и оставляй комментарии!