Это не полноценный гайд по настройке, а некоторые важные моменты, которые мне встретились и решение которых было тем или иным образом найдено. Сознательно не рассматривается OpenVPN на базе Mikrotik — а именно L2TP-туннели. OpenVPN в микротике — штука специфическая, и требует установки дополнительного ПО на стороне клиента(что иногда — недоступно), а L2TP-VPN-подключение — настраивается штатными средствами Windows
Сама настройка — несложная, опишу ее в конце статьи кратко. А тут отмечу пару моментов, которые мне показалось важным отметить
Создание Secrets сразу с заданным IP под конкретных клиентов.
Задавайте им сразу конкретный IP-адрес в поле Remote address. Однозначная связь удаленного клиента и его VPN-IP-адреса позволит в дальнейшем чуть более четко понимать кто именно обращается на офисные ресурсы
Используйте IpSec.
В последних прошивках это делается буквально одной галкой при настройке — а надежность все же существенно выше
Настройте fail2ban для кулхацкеров.
Я отлавливаю неудачные подключения в цепочке Output по вхождению строки M=bad в поле Content на вкладке Advanced (посмотрите на внутренности пакета которым L2TP сервер сообщает о неудачном подключении). далее перебрасываю в цепочку, где уже работает стандартная ступенчатая блокировка, которую сто тыщ раз уже везде описали как настраивать (кратко: по очереди добавлять адрес в динамические листы, и если число попыток превысит порог — добавлять в полный банлист). Единственный нюанс, т.к. отлов злодеев идет в цепочке Output то работа идет не с src-address а с dst-address, ну надеюсь это и так понятно.
add action=jump chain=output comment="Jump to L2TP-Brutforce" content="M=bad" jump-target=L2TP_Brutforce log=yes log-prefix=L2TP_
Маршрутизация удаленных клиентов.
- Классовая маршрутизация: тут нужно понимать, что при подключении типовым VPN-клиентом в Windows маршрут все таки передается, но он передается — классовый, т.е. основанный на классе выделенной сети под VPN-клиенты. Например, если вы выделили клиентам сеть 192.168.200.200/27 то у клиента все таки БУДЕТ создан маршрут при подключении к VPN, причем на ВСЮ сеть 192.168.200.0/24 (т.е. в соответствии с ее классом). А зная это можно сделать ход конем и либо
- выделить в существующей сети часть адресов под VPN-клиентов (например из сети 192.168.200.00/24 откусить кусочек 192.168.200.200/27 под VPN клиентов, выдавать им эти адреса при подключении и они будут прекрасно ходить в вашу локальную сеть. Важный момент: не забыть при этом настроить режим proxy-arp на офисном Bridge, иначе работать не будет (т.к. несмотря на одинаковые адреса — физически хотсы будут в разных широковещательных доменах и без Proxy-arp — они просто не смогут узнать нужный MAC-адрес :))
- либо перевести сеть в офисе — классом повыше (172.16.0.0/16 или 10.0.0.0/8), и тогда маршрут будет еще более общий — сразу целиком на 172.16.0.0/16
- Постоянный маршрут на клиенте: прописать у клиента сразу готовый маршрут в нужную сеть, чтобы подключаясь к VPN он имел в постоянной таблице маршрутизации готовый маршрут в офисную сеть и не имел никаких проблем. Это хороший вариант, но при добавлении маршрута нужно помнит про то, что обязательно нужно указывать ID VPN-интерфейса, иначе маршрут будет работать на первого же переподключения. ID интерфейса можно посмотреть через ту же самую команду route print — там в начале есть табличка всех активных интерфейсов с их ID
Важный нюанс адресации сетей
Всегда следует выбирать адресацию в офисной сети — отличающуюся от типовых настроек 192.168.1.0/24 192.168.0.0/24 192.168.88.0/24 , иначе вы рискуете столкнуться с ситуацией, когда
- В офисе есть хост на который нужно подключаться удаленно (напрмиер сервер терминалов с адресом 192.168.1.10)
- Клиент подключается из домашней сети где также настроена сеть 192.168.1.0/24
- Получается конфликт, его компьютер будет иметь два маршрута до хоста, причем один из них — Direct connect, в итоге связь работать не будет.
Чтобы решить такую проблему можно сделать так
- Выделять VPN-клиентам «недефолтную» сеть, например 192.168.200.0/24
- Задавать им очень «узкие» статические маршруты на Windows-клиентах, например route add 192.168.1.10 mask 255.255.255.255 192.168.200.1 IF 55 -p (здесь не забываем что нужно указывать параметр IF (ID интерфейса) иначе после реконнекта маршрут работать больше не будет)
В такой ситуации, даже если у клиента будет дома сеть 192.168.1./24, то у него локальная связь нарушится только с одним хостом — 192.168.1.15. Ущерб есть — но он минимизирован.
Краткий лист настроек L2TP-Сервера на Mikrotik
Указываю только те параметры которые отличаются от default на прошивке 6.47.10 Long term с примером реальных значений
- IP-Pool-Add
- Name (vpn_pool)
- Addresses (192.168.200.100-192.168.200.254)
- PPP-Profiles-Add
- Name (l2tp-profile)
- Local Address (192.168.200.1)
- RemoteAddress (vpn_pool)
- Change TCP MSS (yes)
- PPP-Secrets-Add
- Name (User1)
- password (12345678)
- Service (l2tp-profile)
- Local Address (192.168.200.1)
- RemoteAddress (192.168.200.101)
- PPP-L2TP Server
- Enable (поставить галочку)
- Default profile (l2tp profile)
- Authentication (mschap2 only!!)
- Use IPsec (yes)
- IPSec password (12345678)
Краткий лист настроек VPN на стороне Windows-клиента (ОС: Windows 10)
- ПУСК — ПАРАМЕТРЫ — СЕТЬ и ИНТЕРНЕТ — VPN — Добавить VPN подключение
- Поставщик услуг (Встроенный)
- Имя подключения (Office-VPN)
- имя или адрес сервера (vpn.mycompany,ru)
- Имя пользователя (User1)
- Пароль (12345678)
- Запомнить мои данные для входа (ДА)
Далее из этого же раздела «ПУСК — ПАРАМЕТРЫ — СЕТЬ и ИНТЕРНЕТ — VPN» подключение можно сразу попасть в «Настройка параметров адаптера»(ссылка справа сверху), найти там созданный WAN Miniport адаптер и зайти в его свойства
- Свойства — Безопасность — Дополнительные параметры (указать ключ L2TP 12345678)
- Свойства — Безопасность — Hfphtibnm cktle.obt ghjnjrjks (MS-CHAP v2 only!!)
- Свойства — Сеть — IP Версии 4 — Свойства — Дополнительно — Убрать галку «Использовать основной шлюз в удаленной сети»