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

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

 

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

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

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

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

Заходим в раздел PPP, открываем вкладку Profiles, здесь необходимо создать профиль, который будет применяться к VPN-подключениям. Отметьте опции Change TCP MSS, Use Compression, Use Encryption. По-умолчанию, будет использоваться шифрования MPPE 128 bit.
4.jpg
5.jpg
Переходим на вкладку Interface. Нажимаем L2TP Server, в появившемся окошке ставим галочку Enabled и выбираем профиль по-умолчанию, который мы создали ранее. Тип аутентификации, по желанию – оставить как есть, либо выбрать только MS-CHAP v2. Опцию IPsec оставляем отключенной.
6.png
Переходим в Secrets, здесь необходимо создать нового пользователя VPN. В качестве Service указываем L2TP, тут же можно указать используемый профиль.
7.png
Локальный адрес указываем 10.50.0.10, удаленный – 10.50.0.11. При необходимости создаём нужно количество пользователей. Для каждого пользователя локальный IP будет одинаковым, удалённый IP увеличиваем на единицу (т.е. 10.50.0.12, 10.50.0.13 и т.д.). Можно конечно прибегнуть к использованию пула адресов, но со статикой вам проще будет писать маршруты.

 

8.png

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

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

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

11.png
12.png
Для работы VPN необходимо открыть UDP-порт 1701 (chain input, protocol 17(udp), dst-port 1701, accept). После чего необходимо поднять приоритет правила, перемещаем его выше.
13.png
14.png
Далее заходим в NAT и добавляем маскарадинг для VPN (chain srcnat, out interface all ppp, action masquerade), это необходимо делать для того, чтобы компьютеры за роутером видели друг друга.
15.png
16.png
17.png

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

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

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

20.png
Открываем раздел интерфейсов и добавляем новый L2TP Client, указываем IP-адрес сервера и свои учётные данные, по-умолчанию выбираем профиль с шифрованием и снимаем галочку с дефолтного маршрута.
21.png
22.png
23.png
Применяем, если всё сделано правильно – соединение должно быть установлено.
24.png
Пробуем пинговать 192.168.1.1… и он, конечно же, отвечать не будет. Добавляем новый статический маршрут – удаленная подсеть 192.168.1.0/24, в качестве шлюза IP сервера в виртуальной сети, Pref. Source – наш IP в виртуальной сети. Т.е. на клиенте все адреса проставляются наоборот.
25.png
26.png
Пробуем повторно выполнить ping 192.168.1.1 – есть.
27.png
Но компьютеры за роутером ещё не видят удалённую сеть.
28.png
Создаем для них маскарадинг, аналогичный тому, что создан на сервере. В качестве выходного интерфейса указываем наше VPN-подключение.
29.png
30.png
Ping пошел, значит, всё работает. Поздравляем, ваш туннель работает, а компьютеры видят друг друга.
31.png
В нашем примере, как показало тестирование, удалось получить канал с пропускной способностью около 50 Мбит/сек.
32.png
На этом базовая настройка завершена. При добавлении новых пользователей, необходимо добавлять соответствующие маршруты на устройствах, где вы хотите, чтобы устройства за роутером видели друг друга. При пробросе маршрута между 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, если этого не сделать, пакеты шифроваться не будут. Необходима перезагрузка маршрутизатора.
33.png
Заходим в раздел IP – IPSec, открываем вкладку Proposals. Здесь нам необходимо указать тип шифрования и аутентификации. Алгоритм аутентификации выбираем sha1, для шифрования оптимальным будет использовать алгоритм AES 128-бит. При необходимости, можно также указать 3DES (Triple DES), он является алгоритмом по-умолчанию для L2TP/IPSec в Windows 7, в то время, как для мобильных ОС целесообразным может быть применение AES 256-бит.
Заходим в раздел IP – IPSec, открываем вкладку Proposals. Здесь нам необходимо указать тип шифрования и аутентификации. Алгоритм аутентификации выбираем sha1, для шифрования оптимальным будет использовать алгоритм AES 128-бит. При необходимости, можно также указать 3DES (Triple DES), он является алгоритмом по-умолчанию для L2TP/IPSec в Windows 7, в то время, как для мобильных ОС целесообразным может быть применение AES 256-бит.
34.png
Во вкладке Peers добавляем новый пир с адресом 0.0.0.0/0, что разрешит маршрутизатору принимать все подключения. По-умолчанию, используется 500-й порт. Метод аутентификации выбираем pre shared key, чуть ниже указываем желаемый пароль. Exchange Mode следует указать main l2tp. Отмечаем опции Send Initial Contact и NAT Traversal. Последнюю опцию можно и не отмечать, если вы точно уверены, что клиент не находится за NAT провайдера. Generate policy выбираем port strict. Остальные опции вы можете посмотреть на скриншоте.
35.png
После добавления пира следует создать политику, для этого открываем вкладку 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 – адрес удаленного клиента в виртуальной сети.
36.png
37.png
На этом в принципе все, нужно также зайти в Firewall и добавить правила для используемых портов. Порт UDP 1701 используется для начальной инициализации и конфигурации. UDP 500 используется в L2TP/IPSec для инициализации обмена ключами. Протокол 50 – IPSec ESP, который используется для шифрования данных. Иногда необходимо также открывать порт UDP 4500 для обхода NAT.

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

В первую очередь, добавляем правила файрволла и отключаем маскарадинг для нашего VPN-подключения.
38.png
39.png
В разделе IP – IPSec необходимо настроить Proposal аналогично тому, как это сделано на сервере.
40.png
В качестве пира будет выступать 10.50.0.10, т.е. адрес сервера в виртуальной сети. Все остальные настройки должны соответствовать тем, которые вы указали при настройке сервера.
41.png
При создании политики, все адреса и подсети указываются обратно тому, как они указаны на сервере, т.е. у клиента всё наоборот.
42.png
43.png
Если вы всё сделали правильно, во вкладке Remote Peers у вас отобразится список пиров и используемые порты.
43.png
Теперь необходимо открыть вкладку Installed SAs, здесь следует обратить особое внимание на значение Current Bytes – если оно равно нулю, значит, пакеты не шифруются.
44.png
В файрволле вы можете посмотреть движения трафика.
45.png
46.png
Что же касается загрузки процессора, в минимальной нагрузке канала для RB2011UiAS-RM она поднялась до 9-13%.
47.png

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

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

48.jpg
Пришло время проверить производительность канала, ведь в случае с L2TP/IPSec происходит двойная инкапсуляция, что создаёт нагрузку на центральный процессор. В однопоточном тесте, производительность нашего канала между RB2011UiAS-RM и RB941-2n упала до 17 Мбит/сек. Если увеличить количество потоков до 10, можно добиться скорости 19 Мбит/сек.
49.png
50.png
Загрузка процессора обеих устройств при этом составляет 95%, что немало. Это та цена, которую приходится платить за безопасность передаваемых данных.
53.png
54.png
Для получения высокой производительности по L2TP/IPSec следует покупать оборудование более высокого уровня, либо собирать маршрутизатор на PC + RouterOS. Если вы выбираете вариант покупки производительного маршрутизатора, обратите внимание на наличие аппаратного блока шифрования, что существенно увеличит производительность.
100.jpg