У нас имеется:
Выбор провайдеров vps и разбор их тарифов выходит за рамки данной статьи. Скажу только, что для openvpn-сервера подойдет любой минимальный тариф за $5 в месяц и даже меньше. Например, самый дешевый дроплет DigitalOcean подходящий вариант.
В качестве дистрибутива Linux я буду использовать Debian 10 Buster.
Поддержка возможностей Openvpn у RouterOS не полная:
Это будем иметь в виду при настройке.
Сначала нужно сгенерировать центр сертификации (CA), сертификаты сервера и клиента. Для этого в Debian 10 используется набор скриптов Easy-RSA версии 3, которая довольно сильно отличается от предыдущей второй версии. Для желающих глубокого погружения в тему отсылаю к официальной документации. Здесь же приведу необходимые команды с кратким пояснением.
Устанавливаем Easy-RSA:
Создаем сертификат для сервера myserver:
Наконец можем установить openvpn:
Создаем файл конфигурации openvpn сервера:
Далее создаем файл конфигурации для клиента:
После этого запускаем openvpn-сервер:
Если все получилось, то команда покажет статус "active (running)":
Переносим сгенерированные ранее файлы сертификата клиента openvpn на устройство, меню [Files]:
Импортируем в хранилище сертификатов сначала сертификат, затем приватный ключ клиента, меню [System >> Certificates >> Import]:
Добавляем клиентское подключение к openvpn-серверу, меню [PPP >> Interface >> Add >> OVPN Client >> Dial Out]:
Проверяем доступность внутреннего ip-адреса openvpn сервера со стороны клиента, меню [Tools >> Ping]
Готово, vpn подключение настроено и работает.
- роутер mikrotik с подключением к интернет;
- vps/vds сервер на Linux с IP адресом N.N.N.N;
- openvpn-сервер на vps c IP адресом 192.168.188.1
- openvpn-подключение на mikrotik с IP адресом 192.168.188.200
Выбор провайдеров vps и разбор их тарифов выходит за рамки данной статьи. Скажу только, что для openvpn-сервера подойдет любой минимальный тариф за $5 в месяц и даже меньше. Например, самый дешевый дроплет DigitalOcean подходящий вариант.
В качестве дистрибутива Linux я буду использовать Debian 10 Buster.
Поддержка возможностей Openvpn у RouterOS не полная:
- Нет возможности работать по протоколу UDP, только по TCP.
- Не поддерживается сжатие трафика.
- Нет TLS аутентификации.
Сначала нужно сгенерировать центр сертификации (CA), сертификаты сервера и клиента. Для этого в Debian 10 используется набор скриптов Easy-RSA версии 3, которая довольно сильно отличается от предыдущей второй версии. Для желающих глубокого погружения в тему отсылаю к официальной документации. Здесь же приведу необходимые команды с кратким пояснением.
Устанавливаем Easy-RSA:
Подготавливаем CA:~$ sudo apt install easy-rsa
$ sudo make-cadir /etc/easy-rsa $ sudo -i # cd /etc/easy-rsa # ./easyrsa init-pki # ./easyrsa build-ca nopass # ./easyrsa gen-dh # ./easyrsa gen-crl
Создаем сертификат для сервера myserver:
Создаем сертификат для клиента c именем mikrotik:# ./easyrsa gen-req myserver nopass # ./easyrsa sign-req server myserver
# ./easyrsa gen-req mikrotik nopass # ./easyrsa sign-req client mikrotik
Наконец можем установить openvpn:
$ sudo apt install openvpn
Создаем файл конфигурации openvpn сервера:
и вставляем содержимое:$ sudo mcedit /etc/openvpn/server/myserver.conf
ca /etc/easy-rsa/pki/ca.crt cert /etc/easy-rsa/pki/issued/myserver.crt key /etc/easy-rsa/pki/private/myserver.key dh /etc/easy-rsa/pki/dh.pem crl-verify /etc/easy-rsa/pki/crl.pem proto tcp dev tun topology subnet server 192.168.188.0 255.255.255.0 client-config-dir /etc/openvpn/ccd
Далее создаем файл конфигурации для клиента:
с содержимым:$ sudo mkdir /etc/openvpn/ccd $ sudo mcedit /etc/openvpn/ccd/mikrotik
ifconfig-push 192.168.188.200 255.255.255.0
После этого запускаем openvpn-сервер:
$ sudo systemctl start openvpn-server@myserver
Если все получилось, то команда покажет статус "active (running)":
Если что то пошло не так, то внимательно изучаем журнал и пытаемся понять, где ошиблись:$ sudo systemctl status openvpn-server@myserver
Прописываем автоматический запуск нашего openvpn сервера при старте операционной системы$ journalctl -xe
Openvpn сервер подготовлен. Переходим к настройке роутера.$ sudo systemctl enable openvpn-server@myserver
Переносим сгенерированные ранее файлы сертификата клиента openvpn на устройство, меню [Files]:
- /etc/easy-rsa/pki/issued/mikrotik.crt
- /etc/easy-rsa/pki/private/mikrotik.key
Импортируем в хранилище сертификатов сначала сертификат, затем приватный ключ клиента, меню [System >> Certificates >> Import]:
Добавляем клиентское подключение к openvpn-серверу, меню [PPP >> Interface >> Add >> OVPN Client >> Dial Out]:
Проверяем доступность внутреннего ip-адреса openvpn сервера со стороны клиента, меню [Tools >> Ping]
Готово, vpn подключение настроено и работает.
5 комментариев:
Спасибо! Единственное толковое руководство, без воды и с описанием по делу.
отличный гайд. луччий!
если openvpn 2.5, то надо добавить в конфиг сервера "правильное" шифрование и следовательно на mikrotik выбрать aes-128
data-ciphers AES-128-GCM:AES-128-GCM:AES-128-CBC
cipher AES-128-CBC
ncp-disable
Спасибо за толковую доку, все получилось.
Если вы настраиваете это подключение, для того чтобы далее трафик проходил сквозь сервер и выходил в Интернет с внешнего адреса сервера, нужно будет
разрешить прохождение трафика
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-openvpn-forward.conf
sysctl --system
и настроить NAT
iptables -t nat -I POSTROUTING -s 192.168.188.0/24 -o ens3 -j MASQUERADE
(где ens3 - интерфейс сервера с внешним адресом)
Реально рабочий и толковый способ !
Отправить комментарий