Страница 1 из 1

Настройка OpenVPN Server на маршрутизаторе MikroTik

Добавлено: 09 янв 2020, 03:57
sandworm
Все действия производятся через Terminal в web-интерфейсе маршрутизатора. Для настройки удаленного доступа рекомендуется ознакомиться с темой.

Этап 1 - Настройка инфраструктуры открытого ключа (PKI)

Генерация корневого сертификата:
Код: Выделить всё
/certificate add name=ca country="" state="" locality="" organization="" unit="" common-name="ca" key-size=4096 days-valid=3650 key-usage=key-cert-sign,crl-sign
/certificate sign ca-template ca-crl-host=127.0.0.1 name="ca"
ca-crl-host — обязательный параметр, иначе список отзыва не будет создан.

Генерация сертификата сервера:
Код: Выделить всё
/certificate add name=server country="" state="" locality="" organization="" unit="" common-name="server" key-size=4096 days-valid=1095 key-usage=digital-signature,key-encipherment,tls-server
/certificate sign server ca=ca name="server"
key-usage — обязательный параметр.

Если сертификат не имеет флага T, то перед его использованием необходимо установить его как доверенный:
Код: Выделить всё
/certificate set сa trusted=yes
/certificate set server trusted=yes

Генерация клиентского сертификата-шаблона:
Код: Выделить всё
/certificate add name=client country="" state="" locality="" organization="" unit="" common-name="client" key-size=4096 days-valid=365 key-usage=tls-client

Генерация клиентских сертификатов:
Код: Выделить всё
/certificate add name=client1 copy-from="client" common-name="remote"
/certificate add name=client2 copy-from="client" common-name="public"
/certificate sign client1 ca="ca" name="remote"
/certificate sign client2 ca="ca" name="public"
name= client1 — имя cертификата последующих клиентов должно быть уникальным

Имена remote и public были выбраны для удобства. Вы можете обозначить сертификаты в вашем стиле. Подписывание сертификатов может занять некоторое время в зависимости от размера ключа конкретного сертификата. При значениях key-size=4096 и выше может потребоваться значительное время для подписания этого конкретного сертификата.

Этап 2 - Настройка OpenVPN сервера

Режим TUN

Создание IP-диапазона для клиентов:
Код: Выделить всё
/ip pool add name=ovpn-pool ranges=10.0.0.2-10.0.0.254
/ppp profile add name=ovpn local-address=10.0.0.1 remote-address=ovpn-pool

Активация авторизации по пользователю:
Код: Выделить всё
/ppp aaa set accounting=yes

Добавление учетной записи для VPN пользователя
Код: Выделить всё
/ppp secret add name=client1 password=xxxxxxxx profile=ovpn
/ppp secret add name=client2 password=xxxxxxxx profile=ovpn

Активация OpenVPN сервера:
Код: Выделить всё
/interface ovpn-server server set auth=sha1 certificate=server cipher=blowfish128,aes256 default-profile=ovpn enabled=yes mode=ip port=443 require-client-certificate=yes
Также, ознакомиться с настройками дополнительных атрибутов вы можете здесь.

Осталось настроить разрешающее правило фаервола, переходим в раздел IP — Firewall — Filter Rules. Нажать «Add new» для добавления нового правила. Далее установить следующие параметры:

Chain: input
Protocol: tcp
Dst. Port: 443
Action: accept
Нажать «ОК»


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

Через терминал команды будут выглядеть следующим образом:
Код: Выделить всё
/ip firewall filter add chain=input protocol=tcp dst-port=443 disabled=no action=accept

Просмотр правил:
Код: Выделить всё
/ip firewall filter print

Приоритет правила:
Код: Выделить всё
/ip firewall filter move 12 destination=3
12 — место занимаемое правилом

Этап 3 - Экспорт сертификатов клиентов

Выгрузка сертификата для VPN клиента:
Код: Выделить всё
/certificate export-certificate ca
/certificate export-certificate remote export-passphrase=xxxxxxxxxxxxxxxx
/certificate export-certificate public export-passphrase=xxxxxxxxxxxxxxxx
export-passphrase — обязательный параметр, настоятельно рекомендуется использовать для каждого клиента свою парольную фразу.

На этом генерация файлов сертификатов и ключей завершена. Сгенерированые файлы будут помещены во внутреннюю память устройства, откуда их нужно скачать. Например через веб-интерфейс вам потребуется перейти по адресу http://192.168.88.1/webfig/#Files. Далее вам потребуется выгрузить файлы конфигурации, сертификаты и ключи.

Этап 4 - Подготовка клиентов

Переходим на официальный сайт OpenVPN и скачиваем последнюю версию программы для соответствующей версии ОС. Произведите установку пакета OpenVPN. После нужно поместить ca.crt, remote.crt, remote.key в каталог /etc/openvpn, который будет создан автоматически в процессе установки пакета OpenVPN. Далее в том же каталоге подготовьте файлы конфигурации:

auth.cfg
Код: Выделить всё
client1
xxxxxxxx
client1 — имя пользователя OpenVPN, xxxxxxxx — пароль пользователя.

passphrase.cfg
Код: Выделить всё
xxxxxxxxxxxxxxxx
Ключ при генерации сертификатов. Его потребуется вводить при подключении. Указано для удобства. Настоятельно рекомендуется удалить после получения сертификатов.

remote.ovpn
Код: Выделить всё
# Specify that we are a client and that we
# will be pulling certain config file directives
# from the server.
client

# Use the same setting as you are using on
# the server.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun

# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one.  On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap

# Are we connecting to a TCP or
# UDP server?  Use the same setting as
# on the server.
proto tcp
;proto udp

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote example.com 443
;remote my-server-2 1194

# Choose a random host from the remote
# list for load-balancing.  Otherwise
# try hosts in the order specified.
;remote-random

# Keep trying indefinitely to resolve the
# host name of the OpenVPN server.  Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite

# Most clients don't need to bind to
# a specific local port number.
nobind

# Downgrade privileges after initialization (non-Windows only)
user nobody
group nobody

# Try to preserve some state across restarts.
persist-key
persist-tun

# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here.  See the man page
# if your proxy server requires
# authentication.
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]

# Wireless networks often produce a lot
# of duplicate packets.  Set this flag
# to silence duplicate packet warnings.
mute-replay-warnings

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
ca ca.crt
cert remote.crt
key remote.key

# Verify server certificate by checking that the
# certicate has the correct key usage set.
# This is an important precaution to protect against
# a potential attack discussed here:
#  http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the keyUsage set to
#   digitalSignature, keyEncipherment
# and the extendedKeyUsage to
#   serverAuth
# EasyRSA can do this for you.
remote-cert-tls server

# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1

# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
# Note that v2.4 client/server will automatically
# negotiate AES-256-GCM in TLS mode.
# See also the ncp-cipher option in the manpage
cipher AES-256-CBC
auth SHA1
auth-user-pass auth.cfg

# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
#comp-lzo

# Set log file verbosity.
verb 3

# Silence repeating messages
;mute 20
remote example.com 443 — вам потребуется изменить этот параметр согласно адресации вашего маршрутизатора MikroTik.

На этом настройка закончена. Выполните подключение в OpenVPN клиенте. Произойдет подключение и значок поменяет цвет на зеленый.

Ответ: Настройка OpenVPN Server на маршрутизаторе MikroTik

Добавлено: 09 янв 2020, 07:01
trickster
Доступ к терминалу надо описать. Из вебки не очень удобно.

Ответ: Настройка OpenVPN Server на маршрутизаторе MikroTik

Добавлено: 26 фев 2020, 04:20
sandworm
Статью немного дополнил. Исправил косяки.