Однажды некоторые мобильные операторы начали блокировать порты к L2TP серверам, по этому я настроил более безопасный OpenVPN сервер на MikroTik.
Сначала создадим сертификаты, первый корневой сертификат c флагами KLAT, которым мы будем подписывать другие сертификаты:
System — Sertificates — Add New
Name: ca
Country: UA
State: Kyiv
Locality: Kyiv
Common Name: ca
Key Size: 4096
Days Valid: 3650 (10 years)
Key Usage: crl sign, key cert. sign
Нажмем OK, потом откроем его и нажмем Sign, укажем Certificate:ca, CA CRL Host: 127.0.0.1 и нажмем Start
Убедимся что этот сертификат имеет отметку «Trusted».
Создадим сертификат для OpenVPN сервера:
System — Sertificates — Add New
Name: ovpn_server
Country: UA
State: Kyiv
Locality: Kyiv
Common Name: ovpn_server
Key Size: 4096
Days Valid: 3650 (10 years)
Key Usage: digital signature, key encipherment, tls server
Нажмем OK, потом откроем его и нажмем Sign, укажем Certificate: ovpn_server, CA: ca и нажмем Start
Сертификат будет иметь флаги KI.
Создадим сертификат для клиента который будет подключаться к OpenVPN серверу (для каждого клиента свой сертификат):
System — Sertificates — Add New
Name: ovpn_client1
Country: UA
State: Kyiv
Locality: Kyiv
Common Name: ovpn_client1
Key Size: 4096
Days Valid: 3650 (10 years)
Key Usage: tls client
Нажмем OK, потом откроем его и нажмем Sign, укажем Certificate: ovpn_client1, CA: ca и нажмем Start
Сертификат будет иметь флаги KI.
Теперь нажмем правой кнопкой мыши по сертификату «ca» и выберем Export, Type: PEM, чтобы он появились в папке Files.
Также сделаем Export клиентского сертификата, но поставим на него пароль и тоже выберем Type: PEM.
Создадим IP pool для ovpn клиентов:
IP — Pool
Name: ovpn_pool
Addresses: 192.168.7.10-192.168.7.50
Создадим профиль для OVPN сервера (IP адрес OVPN сервера не должен входить в IP pool):
PPP — Profiles — Add New
Name: ovpn_server
Local Address: 192.168.7.1
Remote Address: ovpn_pool
Убедимся что включен accounting:
PPP — Secrets — PPP Authentication&Accounting — Accounting: +
Добавим каждому клиенту свой логин и пароль:
PPP — Secrets — Add New
Name: ixnfo.com
Password: …
Service: ovpn
Profile: ovpn_server
Активируем OVPN сервер:
PPP — Interface — OVPN Server
Enabled: +
Port: 1194 (можно изменить)
Default Profile: ovpn_server
Certificate: ovpn_server
Require Client Certificate: +
Redirect Gateway: disabled (можно указать def1, чтобы весь трафик клиента шел через OVPN сервер, например я так делал чтобы администрировать офисные устройства, которые в разных сетях и чтобы не прописывать к каждой сети маршруты на клиентском устройстве)
Если на сервере нужно добавить маршрут к сети клиента:
IP — Routes — Add New
Dst. Address: 192.168.89.0/24
Gateway: ovpn_client1
А на клиенте добавим маршрут к сети сервера, можно прямо в файле .ovpn:
route 192.168.24.0 255.255.255.0
В фаерволе откроем порт для OVPN сервера (правило должно находится вверху перед запрещающими правилами):
IP — Firewall — Filter Rules — Add New
Chain: input
Protocol: tcp
Dst. Port: 1194
Action: accept
Comment: ovpn
Теперь экспортируем готовый файл с конфигурацией и сертификатами:
PPP — Interface — OVPN Server — Export .ovpn
Server Public Address (IP or DNS): …
CA Certificate: …
Client Certificate: …
Client Certificate Key: …
Его потом откроем через приложение OVPN клиент на Windows openvpn.net/client/client-connect-vpn-for-windows/
Или отправим по почте на мобильный телефон, а потом прямо с почты откроем через приложение, например для iOS это apps.apple.com/ru/app/openvpn-connect-openvpn-app/id590379981
На старых версиях RouterOS 6 нет кнопки экспорта .ovpn, поэтому нужно обновить до RouterOS 7+, для этого нажать System — Packages, выбрать Channel: upgrade, потом еще раз обновить, но с Channel: stable.
У меня в сети стоял NAT сервер, а за ним офисный MikroTik с OVPN сервером и локальным серым IP адресом, поэтому я пробросил порт на NAT сервере:
iptables -t nat -A PREROUTING -d 172.16.5.5/32 -i ens3f1 -p tcp --dport 1194 -j DNAT --to-destination 10.0.0.2:1194
Смотрите также мои статьи:
Настройка VPN IPSec/L2TP сервера на Mikrotik
Настройка SOCKS на Mikrotik
Проброс портов в iptables на NAT сервере