Объединение офисов через vpn используя l2tp mikrotik. L2TP Mikrotik: настройка. Оборудование Mikrotik

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

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

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

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

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

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

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

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

В качестве интернет-провайдера выступает маршрутизатор , который выдает устройствам 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.


Переходим в 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). После чего необходимо поднять приоритет правила, перемещаем его выше.






Прописываем маршрут в удалённую подсеть. Конечная подсеть 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 Мбит/сек.





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

Иногда мне кажется, что создатели Mikrotik намеренно лишают себя прибыли, не создавая однозначных пошаговых руководств по настройке своих детищ. Почти 100% потребителей этих роутеров пытаются настроить VPN, использовать два или более WAN одновременно или в качестве резервных. Именно это ищут по всей сети (и часто вне рунета) счастливые владельцы этих замечательных устройств. Представьте, на сколько бы увеличилась армия владельцев, если бы для настройки этих функций было два-три визарда в веб-интерфейсе. А сейчас.. сейчас именно благодаря сложности настройки (и, соотв., меньшему количеству желающих купить) мы имеем недорогое, малокапризное для несложных задач устройство, которое надо заставить работать 24х7х365. Например, в качестве VPN-сервера. Поехали!

Протокол L2TP обеспечивает канал передачи данных, туннель.

IPSec обеспечивает защиту данных от просмотра.

Настраивать мы будем тоже по частям - сначала туннель, потом - защита данных.

Примечание 1: я не очень люблю текстовые команды с кучей ключей при настройке вещей, которые достаточно много где описаны, но описаны каждый раз с незаметными опечатками, где-то что-то не скопировалось при написании (или при копировании с другого сайта, что случается чаще всего) или просто съелось текстовым редактором CMS сайта. Настройка VPN как раз такой случай. Поэтому я специально каждый шаг прописал для GUI Mikrotik - Winbox, тем более что не так уж тут и много всего надо сделать.

Примечание 2: к моему огромному сожалению, нет возможности оставлять комментарии. Поэтому, особенно если вы видите явные ошибки, неправильное толкование терминов и др. - прошу вас писать по почте [email protected] Обещаю все разумные доводы отражать в статье(-ях) и указывать авторов (по вашему желанию).

Примечание 3: до версии 6.18 в прошивке есть баг, из-за которого всегда применяется default policy template, поэтому обновите прошивку до последней стабильной. Не обновляйте прошивку до самой последней, но нестабильной версии, если вы настраиваете VPN.

Итак, имеем роутер Mikrotik с прошивкой 6.30 (июль 2015) c LAN 192.168.88.0/24 (сеть по-умолчанию). WAN не важен, например, 1.2.3.4.

Настройка туннелирования (L2TP)

1. IP - Pool / Определям диапазон адресов VPN-пользователей

Name: vpn_pool
Addresses: 192.168.112.1-192.168.112.10
Next pool: none

Лучше для клиентов vpn использовать отдельную адресацию. Так проще отделять одних от других. И вообще, бест практис.

2. PPP - Profiles / Профиль для нашего конкретного туннеля


General:
Name: l2tp_profile
Local address: vpn_pool (а можно указать 192.168.88.1 , сами смотрите, как вам больше нравится)
Remote address: vpn_pool
Change TCP MSS: yes

Protocols:
all to default:
Use MPLS: default
Use compression: default
Use Encription: default

Limits:
Only one: default

3. PPP - Secrets / Готовим пользователя VPN


Name: vpn_user1
Password: bla-bla-bla
Service: l2tp
Profile: l2tp_profile

4. PPP - Interface - клик на L2TP Server / Включаем сервер L2TP


Enabled - yes
MTU / MRU - 1450
Keepalive Timeout - 30
Default profile - l2tp_profile
Authentication - mschap2
Use IPSec - yes
IPSec Secret: tumba-yumba-setebryaki (это не пароль пользователя, а предварительный ключ, который надо будет указывать на клиентах в дополнение к логину/паролю)

Настройка шифрования данных в "туннеле" (IPSec)

На предыдущем этапе мы создали туннель для передачи данных и включили IPSec. В этом разделе мы настроим параметры IPSec.

5. IP - IPSec - Groups

Т.к. велика вероятность появления ошибки соединения с сервером из-за дефолтной группы , просто удалим и тут же создадим ее. Например, с именем "policy_group1". Также можно просто удалить эту группу, но через веб-интерфейс будут показываться ошибки.

6. IP - IPSec - Peers

Address: 0.0.0.0/0
Port: 500
Auth method: pre shared key
Passive: yes (set)
Secret: tumba-yumba-setebryaki (это не пароль пользователя!)

Policy template group: policy_group1
Exchange mode: main l2tp
Send Initial Contact: yes (set)
NAT Traversal: yes (set)
My id: auto
Proposal check: obey
Hash algorithm: sha1
Encryption Algorithm: 3des aes-128 aes-256

DH Group: modp 1024
Generate policy: port override
Lifitime: 1d 00:00:00
DPD Interval: 120
DPD Maximum failures: 5

7. IP - IPSec - Proposals / "Предложения".

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

Name: default
Auth algorithms: sha1
Enrc. algorithms: 3des, aes-256 cbc, aes-256 ctr
Life time: 00:30:00
PFS Group: mod 1024

Вы наверняка заметили, что пункты 6 и 7 похожи, а если еще добавить, что один и тот же Secret мы добавляли и пункте 4 и пункте 6, то возникает вопрос: почему одни и те же опции повторно настраиваются? Ответ у меня такой: чисто из практики вышло, что Windows 7 требовал одного, а iPhone - другого. Как так работает, не знаю. Но факт чисто из практики. Например, изменяю в Proposal PFS Group на 2048 - Windows нормально коннектиться, а iPhone перестает. Делаю наоборот (в proposal ставлю 1024, а в ip-ipsec-peers ставлю 2048) - iPhone коннектиться, а Windows - нет:) Т.е. при подключении разных клиентов используются разные части конфигов. Бред? Может быть, это следствие постепенных изменений в конфигурацию VPN сервера, не могу сказать, т.к. может иметь место даже влияние старых прошивок, конфигов и др. Я не исключаю, что что-то здесь избыточно, но что именно, не знаю.

Firewall

Давайте уж к консоли, что-ли для разнообразия:

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

Это правило надо поднять выше финальных запрещающих правил, если у вас они есть. У вас же они есть??? Если нет, прошу сюда .

Вот теперь с сервером все.

Подключение удаленного клиента

Пробуем подключить Windows 7:

Панель управленияСеть и ИнтернетЦентр управления сетями и общим доступом:
Настройка нового подключения или сети
Подключение к рабочему месту
Создать новое подключение
Использовать мое подключение к интернету (VPN)
Интернет-адрес: ip или имя роутера в сети
Пользователь и пароль из PPP->Secrets. В нашем случае это vpn_user1 и его пароль.

Пытаемся подключиться.

Если не выходит, или просто надо настроить созданное подключение:

Вкладка Безопасность:

Тип VPN: L2TP IPSec VPN

Дополнительные параметры: для проверки подлинности использовать предварительный ключ. В нашем случае это "tumba-yumba-setebryaki" (IP - IPSec - Peers):

Здесь же, в группе "Проверка подлинности", оставляем только CHAP v2:

Жмем ОК и пытаемся подключиться. Должно получиться. Если нет, загляните на

Иногда мне кажется, что создатели Mikrotik намеренно лишают себя прибыли, не создавая однозначных пошаговых руководств по настройке своих детищ. Почти 100% потребителей этих роутеров пытаются настроить VPN, использовать два или более WAN одновременно или в качестве резервных. Именно это ищут по всей сети (и часто вне рунета) счастливые владельцы этих замечательных устройств. Представьте, на сколько бы увеличилась армия владельцев, если бы для настройки этих функций было два-три визарда в веб-интерфейсе. А сейчас.. сейчас именно благодаря сложности настройки (и, соотв., меньшему количеству желающих купить) мы имеем недорогое, малокапризное для несложных задач устройство, которое надо заставить работать 24х7х365. Например, в качестве VPN-сервера. Поехали!

Протокол L2TP обеспечивает канал передачи данных, туннель.

IPSec обеспечивает защиту данных от просмотра.

Настраивать мы будем тоже по частям - сначала туннель, потом - защита данных.

Примечание 1: я не очень люблю текстовые команды с кучей ключей при настройке вещей, которые достаточно много где описаны, но описаны каждый раз с незаметными опечатками, где-то что-то не скопировалось при написании (или при копировании с другого сайта, что случается чаще всего) или просто съелось текстовым редактором CMS сайта. Настройка VPN как раз такой случай. Поэтому я специально каждый шаг прописал для GUI Mikrotik - Winbox, тем более что не так уж тут и много всего надо сделать.

Примечание 2: до версии 6.18 в прошивке есть баг, из-за которого всегда применяется default policy template, поэтому обновите прошивку до последней стабильной. Не обновляйте прошивку до самой последней, но нестабильной версии, если вы настраиваете VPN.

Итак, имеем роутер Mikrotik с прошивкой 6.30 (июль 2015) c LAN 192.168.88.0/24 (сеть по-умолчанию). WAN не важен, например, 1.2.3.4.

Настройка туннелирования (L2TP)

1. IP - Pool / Определям диапазон адресов VPN-пользователей


Name: vpn_pool
Addresses: 192.168.112.1-192.168.112.10
Next pool: none

Лучше для клиентов vpn использовать отдельную адресацию. Так проще отделять одних от других. И вообще, бест практис.

2. PPP - Profiles / Профиль для нашего конкретного туннеля


General:
Name: l2tp_profile
Local address: vpn_pool (а можно указать 192.168.88.1 , сами смотрите, как вам больше нравится)
Remote address: vpn_pool
Change TCP MSS: yes

Protocols:
all to default:
Use MPLS: default
Use compression: default
Use Encription: default

Limits:
Only one: default

3. PPP - Secrets / Готовим пользователя VPN


Name: vpn_user1
Password: bla-bla-bla
Service: l2tp
Profile: l2tp_profile

4. PPP - Interface - клик на L2TP Server / Включаем сервер L2TP


Enabled - yes
MTU / MRU - 1450
Keepalive Timeout - 30
Default profile - l2tp_profile
Authentication - mschap2
Use IPSec - yes
IPSec Secret: tumba-yumba-setebryaki (это не пароль пользователя, а предварительный ключ, который надо будет указывать на клиентах в дополнение к логину/паролю)

Настройка шифрования данных в "туннеле" (IPSec)

На предыдущем этапе мы создали туннель для передачи данных и включили IPSec. В этом разделе мы настроим параметры IPSec.

5. IP - IPSec - Groups

Т.к. велика вероятность появления , просто удалим и тут же создадим ее. Например, с именем "policy_group1". Также можно просто удалить эту группу, но через веб-интерфейс будут показываться ошибки.

6. IP - IPSec - Peers

Address: 0.0.0.0/0
Port: 500
Auth method: pre shared key
Passive: yes (set)
Secret: tumba-yumba-setebryaki (это не пароль пользователя!)

Policy template group: policy_group1
Exchange mode: main l2tp
Send Initial Contact: yes (set)
NAT Traversal: yes (set)
My id: auto
Proposal check: obey
Hash algorithm: sha1
Encryption Algorithm: 3des aes-128 aes-256

DH Group: modp 1024
Generate policy: port override
Lifitime: 1d 00:00:00
DPD Interval: 120
DPD Maximum failures: 5

7. IP - IPSec - Proposals / "Предложения".

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

Name: default
Auth algorithms: sha1
Enrc. algorithms: 3des, aes-256 cbc, aes-256 ctr
Life time: 00:30:00
PFS Group: mod 1024

Вы наверняка заметили, что пункты 6 и 7 похожи, а если еще добавить, что один и тот же Secret мы добавляли и пункте 4 и пункте 6, то возникает вопрос: почему одни и те же опции повторно настраиваются? Ответ у меня такой: чисто из практики вышло, что Windows 7 требовал одного, а iPhone - другого. Как так работает, не знаю. Но факт чисто из практики. Например, изменяю в Proposal PFS Group на 2048 - Windows нормально коннектиться, а iPhone перестает. Делаю наоборот (в proposal ставлю 1024, а в ip-ipsec-peers ставлю 2048) - iPhone коннектиться, а Windows - нет:) Т.е. при подключении разных клиентов используются разные части конфигов. Бред? Может быть, это следствие постепенных изменений в конфигурацию VPN сервера, не могу сказать, т.к. может иметь место даже влияние старых прошивок, конфигов и др. Я не исключаю, что что-то здесь избыточно, но что именно, не знаю.

Firewall

Давайте уж к консоли, что-ли для разнообразия:

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

Если у вас по-умолчанию политика forward установлена в drop (последнее правило для forward "chain=forward action=drop"), вам может быть необходимым разрешить forward с ip-адресов vpn_pool в локальную сеть:

add chain=forward action=accept src-address=192.168.112.0/24 in-interface=!ether1 out-interface=bridge-local comment="allow vpn to lan" log=no log-prefix=""

Вот теперь с сервером все.

Подключение удаленного клиента

Пробуем подключить Windows 7:

Панель управленияСеть и ИнтернетЦентр управления сетями и общим доступом:
Настройка нового подключения или сети
Подключение к рабочему месту
Создать новое подключение
Использовать мое подключение к интернету (VPN)
Интернет-адрес: ip или имя роутера в сети
Пользователь и пароль из PPP->Secrets. В нашем случае это vpn_user1 и его пароль.

Пытаемся подключиться.

Если не выходит, или просто надо настроить созданное подключение:

Вкладка Безопасность:

Тип VPN: L2TP IPSec VPN

Дополнительные параметры: для проверки подлинности использовать предварительный ключ. В нашем случае это "tumba-yumba-setebryaki" (IP - IPSec - Peers):

Здесь же, в группе "Проверка подлинности", оставляем только CHAP v2:

Жмем ОК и пытаемся подключиться. Должно получиться. Если нет, загляните на страницу ошибок при настройке VPN .

Update 1: часто люди интересуются, как несколько (больше одного) клиентов из одной локальной сети (за nat) могут подключаться к одному удаленному vpn-серверу микротик. Не знаю, как в L2TP/IPSec связке это обеспечить. Можно назвать это багом реализации. Я не нашел простого объяснения и решения проблемы.

18.07.2016 19:29 Птррр

09.08.2016 10:00 Mapc

19.08.2016 17:35 Vertall

10.09.2016 23:29 Nikpo

02.10.2016 15:28 Anatoly

18.10.2016 12:39 Daimos

19.10.2016 01:02 Бумер

19.10.2016 01:05 Бумер

19.10.2016 01:16 Бумер

19.10.2016 09:34 Daimos

Ниже преведён пример настройки L2TP/IPsec туннеля между двумя роутерами Mikrotik.
Настройки первого роутера:
WAN интерфейс - ether1
WAN IP - 10.0.0.101/24
LAN интерфейс - bridge-local
LAN IP - 192.168.10.0/24

Настройки второго роутера:
WAN интерфейс - ether1
WAN IP - 10.0.0.102/24
LAN интерфейс - bridge-local
LAN IP - 192.168.20.0/24

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

Скрипт для IPsec-клиентов с динамическим IP-адресом

Настройки L2TP-сервера на первом роутере

1. Создаем пул адресов для транзитной сети (здесь 192.168.254.0/26)

/ip pool
add name=l2tp-pool ranges=192.168.254.2-192.168.254.62

2. Создаем PPP-профиль для подключения, шифрование включать не нужно, т.к. будет использоваться IPsec

/ppp profile
add change-tcp-mss=yes local-address=192.168.254.1 name=l2tp remote-address=l2tp-pool

3. Заводим PPP-аккаунт для клиента

/ppp secret
add name=client1 password=secret1 profile=l2tp service=l2tp

3. Настраиваем и включаем L2TP-сервер

/interface l2tp-server server
set authentication=mschap2 default-profile=l2tp enabled=yes keepalive-timeout=15 max-mru=1418 max-mtu=1418

Настройки L2TP-клиента на втором роутере

Настраиваем и включаем L2TP-клиент

/interface l2tp-client
add allow=mschap2 connect-to=10.0.0.102 disabled=no max-mru=1418 max-mtu=1418 name=l2tp-to-m1 user=client1 password=secret1 profile=default

ПРИМЕЧАНИЕ: 1. Значение MTU 1418 - максимальное значение, при котором не будет фрагментации с использованием IPsec с алгоритмами SHA1 для подписи и AES-128 для шифрования. При использовании других алгоритмов значение MTU будет другим. Если используется механизм обхода NAT IPsec, следует понизить MTU на 28.
2. На этом этапе следует проверить работоспособность L2TP-подключения.

Настройки IPsec-сервера на первом роутере

1. Настройка IPsec-пира, IPsec политика будет создаваться автоматически, при подключении клиента (с динамическим созданием политики, роутер может принимать подключения от множества VPN-клиентов без донастройки. В данном случае VPN-канал поднимается между двумя роутерами и можно настроить статическую политику, как на втором роутере). Пароль, который будет использоваться при аутентификации и генерации секрета для шифрования соединения, задается в параметре secret

/ip ipsec peer
add address=0.0.0.0/0 port=500 auth-method=pre-shared-key hash-algorithm=md5 enc-algorithm=aes-256 generate-policy=port-strict exchange-mode=main nat-traversal=no secret="ipsec-secret" send-initial-contact=no dpd-interval=15s dpd-maximum-failures=2

/ip ipsec proposal

ПРИМЕЧАНИЕ: 1. Если не указать значение address=0.0.0.0/0 для peer, оно будет подставлено автоматически, но работать IPsec не будет - баг RouterOS.
2. nat-traversal=yes для peer следует указывать, только если часть клиентов будет подключаться из-за NAT.

Настройки IPsec-клиента на втором роутере

1. Настройка IPsec-пира

/ip ipsec peer
add address=10.0.0.101/32 port=500 auth-method=pre-shared-key hash-algorithm=md5 enc-algorithm=aes-256 exchange-mode=main nat-traversal=no secret="ipsec-secret" send-initial-contact=yes dpd-interval=15s dpd-maximum-failures=2

2. Настройка политики IPsec

/ip ipsec policy
add action=encrypt ipsec-protocols=esp level=require proposal=default protocol=udp sa-src-address=10.0.0.102 src-address=10.0.0.102/32 src-port=any sa-dst-address=10.0.0.101 dst-address=10.0.0.101/32 dst-port=any tunnel=no

2. Настройка алгоритмов для шифрования и подписи соединения

/ip ipsec proposal
set defaul auth-algorithms=sha1 enc-algorithms=aes-128 name=default

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

Сервер должен принимать:
UDP:1701 - L2TP, но только по IPsec
UDP:500 - IPsec, установление соединения
UDP:4500 - IPsec, для обхода NAT
IP протокол 50 - IPsec ESP

Отмечаем ESP пакеты, L2TP будем принимать только в них

/ip firewall mangle
add action=mark-packet chain=input new-packet-mark=esp protocol=ipsec-esp

/ip firewall filter
add chain=input comment=L2TP dst-port=1701 packet-mark=esp protocol=udp src-address=10.0.0.102
add chain=input comment=IPSEC-NAT dst-port=4500 protocol=udp src-address=10.0.0.102
add chain=input comment=IPSEC dst-port=500 protocol=udp src-address=10.0.0.102
add chain=input comment=IPSEC protocol=ipsec-esp src-address=10.0.0.102

Клиенту достаточно принимать пакеты в состоянии established

Похожие публикации