Пошаговая инструкция по объединению сетей с помощью L2TP и L2TP/IPSec на Mikrotik

28.08.2015
Поделиться в:

Пошаговая инструкция по объединению сетей разных провайдеров с помощью L2TP и L2TP/IPSec на оборудовании Mikrotik

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

Объединение сетей мы будем рассматривать на примере оборудования компании Mikrotik. В качестве тестового сервера используется маршрутизатор RB2011UiAS-RM, который является отличным выбором для небольших офисов и компаний, ограниченных в бюджете. В качестве конечного клиента используется одно из самых доступных решений – Mikrotik hAP lite (RB941-2n).

Благодаря своей невысокой, hAP lite можно с легкостью применять в домашних условиях, для подключения сотрудников, работающих удалённо. Хороший показатель производительности позволяет использовать этого «малыша» даже в малых офисах, где нет высоких требований.

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

Одной из самых популярных технологий для таких целей можно считать VPN – Virtual Private Network. Для реализации VPN, можно прибегнуть к нескольким вариантам: PPTP, L2TP, OpenVPN, SSTP и т.д. PPTP морально устарел, а OpenVPN и SSTP поддерживаются далеко не на всех устройствах.

По этим причинам, а также благодаря простоте настройки и доступности на устройствах, работающих под управлением разных ОС, протокол L2TP (Layer 2 Tunnel Protocol) является одним из самых популярных протоколов туннелирования. Проблемы могут возникать в случае нахождения клиента за NAT, когда Firewall блокирует пакеты. Однако даже в этом случае есть решения по обходу блокировки. Один из недостатков L2TP – безопасность, которая решается применением IPSec. Второй и, пожалуй, самый значимый недостаток – производительность. При использовании IPSec происходит двойная инкапсуляция, что снижает производительность – это именно та цена, которую придется заплатить за безопасность передаваемых данных.

Тестовый стенд

Для лучшего понимания настроек, ниже приведена иллюстрация, которая показывает структуру сети.

иллюстрация L2TP соеденения

В качестве интернет-провайдера выступает маршрутизатор RB951Ui-2HnD, который выдает устройствам IP в подсети 192.168.106.0/24. В реальности же у вас будут другие IP-адреса на WAN-интерфейсах.

В качестве интернет-провайдера выступает маршрутизатор RB951Ui-2HnD

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

Итак, на главном сервер должен быть статический белый внешний IP-адрес, в качестве примера у нас это 192.168.106.246. Наличие статики важно т.к. адрес не должен меняться, в противном случае придётся прибегать к лишним действиям и использовать DNS-имя.

статический белый внешний IP-адрес

Создание профилей

Заходим в раздел PPP, открываем вкладку Profiles, здесь необходимо создать профиль, который будет применяться к VPN-подключениям. Отметьте опции Change TCP MSS, Use Compression, Use Encryption. По-умолчанию, будет использоваться шифрования MPPE 128 bit.

создать профиль, который будет применяться к VPN-подключениям

создать профиль, который будет применяться к VPN-подключениям

Переходим на вкладку Interface. Нажимаем L2TP Server, в появившемся окошке ставим галочку Enabled и выбираем профиль по-умолчанию, который мы создали ранее. Тип аутентификации, по желанию – оставить как есть, либо выбрать только MS-CHAP v2.

Опцию IPsec оставляем отключенной.

Опцию IPsec оставляем отключенной

Переходим в Secrets, здесь необходимо создать нового пользователя VPN. В качестве Service указываем L2TP, тут же можно указать используемый профиль.

создать нового пользователя VPN

Локальный адрес указываем 10.50.0.10, удаленный – 10.50.0.11. При необходимости создаём нужно количество пользователей. Для каждого пользователя локальный IP будет одинаковым, удалённый IP увеличиваем на единицу (т.е. 10.50.0.12, 10.50.0.13 и т.д.). Можно конечно прибегнуть к использованию пула адресов, но со статикой вам проще будет писать маршруты.

указываем IP адреса

Создание интерфейса

Для каждого пользователя создаём свой интерфейс. Открываем раздел интерфейсов и нажимаем плюс, в выпадающем меню выбираем L2TP Server Binding, указываем отображаемое название и имя пользователя. При подключении пользователя здесь будет отображаться вся информация.

L2TP Server Binding, указываем отображаемое название и имя пользователя

При подключении пользователя здесь будет отображаться вся информация

Настройки файрволла


Настройки файрволла

Настройки файрволла

Для работы VPN необходимо открыть UDP-порт 1701 (chain input, protocol 17(udp), dst-port 1701, accept). После чего необходимо поднять приоритет правила, перемещаем его выше.

открыть UDP-порт 1701 (chain input, protocol 17(udp), dst-port 1701, accept)

поднять приоритет правила

Далее заходим в NAT и добавляем маскарадинг для VPN (chain srcnat, out interface all ppp, action masquerade), это необходимо делать для того, чтобы компьютеры за роутером видели друг друга.

заходим в NAT

добавляем маскарадинг для VPN

добавляем маскарадинг для VPN

Добавление маршрутов

Прописываем маршрут в удалённую подсеть. Конечная подсеть 192.168.2.0/24, в качестве шлюза выступает IP клиента внутри виртуальной сети, в нашем случае это 10.50.0.11, target scope выставляем единицу, Pref. Source – локальный IP сервера внутри виртуальной сети, 10.50.0.10.

Добавление маршрутов

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

завершение настройки

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


интрефейс

Открываем раздел интерфейсов и добавляем новый L2TP Client, указываем IP-адрес сервера и свои учётные данные, по-умолчанию выбираем профиль с шифрованием и снимаем галочку с дефолтного маршрута.

добавляем новый L2TP Client

указываем IP-адрес сервера и свои учётные данные

выбираем профиль с шифрованием и снимаем галочку с дефолтного маршрута

Применяем, если всё сделано правильно – соединение должно быть установлено.

пинг

Пробуем пинговать 192.168.1.1… и он, конечно же, отвечать не будет. Добавляем новый статический маршрут – удаленная подсеть 192.168.1.0/24, в качестве шлюза IP сервера в виртуальной сети, Pref. Source – наш IP в виртуальной сети. Т.е. на клиенте все адреса проставляются наоборот.

Пробуем пинговать

Пробуем пинговать

Пробуем повторно выполнить ping 192.168.1.1 – есть.

Пробуем пинговать, есть пинг

Но компьютеры за роутером ещё не видят удалённую сеть.

компьютеры за роутером ещё не видят удалённую сеть

Создаем для них маскарадинг, аналогичный тому, что создан на сервере. В качестве выходного интерфейса указываем наше VPN-подключение.

маскарадинг

маскарадинг

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

есть пинг

В нашем примере, как показало тестирование, удалось получить канал с пропускной способностью около 50 Мбит/сек.

l2tp vpn without ipsec

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

Настройка L2TP + IPSec

Иногда на практике нужно обеспечить должный уровень безопасности. При использовании L2TP целесообразно прибегать к использованию IPSec. В качестве примера используется сеть, настроенная по вышеизложенной инструкции.

Обратите внимание! IPSec создаётся внутри туннеля L2TP между виртуальными адресами 10.50.0.X. Такая реализация позволяет не зависеть от IP клиента.

Если же вы хотите создать IPSec-туннель между WAN сервера и WAN клиента, необходимо, чтобы у клиента был белый внешний IP. Если IP будет динамичным, вам потребуется также использовать разные скрипты для изменения политик IPSec. К тому же, в случае IPSec между внешними IP, необходимость в L2TP вовсе отпадает.

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

Первым делом заходим в NAT и отключаем маскарадинг для PPP, если этого не сделать, пакеты шифроваться не будут. Необходима перезагрузка маршрутизатора.

заходим в NAT и отключаем маскарадинг для PPP

Заходим в раздел IP – IPSec, открываем вкладку Proposals. Здесь нам необходимо указать тип шифрования и аутентификации. Алгоритм аутентификации выбираем sha1, для шифрования оптимальным будет использовать алгоритм AES 128-бит. При необходимости, можно также указать 3DES (Triple DES), он является алгоритмом по-умолчанию для L2TP/IPSec в Windows 7, в то время, как для мобильных ОС целесообразным может быть применение AES 256-бит.

открываем вкладку Proposals

Во вкладке Peers добавляем новый пир с адресом 0.0.0.0/0, что разрешит маршрутизатору принимать все подключения. По-умолчанию, используется 500-й порт. Метод аутентификации выбираем pre shared key, чуть ниже указываем желаемый пароль. Exchange Mode следует указать main l2tp.

Отмечаем опции Send Initial Contact и NAT Traversal. Последнюю опцию можно и не отмечать, если вы точно уверены, что клиент не находится за NAT провайдера. Generate policy выбираем port strict. Остальные опции вы можете посмотреть на скриншоте.

Во вкладке Peers добавляем новый пир

После добавления пира следует создать политику, для этого открываем вкладку Policies. Политику по-умолчанию можно отключить. Создаем новую политику, где указываем наши 2 локальные сети. Src. Adress (source) – наша локальная подсеть 192.168.1.0/24, Dst. Adress (destination) – удаленная подсеть 192.168.2.0/24. В закладке Action необходимо указать применяемое действие: action – encrypt, level – require. В качестве протокола выбираем ESP и ставим галочку Tunnel. SA Src. Adress – наш локальный адрес в виртуальной сети (10.50.0.10), SA Dst. Adress – адрес удаленного клиента в виртуальной сети.

открываем вкладку Policies

В качестве протокола выбираем ESP

На этом в принципе все, нужно также зайти в Firewall и добавить правила для используемых портов. Порт UDP 1701 используется для начальной инициализации и конфигурации. UDP 500 используется в L2TP/IPSec для инициализации обмена ключами. Протокол 50 – IPSec ESP, который используется для шифрования данных. Иногда необходимо также открывать порт UDP 4500 для обхода NAT.

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

В первую очередь, добавляем правила файрволла и отключаем маскарадинг для нашего VPN-подключения.

добавляем правила файрволла

отключаем маскарадинг для VPN-подключения

В разделе IP – IPSec необходимо настроить Proposal аналогично тому, как это сделано на сервере.

В разделе IP – IPSec необходимо настроить Proposal

В качестве пира будет выступать 10.50.0.10, т.е. адрес сервера в виртуальной сети. Все остальные настройки должны соответствовать тем, которые вы указали при настройке сервера.

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

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

все адреса и подсети указываются обратно тому, как они указаны на сервере

все адреса и подсети указываются обратно тому, как они указаны на сервере

Если вы всё сделали правильно, во вкладке Remote Peers у вас отобразится список пиров и используемые порты.

во вкладке Remote Peers у вас отобразится список пиров и используемые порты

Теперь необходимо открыть вкладку Installed SAs, здесь следует обратить особое внимание на значение Current Bytes – если оно равно нулю, значит, пакеты не шифруются.

открыть вкладку Installed SAs

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

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

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

Что же касается загрузки процессора, в минимальной нагрузке канала для RB2011UiAS-RM она поднялась до 9-13%.

загрузка процессора до до 9-13%

Проверка производительности L2TP/IPSec


проверка производительности

Пришло время проверить производительность канала, ведь в случае с L2TP/IPSec происходит двойная инкапсуляция, что создаёт нагрузку на центральный процессор.

В однопоточном тесте, производительность нашего канала между RB2011UiAS-RM и RB941-2n упала до 17 Мбит/сек. Если увеличить количество потоков до 10, можно добиться скорости 19 Мбит/сек.

производительность нашего канала между RB2011UiAS-RM и RB941-2n упала до 17 Мбит/сек

Если увеличить количество потоков до 10, можно добиться скорости 19 Мбит/сек

Загрузка процессора обеих устройств при этом составляет 95%, что немало. Это та цена, которую приходится платить за безопасность передаваемых данных.

Загрузка процессора 95%

Загрузка процессора 95%

Для получения высокой производительности по L2TP/IPSec следует покупать оборудование более высокого уровня, либо собирать маршрутизатор на PC + RouterOS. Если вы выбираете вариант покупки производительного маршрутизатора, обратите внимание на наличие аппаратного блока шифрования, что существенно увеличит производительность.

оборудование

logo
Пошаговая инструкция по объединению сетей с помощью L2TP и  L2TP/IPSec на Mikrotik
Отзывы покупателей
Рейтинг покупателей
4.5 / 5 4.5 5 18
На основе 18 оценок покупателей
38.9%
5.6%
11.1%
0%
0%
Отзыв
Отлично
Заголовок*
Достоинства
Недостатки
Комментарий*
Представьтесь
l2tp
Комментарий
правильно понимаю, если внешний ип белый есть со всех сторон, то что бы объеденить два офиса , можно без l2tp??
Доступ к клиенту
Комментарий
А как получить доступ к клиенту по ip 10.50.0.11
В настройка ppp->profiles стоит шифрование процессором
Комментарий
В настройка ppp->profiles стоит шифрование процессором!!! Получается двойное шифрование чип+проц поэтому и нагрузка большая. Галочку надо снимать если используем IPSec.
Хорошо
Достоинства
Хорошее описание
Комментарий
По сравнению с другими описание и лучше и проще
Still Incorrect
Комментарий
Это в любом случае неправильно. Как раньше так и сейчас. В первую очередь должен быть IPSec туннель внутри которого идут L2TP пакеты. Такова спецификация.
Чтобы обойти NAT провайдера существует опция NAT-Traversal. Там тоже есть свои нюансы, но все же.
По поводу опции "Use Ipsec" - да, ее можно сейчас использовать, но сам механизм сетапа Ipsec при этом другой. Пиры и политики создаются динамически и там ничего нельзя изменить.
В большинстве случаев всем, кто не знает как это правильно должно работать, однозначно рекомендовано использовать опцию "Use IpSec" при настройке L2TP сервера и клиента(ов). Это точно лучше чем то, что описано в статье. Не хочу никого обидеть. Просто факт остается фактом.
IPSec settings incorrect
Комментарий
Описанные в статье настройки IPSec неправильные.
IpSec пакеты ходят внутри L2TP туннеля. Это не соответсвует спецификации L2TPoverIPSEC, это небезопасно.
К тому же при таких настройках клиенты не имеют связи между собой
маршруты
Комментарий
Доброго времени суток. Сделал все по инструкции, роутеры между собой пингуются, клиенты роутеры тоже пингуют, а вот между собой связи нет, пинги не проходят :( Где я мог упустить что?
Очень помог
Достоинства
все просто для понимания
Комментарий
Хотел по благодарить, хорошая статья! мне очень помог. Спасибо
Маршруты
Комментарий
Підскажіть будь ласка, а яким чином прописати маршрути, якщо замість 192.168.1.1 ip адреса буде 10.103.0.241(яка входить до мережі 10.103.0.1/24)?
(стосується першої половини статті)
p.s. Усе зробив по аналогії , тільки ip адрес сервера у мене 10.103.0.241.
192.168.2.2 не бачить 10.103.0.241 , а навпаки все пінгується... допоможіть з маршутами
Комментарий
Валерий, Проблема может быть в NAT вашего провайдера. Точнее в его Firewall."
Комментарий
Здравствуйте, Статья Весма интерестная и полезная. Есть задача обеьденить две сети протоколом IPsec на базе роутеров mikrotik, одна сеть находится за NAT провайдера с динамическим IP к которой подключен роутер. Следовал вашей инструкции - соединение между ними по l2tp прошло хорошо но не удалось некак соеденить их по IPsec протоколу , после удаления маскардинга l2tp связь теряется и не могу дойдти до установления IPsec тунеля. второй роутер имеет белый IP. Каким образом можно решить данную задачу?
Комментарий
Владислав, , честно говоря, я не знаю "зачем NAT"? Это не моя статья... Хотя, когда ее читаешь, вроде все правильно. Но а что бы выяснить на 100%, нужно по крайней мере, повторить эту конфигурацию. Можете действительно, попробовать без маскарада."
Комментарий
Алексей, proxy-arp на bridge включен. И вообще, зачем натить VPN между сетями??? В чем логика? Так как на других сайтах пишут что не нужно, или вообще dstnat нужно делать."
Комментарий
Владислав, Что бы видеть локалку за VPN, нужно включить proxy-arp."
Комментарий
По вашей методике пингуются только роутеры. Компьютеры за Роутерами не пингуются. В чем может быть проблема?
Комментарий
Алексей, Для таких вещей существует netmap."
Комментарий
Альберт, теоретически - можно. Но могут возникнуть проблемы с маршрутизацией."
Комментарий
Добрый день!А есть возможность объединить две сети с одинаковыми подсетями 192.168.15.0/24 и 192.168.15.0/24? Разумеется, IP не дублируются в разных сетях (нет клонов).

Возврат к списку


Популярное оборудование

Авторизуйтесь, чтобы добавить отзыв

x