Настройка VPN на Mikrotik CHR
Виртуальный облачный роутер Mikrotik CHR поддерживает соединения по VPN-туннелю. В этом материале мы рассмотрим, как настроить сервер на платформе Cloud Hosted Router и коннект клиентских устройств с ним.
В качестве базы для экспериментов подойдет облачный сервер с одноядерным процессором, 512 Мбайт ОЗУ и 5 Гбайт SSD. Такую машину проще арендовать у провайдера timeweb.cloud. По необходимости ее легко модернизировать.
Настройку системы будем осуществлять на базе стабильной версии операционки RouterOS 6.49.6. Предполагается, что пользователь ранее самостоятельно инсталлировал программное обеспечение Miktrotik CHR и настроил его, а дело остается только за VPN-сервером. Приведенный в качестве примера алгоритм подойдет и для физических сетевых устройств с установленной RouterOS.
Общие параметры
Определим пул IP-адресов
Наша задача состоит в том, чтобы подключившийся к серверу пользователь видел виртуальную локальную сеть с определенным списком доступных IP-адресов. Это и есть пул, который будем использовать в рамках данной статьи. Создадим его командой:
/ip pool add name=<название> ranges=<IP-адреса>
Определим диапазон в 253 адреса из подсети 172.16.0.0/24 и зададим имя vpn-pool:
/ip pool add name=vpn-pool ranges=172.16.0.1-172.16.0.253
В этой команде намеренно пропущен адрес 172.16.0.254. Его займет непосредственно Mikrotik при настройке VPN-сервера. То же происходит и при установке физических маршрутизаторов – само устройство обязательно «подвешивается» на один из используемых IP.
Создадим PPP-профиль
Пул клиентских IP и адрес создаваемого VPN на Mikrotik можно связать PPP-профилем. Чтобы сделать «привязку», используем команду:
/ppp profile add name=vpn-profile local-address=172.16.0.254 remote-address=vpn-pool use-mpls=no use-compression=yes use-encryption=yes only-one=no
Расшифруем параметры, чтобы было проще пользоваться ими при настройке другой конфигурации, с иными вводными. Во введенной команде:
name=vpn-profile
– любое имя профиля на латинице;local-address=172.16.0.254
– принудительная привязка IP к VPN;remote-address=vpn-pool
– постановка задачи применять созданный пул IP-подключения пользователей;use-mpls=no
– запретить применять Multiprotocol Label Switching;use-compression=yes
– активировать сжатие передаваемой информации;use-encryption=yes
– использовать шифрование;only-one=no
– параметр разрешает коннект нескольких точек одновременно.
Настроим NAT
Очередной шаг – настройка локальной сети между клиентом VPN и сервером на Mikrotik. Но для этого предварительно требуется задать разрешение при помощи сетевого механизма NAT (Network Address Translation). Выполним команду:
/ip firewall nat add chain=srcnat out-interface=ether1 action=masquerade
Создадим пользователя
Внесем в систему нового пользователя:
/ppp secret add name=<логин> password=<пароль> service=<тип сервера>
Здесь service
– это перечень сервисов, доступных для коннекта. В нашем случае используем значение any, чтобы открыть сразу 4 протокола VPN. Имя аккаунта vpn-user
с простым паролем vpn-pass
.
/ppp secret add name=vpn-user password=vpn-pass service=any
Мы создали пользователя. Теперь остается создать и установить защитные сертификаты. Они будут обеспечивать шифрование передаваемой через туннель информации.
Сгенерируем сертификаты хоста
При желании запустить на Mikrotik OpenVPN и SSTP, на сервере настраивают пару сертификатов: Certification Authority (CA, Центр сертификации) и Server (серверный). Центр считается неоспоримым, используемым для подтверждения самоподписанных сертификатов, которые создаются для клиентских машин и хоста.
Сначала установим Common Name на сертификационный центр. Никаких особых ограничений нет, допускается выбирать любое имя. В данном материале параметр ca-crl-host сделаем равным ранее установленному IP или названию домена:
/certificate add name=ca-template common-name="MikroTik" days-valid=3650 key-usage=crl-sign,key-cert-sign /certificate sign ca-template ca-crl-host=185.X.X.83 name="MikroTik"
Следом сгенерируем сертификат, размещаемый на хосте, и подпишем его CA-сертификатом. Важно, чтобы CN выглядел как фиксированный адрес IP (домен).
/certificate add name=server-template common-name=185.X.X.83 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server /certificate sign server-template ca="MikroTik" name="server@MikroTik"
Значение поля CN при настройке протокола SSTP в Mikrotik критично. Если администратор указал IP-адрес, пользователям придется использовать именно его. При указании домена будет выдаваться ошибка и наоборот.
Теперь выгрузим CA-сертификат, чтобы клиентская машина доверяла серверу:
/certificate export-certificate "MikroTik" export-passphrase=""
После экспорта пользователю надо через раздел Files скачать сертификат под названием cert_export_MikroTik.crt и сохранить на локальном диске в удобном месте. Он нам скоро понадобится.
Настройка VPN-сервера на Mikrotik
Рассмотрим все четыре протокола, которые мы разрешили ранее, выбором параметра any – PPTP, SSTP, L2TP/IPsec и OpenVPN, они все поддерживаются VPN на Mikrotik. В каждом из них есть определенные преимущества и недостатки, которые проявляются в конкретных условиях (это тема для другой статьи).
PPTP
Наиболее распространенный вариант для коннекта – протокол Point-to-Point Tunneling Protocol (PPTP). Технология нетребовательна к вычислительным ресурсам, алгоритм начинает работать «из коробки» с большинством применяемых операционных систем. Единственный недостаток заключается в серьезных дырах безопасности в режиме аутентификации клиента.
Запуск VPN Server на Mikrotik в режиме PPTP:
/interface pptp-server server set enabled=yes default-profile=vpn-profile authentication=mschap2
Подключение PPTP к VPN Server на Mikrotik с того же смартфона под управлением современной версии Android (8 или выше) не требует установки дополнительных программ. Оно доступно через функции самой ОС в разделе «Добавление VPN…». Но такой вариант подходит только для простых задач, где повышенная безопасность не требуется. В остальных случаях обратите внимание на другие протоколы.
SSTP
Компания Microsoft предлагает свой вариант – SSTP (Secure Socket Tunneling Protocol). Он встроен в операционные системы MS Windows начиная с версии Vista SP1. На других операционках будет необходимо инсталлировать дополнительные утилиты. Сервер в этом режиме запускается командой:
/interface sstp-server server set enabled=yes certificate=server@MikroTik default-profile=vpn-profile
Проверять работоспособность протокола желательно с настольного компьютера, где установлена Windows 10 (можно и более старые релизы). Сначала установим сертификационный центр, скачаем файл cert_export_MikroTik.crt и откроем его при помощи двойного клика мышкой.
Система откроет окно с предупреждением, что требуется установить сертификат. На этом этапе можно выбрать локальный компьютер как тип хранилища и поместить заранее скачанный файл в категорию «доверенных» корневых центров сертификации.
По завершении перейдем к созданию VPN-подключения. Откроем «Параметры – Сеть и Интернет – VPN» и добавим новое подключение VPN, где внесем ранее заданные логин и пароль аккаунта. Все, подключение установлено и готово к работе.
L2TP/IPsec
Протокол L2TP/IPsec схож по настройке с VPN на Mikrotik через PPTP Client. Его поддержка также встроена в большинство операционных систем. Основное преимущество – встроенное шифрование стандарта AES-256, не имеющего существенных уязвимостей. Это гарантирует высокую безопасность, конфиденциальность передаваемых данных.
Настроим наш сервер VPN командой:
/interface l2tp-server server set enabled=yes default-profile=vpn-profile authentication=mschap2 use-ipsec=required ipsec-secret=super-secret
Отметим здесь параметр ipsec-secret. Он обозначает общий ключ Ipsec, при настройке клиента надо установить L2TP/IPsec PSK или L2RP/IPsec с общим ключом. Иначе система не заработает.
OpenVPN
Завершим обзор технологией OpenVPN. Это система с открытым исходным кодом, работает с большой скоростью и безопасна, но для включения поддержки обязательна инсталляция дополнительных программ. Например, решения OpenVPN Connect. Еще понадобится установка сертификатов и конфигурационных файлов ovpn.
Организуем свой OpenVPN-сервер:
/interface ovpn-server server set auth=sha1 certificate="server@MikroTik" cipher=aes128,aes192,aes256 default-profile=vpn-profile enabled=yes require-client-certificate=yes
Следом создадим шаблон клиентского сертификата:
/certificate add name=client-template common-name="client" days-valid=3650 key-usage=tls-client
И сгенерируем на его основе сертификат под аккаунт vpn-user:
/certificate add name=client-vpn-user copy-from=client-template common-name="vpn-user@MikroTik" /certificate sign client-vpn-user ca="MikroTik" name="vpn-user@MikroTik"
Теперь экспортируем сертификат с ключом. Во время процедуры понадобится ввести пароль super-secret-pass, установленный командой экспорта:
/certificate export-certificate "vpn-user@MikroTik" export-passphrase="super-secret-pass"
По завершении через веб-интерфейс следует найти файлы:
cert_export_vpn-user@MikroTik.crt
cert_export_vpn-user@MikroTik.key
И скачать их на локальный диск, а после этого составить файл конфигурации ovpn:
client
dev tun
proto tcp-client
remote <ip-адрес> 1194
nobind
persist-key
persist-tun
cipher AES-128-CBC
auth SHA1
pull
verb 2
mute 3
auth-user-pass
# Добавляем эту строчку, чтобы отправлять все запросы через VPN
redirect-gateway def1
<ca>
# Вставляем содержимое cert_export_MikroTik.crt
</ca>
<cert>
# Вставляем содержимое cert_export_vpn-user@MikroTik.crt
</cert>
<key>
# Вставляем содержимое cert_export_vpn-user@MikroTik.key
</key>
Остается передать сохраненный ovpn файл на конечное устройство и загрузить его при помощи OpenVPN Connector. Вместо Private Key Password укажем пароль, заданный при экспорте. Все остальные параметры оставляем прежними.
Выводы
Мы завершили создание VPN Server и Client на Mikrotik CHR через все четыре доступных протокола. Теперь у пользователя есть возможность выбрать подходящий вариант для запуска собственного виртуального маршрутизатора.