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

Пошаговая инструкция по объединению сетей разных провайдеров с помощью 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 происходит двойная инкапсуляция, что снижает производительность – это именно та цена, которую придется заплатить за безопасность передаваемых данных.

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

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


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

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

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


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

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



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

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


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


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


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

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



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



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



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




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

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


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

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


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




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


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



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


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


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

Поможем тем, кто помогает!



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


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


На этом базовая настройка завершена. При добавлении новых пользователей, необходимо добавлять соответствующие маршруты на устройствах, где вы хотите, чтобы устройства за роутером видели друг друга. При пробросе маршрута между 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, если этого не сделать, пакеты шифроваться не будут. Необходима перезагрузка маршрутизатора.


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


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

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


После добавления пира следует создать политику, для этого открываем вкладку 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 – адрес удаленного клиента в виртуальной сети.



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

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

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



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


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


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



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


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


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



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


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

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

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



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



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

оригинал статьи тут: http://lanmarket.ua/stats/poshagovaya-instrukciya-po-obedineniyu-setey-s-pomoshchyu-L2TP-i—L2TP-IPSec-na-Mikrotik Создателям — большое спасибо!