10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
Overview
The OpenVPN security model is based on SSL, the industry standard for secure communications via the internet. OpenVPN implements OSI layer 2 or 3 secure network extensions using the SSL/TLS protocol.
Introduction
OpenVPN has been ported to various platforms, including Linux and Windows, and its configuration is likewise on each of these systems, so it makes it easier to support and maintain. OpenVPN can run over User Datagram Protocol (UDP) or Transmission Control Protocol (TCP) transports, multiplexing created SSL tunnels on a single TCP/UDP port. OpenVPN is one of the few VPN protocols that can make use of a proxy, which might be handy sometimes.
Limitations
Currently, unsupported OpenVPN features:
- LZO compression
- TLS authentication
- authentication without username/password
OpenVPN username is limited to 27 characters and the password to 233 characters.
OVPN Client
Property | Description |
---|---|
add-default-route (yes | no; Default: no) | Whether to add OVPN remote address as a default route. |
auth (md5 | sha1 | null | sha256 | sha512; Default: sha1) | Allowed authentication methods. |
certificate (string | none; Default: none) | Name of the client certificate |
cipher (null | aes128-cbc | aes128-gcm | aes192-cbc | aes192-gcm | aes256-cbc | aes256-gcm | blowfish128; Default: blowfish128) | Allowed ciphers. In order to use GCM type ciphers, the «auth» parameter must be set to «null», because GCM cipher is also responsible for «auth», if used. |
comment (string; Default: ) | Descriptive name of an item |
connect-to (IP; Default: ) | Remote address of the OVPN server. |
disabled (yes | no; Default: yes) | Whether the interface is disabled or not. By default it is disabled. |
mac-address (MAC; Default: ) | Mac address of OVPN interface. Will be automatically generated if not specified. |
max-mtu (integer; Default: 1500) | Maximum Transmission Unit. Max packet size that the OVPN interface will be able to send without packet fragmentation. |
mode (ip | ethernet; Default: ip) | Layer3 or layer2 tunnel mode (alternatively tun, tap) |
name (string; Default: ) | Descriptive name of the interface. |
password (string; Default: «») | Password used for authentication. |
port (integer; Default: 1194) | Port to connect to. |
profile (name; Default: default) | Specifies which PPP profile configuration will be used when establishing the tunnel. |
protocol (tcp | udp; Default: tcp) | indicates the protocol to use when connecting with the remote endpoint. |
verify-server-certificate (yes | no; Default: no) |
Checks the certificates CN or SAN against the «connect-to» parameter. The IP or hostname must be present in the server’s certificate. |
tls-version (any | only-1.2; Default: any) | Specifies which TLS versions to allow |
use-peer-dns (yes | no; Default: no) | Whether to add DNS servers provided by the OVPN server to IP/DNS configuration. |
route-nopull (yes | no; Default: no) |
Specifies whether to allow the OVPN server to add routes to the OVPN client instance routing table. |
user (string; Default: ) | User name used for authentication. |
Also, it is possible to import the OVPN client configuration from a .ovpn configuration file. Such a file usually is provided from the OVPN server side and already includes configuration so you need to worry only about a few parameters.
/interface/ovpn-client/import-ovpn-configuration ovpn-password=securepassword \ key-passphrase=certificatekeypassphrase ovpn-user=myuserid skip-cert-import=no
OVPN Server
An interface is created for each tunnel established to the given server. There are two types of interfaces in the OVPN server’s configuration
- Static interfaces are added administratively if there is a need to reference the particular interface name (in firewall rules or elsewhere) created for the particular user.
- Dynamic interfaces are added to this list automatically whenever a user is connected and its username does not match any existing static entry (or in case the entry is active already, as there can not be two separate tunnel interfaces referenced by the same name).
Dynamic interfaces appear when a user connects and disappear once the user disconnects, so it is impossible to reference the tunnel created for that use in router configuration (for example, in the firewall), so if you need a persistent rule for that user, create a static entry for him/her. Otherwise, it is safe to use dynamic configuration.
In both cases PPP users must be configured properly — static entries do not replace PPP configuration.
Properties
Property | Description |
---|---|
auth (md5 | sha1 | null | sha256 | sha512; Default: sha1,md5,sha256,sha512) | Authentication methods that the server will accept. |
certificate (name | none; Default: none) | Name of the certificate that the OVPN server will use. |
cipher (null | aes128-cbc | aes128-gcm | aes192-cbc | aes192-gcm | aes256-cbc | aes256-gcm | blowfish128; Default: aes128-cbc,blowfish128) | Allowed ciphers. |
default-profile (name; Default: default) | Default profile to use. |
enabled (yes | no; Default: no) | Defines whether the OVPN server is enabled or not. |
protocol (tcp | udp; Default: tcp) | indicates the protocol to use when connecting with the remote endpoint. |
keepalive-timeout (integer | disabled; Default: 60) | Defines the time period (in seconds) after which the router is starting to send keepalive packets every second. If no traffic and no keepalive responses have come for that period of time (i.e. 2 * keepalive-timeout), not responding client is proclaimed disconnected |
mac-address (MAC; Default: ) | Automatically generated MAC address of the server. |
max-mtu (integer; Default: 1500) | Maximum Transmission Unit. Max packet size that the OVPN interface will be able to send without packet fragmentation. |
mode (ip | ethernet; Default: ip) | Layer3 or layer2 tunnel mode (alternatively tun, tap) |
netmask (integer; Default: 24) | Subnet mask to be applied to the client. |
port (integer; Default: 1194) | Port to run the server on. |
require-client-certificate (yes | no; Default: no) | If set to yes, then the server checks whether the client’s certificate belongs to the same certificate chain. |
redirect-gateway (def1 | disabled | ipv6; Default: disabled) |
Specifies what kind of routes the OVPN client must add to the routing table.
|
enable-tun-ipv6 (yes | no; Default: no) |
Specifies if IPv6 IP tunneling mode should be possible with this OVPN server. |
ipv6-prefix-len (integer; Default: 64) |
Length of IPv6 prefix for IPv6 address which will be used when generating OVPN interface on the server side. |
tun-server-ipv6 (IPv6 prefix; Default: ::) |
IPv6 prefix address which will be used when generating the OVPN interface on the server side. |
Also, it is possible to prepare a .ovpn file for the OVPN client which can be easily imported on the end device.
/interface/ovpn-server/server/export-client-configuration ca-certificate=myCa.crt \ client-certificate=client1.crt client-cert-key=client1.key server-address=192.168.88.1
It is very important that the date on the router is within the range of the installed certificate’s date of expiration. To overcome any certificate verification problems, enable NTP date synchronization on both the server and the client.
Example
Setup Overview
Assume that Office public IP address is 2.2.2.2 and we want two remote OVPN clients to have access to 10.5.8.20 and 192.168.55.0/24 networks behind the office gateway.
Creating Certificates
All certificates can be created on the RouterOS server using the certificate manager. See example >>.
For the simplest setup, you need only an OVPN server certificate.
Server Config
The first step is to create an IP pool from which client addresses will be assigned and some users.
/ip pool add name=ovpn-pool range=192.168.77.2-192.168.77.254 /ppp profile add name=ovpn local-address=192.168.77.1 remote-address=ovpn-pool /ppp secret add name=client1 password=123 profile=ovpn add name=client2 password=234 profile=ovpn
Assume that the server certificate is already created and named «server»
/interface ovpn-server server set enabled=yes certificate=server
Client Config
Since RouterOS does not support route-push you need to add manually which networks you want to access over the tunnel.
/interface ovpn-client add name=ovpn-client1 connect-to=2.2.2.2 user=client1 password=123 disabled=no /ip route add dst-address=10.5.8.20 gateway=ovpn-client1 add dst-address=192.168.55.0/24 gateway=ovpn-client1 /ip firewall nat add chain=srcnat action=masquerade out-interface=ovpn-client1
OpenVPN является одной из самых популярных технологий для построения VPN-сетей и это вполне справедливо, данный продукт сочетает в себе безопасность с простой настройкой и мощными возможностями конфигурирования и управления сетью. В роутерах Mikrotik возможности OpenVPN существенно ограничены, что требует серьезно взвесить все за и против перед развертыванием, тем не менее в ряде случаев настройка OpenVPN выглядит оправданной и сегодня мы расскажем как это сделать.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Данная статья предназначена для RouterOS 6.x, для настройки OpenVPN сервера в RouterOS 7.x воспользуйтесь обновленным материалом.
Подготовка роутера
OpenVPN, как и любой другой использующий SSL-шифрование продукт, чувствителен к расхождению времени между клиентом и сервером. Поэтому в первую очередь правильно настроим время на Mikrotik. Прежде всего откроем System — Clock и установим правильное значение часового пояса, его автоматическое определение лучше отключить.
В консоли это можно сделать командой:
/system clock
set time-zone-autodetect=no time-zone-name=Europe/Moscow
В качестве параметра опции time-zone-name следует указать наименование вашего часового пояса согласно tz database.
Затем установим пакет NTP, для этого вам потребуется скачать с официального сайта архив Extra packages для вашей архитектуры и версии RouterOS, оттуда следует извлечь пакет ntp и поместить его на роутер, для установки достаточно перезагрузить устройство.
После чего перейдем в System — NTP Client, включим его и укажем адреса NTP-серверов, в нашем случае это сервера из пула ru.pool.ntp.org.
В командной строке это можно сделать так:
/system ntp client
set enabled=yes primary-ntp=185.209.85.222 secondary-ntp=37.139.41.250
Обратите внимание, что вместо доменных имен серверов следует указать их IP, имейте ввиду, что адреса pool.ntp.org указывают на случайно выбранные из пула сервера, которые меняются каждый час, поэтому полученные вами адреса могут отличаться от указанных нами.
Аналогичные манипуляции следует выполнить на всех роутерах-участниках VPN-сети. Для ПК и других устройств-клиентов также следует настроить синхронизацию времени.
Создание ключей и сертификатов
Некоторые руководства в сети предполагают создание ключей и сертификатов при помощи сторонних утилит, например, Easy-RSA, мы же будем использовать собственные средства Mikrotik. Перейдем в System — Certificate и создадим новый корневой сертификат нашего центра сертификации (CA).
Обязательные поля отмечены нами красным, это Name и Common Name — ca, размер ключа — Key Size — 2048, и срок действия — Days Valid — 3650 или 10 лет, для локального центра сертификации это вполне оправдано. Выделенные зеленым поля содержат информацию о владельце сертификата и к заполнению не обязательны, но их заполнение является правилом хорошего тона и при наличии большого количества сертификатов позволяет быстро понять, что это за сертификат и кому он принадлежит.
Затем перейдем на закладку Key Usage и укажем только crl sign и key cert. sign и нажмем кнопку Apply, теперь подпишем сертификат нажав Sign. В появившемся окне заполним поле CA CRL Host адресом локальной петли — 127.0.0.1, после чего нажимаем Start и дожидаемся окончания подписи сертификата.
Эти же действия в консоли:
/certificate
add name=ca country="RU" state="31" locality="BEL" organization="Interface LLC" unit="IT" common-name="ca" key-size=2048 days-valid=3650 key-usage=crl-sign,key-cert-sign
sign ca ca-crl-host=127.0.0.1
Следующим создадим сертификат и закрытый ключ сервера. Закладка General нового сертификата заполняется аналогично, только в полях Name и Common Name указываем ovpn-server (можете выбрать на собственное усмотрение). На вкладке Key Usage укажите digital-signature, key-encipherment и tls-server. Затем подпишем сертификат ключом нашего CA, для этого в поле CA выберите только что созданный нами сертификат ca.
Для выпуска сертификата в консоли выполните:
/certificate
add name=ovpn-server country="RU" state="31" locality="BEL" organization="Interface LLC" unit="IT" common-name="ovpn-server" key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server
sign ovpn-server ca="ca"
Теперь создадим клиентские сертификаты, в полях Name и Common Name на закладке General указываем имя сертификата, его следует давать осмысленно, чтобы всегда можно было определить какому клиенту принадлежит сертификат. Также следует подумать над сроком действия сертификата, если клиентом будет роутер в удаленном офисе, то можно также выпустить сертификат на 10 лет, а вот если клиентом будет ноутбук сотрудника на испытательном сроке, то лучше выдать его на срок испытательного срока. Выпустить новый сертификат не представляет проблемы, в то время как не отозванный вовремя сертификат может привести к несанкционированному доступу и утечке данных.
На вкладке Key Usage указываем только tls-client и также подписываем сертификат ключом нашего CA. Можно сразу выпустить все необходимые клиентские сертификаты, можно создавать из по мере необходимости.
Получение клиентского сертификата в консоли:
/certificate
add name=mikrotik country="RU" state="31" locality="BEL" organization="Interface LLC" unit="IT" common-name="mikrotik" key-size=2048 days-valid=365 key-usage=tls-client
sign mikrotik ca="ca"
Обратите внимание, в данном случае мы выпустили сертификат со сроком действия в 1 год: days-valid=365.
Если все сделано правильно, то у вас будут следующие сертификаты, обратите внимание, что корневой сертификат должен иметь флаги KLAT, остальные KI:
Для использования на клиента нам необходимо экспортировать закрытый ключ и сертификат клиента, а также корневой сертификат центра сертификации. Удобнее всего использовать для этого формат PKCS12, который содержит все необходимые компоненты в одном файле (сертификат, ключ и сертификат CA). Для этого щелкните на нужном сертификате правой кнопкой и выберите Export, в открывшемся окне укажите формат Type — PKCS12 и парольную фразу для экспорта (минимум 8 символов) в поле Export Passphrase. Без указания пароля закрытые ключи выгружены не будут, и вы не сможете использовать такой сертификат для клиента.
Либо используйте команды:
/certificate
export-certificate mikrotik type=pkcs12 export-passphrase=12345678
В данном случае мы использовали парольную фразу 12345678. Экспортированные сертификаты можно скачать в разделе Files.
Как видим, возможности RouterOS легко позволяют управлять сертификатами без привлечения дополнительных инструментов.
Настройка OpenVPN сервера
Начнем с создания пула адресов для выдачи OpenVPN клиентам, так как назначать адреса вручную во втором десятилетии 21 века — дурной тон. Для этого перейдем в IP — Pool и создадим новый пул: Name — ovpn_pool0 — произвольное имя пула, Addresses — 10.8.8.100-10.8.8.199 — диапазон адресов для выдачи клиентов, также можете выбрать по собственному усмотрению.
Эти же действия в консоли:
/ip pool
add name=ovpn_pool0 ranges=10.8.8.100-10.8.8.199
Теперь перейдем в PPP — Profiles и создадим новый профиль. Укажем его имя Name — ovpn, локальный и удаленный адреса: Local Address — 10.8.8.1, Remote Address — ovpn_pool0. На всякий случай напомним, что локальный адрес должен принадлежать той-же /24 сети, что и диапазон пула адресов.
Быстро создать профиль в терминале:
/ppp profile
add local-address=10.8.8.1 name=ovpn remote-address=ovpn_pool0
Затем перейдем в PPP — Secrets и убедимся, что включена аутентификация по пользователю. Для этого нажмем PPP Authentication&Accounting, где должен стоять флаг Accounting:
Хотя гораздо быстрее выполнить команду:
/ppp aaa
set accounting=yes
Здесь же создадим учетные записи для клиентов. Особенностью реализации OpenVPN в RouterOS 6 является обязательное использование аутентификации по имени и паролю. При создании учетной записи указываем ее имя — Name, рекомендуем дать ей то же самое имя, которое вы использовали при создании сертификата, чтобы избежать путаницы. Password — пароль, так как основная аутентификация производится по сертификату особых требований к нему нет. Service — какие службы могут использовать данную учетную запись — ограничиваем только OpenVPN выбрав ovpn, затем указываем созданный нами профиль Profile — ovpn.
В терминале для создания учетной записи выполните:
/ppp secret
add name=mikrotik password=123 profile=ovpn service=ovpn
В данном случае мы создали запись для пользователя mikrotik с паролем 123.
После создания пользователей перейдем в PPP — Interface и нажмем на кнопку OVPN Server, в открывшемся окне включим службу установив флаг Enabled, Default Profile — ovpn, в поле Certificate укажем созданный нами сертификат сервера. Для дополнительной безопасности включим Require Client Certificate, в этом случае сервер будет проверять сертификат клиента на принадлежность к цепочке сертификатов локального CA. Затем укажем параметры шифрования: Auth — безальтернативно sha1, Cipher — здесь есть возможность выбора, для роутеров с аппаратной поддержкой AES следует выбирать шифры только из этого семейства, однако чем сильнее шифр — тем больше он нагружает оборудование.
В терминале эти же действия выполняются командами:
/interface ovpn-server server
set auth=sha1 certificate=ovpn-server cipher=aes256 default-profile=ovpn enabled=yes require-client-certificate=yes
Также не забудьте разрешить входящие подключения к вашему OpenVPN серверу. Откроем IP — Firewall и добавим правило: Chain — input, Protocol — tcp, Dst. Port — 1194. Действие можно не указывать, так как по умолчанию применяется accept.
В терминале выполните:
/ip firewall filter
add action=accept chain=input dst-port=1194 protocol=tcp
Данное правило должно располагаться выше запрещающего в цепочке INPUT.
На этом настройка OpenVPN сервера на базе роутера Mikrotik закончена.
Настройка OpenVPN клиента на роутере Mikrotik
Прежде всего закачаем на устройство файл сертификатов в формате PKCS12, который мы экспортировали на сервере. Для этого перейдем в System — Certificate и воспользуемся кнопкой Import, в открывшемся окне укажем файл сертификата и парольную фразу, которую мы установили при экспорте.
В консоли выполните:
/certificate
import file-name=mikrotik.p12 passphrase=12345678
В результате у вас появятся два сертификата: сертификат клиента с закрытым ключом, о чем говорит флаг KT, и корневой сертификат удостоверяющего центра с флагом LAT (K — означает наличие ключа). Запомним наименование сертификатов, либо переименуем их.
Затем перейдем в PPP — Interface и создадим новый интерфейс типа OVPN Сlient. В поле Connect To указываем адрес или FQDN-имя вашего OpenVPN сервера, Port — 1194, Mode — ip. Ниже указываем учетные данные, созданные для этого пользователя на сервере в полях User и Password, еще ниже указываем параметры шифрования: Auth — sha1, Cipher — аналогично тому, что вы указали на сервере. В поле Certificate выберите сертификат клиента, флаг Verify Server Certificate следует снять.
В терминале следует выполнить:
/interface ovpn-client
add certificate=mikrotik.p12_0 cipher=aes256 connect-to=192.168.3.115 name=ovpn-out1 password=123 user=mikrotik
Если все было сделано правильно, то соединение будет установлено сразу как вы создадите интерфейс.
Чтобы клиенты сети за клиентом имели доступ в сеть за сервером и наоборот необходимо настроить маршрутизацию. Перейдем в IP — Routes и добавим новый маршрут. В поле Dst. Address укажем сеть за сервером, в нашем случае это 192.168.186.0/24, в поле Gateway укажем интерфейс нашего OpenVPN подключения — ovpn-out1.
Либо выполните команду:
/ip route
add distance=1 dst-address=192.168.186.0/24 gateway=ovpn-out1
Теперь перейдем на сервер и посмотрим каким образом выглядит подключение данного клиента. Как видим, был создан динамический интерфейс ovpn-mikrotik, настраивать маршрутизацию с таким интерфейсом нельзя, так как маршрут «сломается» при отключении клиента.
Поэтому создадим для этого клиента постоянный интерфейс. Перейдем в Interfaces и создадим новый интерфейс типа OVPN Server Binding. В настройках укажем имя, рекомендуется давать интерфейсам понятные имена, Name — ovpn-mikrotik, в поле User — укажем пользователя, подключение которого будет привязано к этому интерфейсу — mikrotik.
Это же можно сделать командой:
/interface ovpn-server
add name=ovpn-mikrotik user=mikrotik
После чего можно добавить на сервере маршрут к сети за клиентом, настройки здесь аналогичные, Dst. Address — сеть за клиентом, Gateway — интерфейс OpenVPN подключения. В нашем случае 192.168.111.0/24 — сеть за клиентом.
В терминале следует выполнить:
/ip route
add distance=1 dst-address=192.168.111.0/24 gateway=ovpn-mikrotik
После чего можем проверить связь. Узлы различных сетей должны видеть друг друга.
Настройка стандартного клиента OpenVPN на ПК
Немного изменим задачу, будем считать, что у нас есть ноутбук сотрудника с установленным клиентом OpenVPN, которому необходимо обеспечить доступ в корпоративную сеть через OpenVPN сервер на роутере Mikrotik. Будем считать, что OpenVPN установлен в C:\OpenVPN, а для хранения ключей используется директория C:\OpenVPN\keys.
Прежде всего разместим файл сертификатов в формате PKCS12 в директории для хранения ключей, а также создадим файл с учетными данными C:\OpenVPN\auth.cfg и разместим в нем в разных строках логин и пароль:
win10
123
Где win10 — имя пользователя, 123 — пароль которые мы задали для этой учетной записи на сервере.
Теперь создадим файл C:\OpenVPN\keypass.cfg в котором разместим парольную фразу для сертификата:
12345678
За основу конфигурационного файла мы примем стандартный шаблон client.ovpn, который расположен в C:\OpenVPN\sample-config. Его следует скопировать C:\OpenVPN\config, ниже будут приведены только ключевые опции, а также те, которые мы изменяем или добавляем.
Укажем, что у это клиент, тип туннеля — tun и протокол tcp:
client
dev tun
proto tcp
Адрес и порт сервера:
remote 192.168.3.115 1194
Убедимся в наличии опций:
persist-key
persist-tun
Затем заменим весь блок с указанием путей к ключам и сертификатам:
ca ca.crt
cert client.crt
key client.key
единственной строкой:
pkcs12 C:\\OpenVPN\\keys\\win10.p12
где укажем путь к нашему файлу сертификатов в формате PKCS12.
Ниже добавим две строки с указанием, где брать учетные данные для дополнительной аутентификации и парольную фразу:
auth-user-pass C:\\OpenVPN\\auth.cfg
askpass C:\\OpenVPN\\keypass.cfg
Проверим наличие опции:
remote-cert-tls server
и закомментируем:
#tls-auth ta.key 1
Сразу добавим маршрут к сети за сервером:
route 192.168.186.0 255.255.255.0 10.8.8.1
Укажем выбранный нами на сервере шифр:
cipher AES-256-CBC
и отключим сжатие:
#comp-lzo
Теперь можно пробовать подключаться. Если все сделано правильно, то клиент подключится к серверу и ему будут доступны ресурсы сети за сервером. Никаких дополнительных настроек на сервере производить не нужно.
Если за данным ПК у вас находится сеть и нужно обеспечить связь между сетями, то нужно выполнить настройки на сервере аналогичные предыдущей части: создать интерфейс для подключения клиента и добавить маршрут для сети за клиентом. На клиентском ПК не забудьте включить службу маршрутизации.
Данная инструкция также полностью подходит для ПК на Linux, вам потребуется только откорректировать пути в конфигурационном файле и раскомментировать в нем опции:
user nobody
group nogroup
Как видим, настройка OpenVPN сервера на роутерах Mikrotik достаточно проста, но требует учитывать особенности и ограничения реализации этой технологии в RouterOS.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Бывают случаи, когда необходимо настроить удалённый доступ на mikrotik или даже на несколько.
Особенно это актуально, если вы обслуживаете несколько объектов и нет возможности физически постоянно присутствовать возле оборудования.
В этом статье мы разберём, как настроить OpenVPN сервер на mikrotik, а также клиенты на mikrotik и компьютере под управлением Windows.
Для работы нам понадобится Белый IP адрес (он и будет адресом сервера в наших настройках) для доступа к серверу из интернета и сертификаты безопасности.
Краткий план данной статьи:
- Создание сертификатов и ключей OpenVPN
- Создание сервера OpenVPN на Mikrotik
- Создание клиента OpenVPN на ПК
- Создание клиента OpenVPN на Mikrotik
1) Скачаем программу OpenVPN с официального сайта.
2) Устанавливаем, выбрав все галочки.
EasyRSA Certificate Management Scripts нам обязательно понадобится для генерации ключей и сертификатов.
3) Указываем путь. В дальнейшем он нам понадобится. В нашем случае используем стандартный C:\Program Files\OpenVPN
4) После установки заходим в C:\Program files\OpenVPN\easy-rsa
Открываем vars.bat (если его нет, то vars.bat.sample) блокнотом или NotePad++ и редактируем его.
set KEY_COUNTRY=RU
set KEY_PROVINCE=MoscowRegion
set KEY_CITY=MOSCOW
set KEY_ORG=OpenVPN
set KEY_EMAIL=mail@mail.com
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=OU
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234
В строках set KEY_CN и set KEY_NAME указываем server
Последние 2 строки — параметры по умолчанию. Остальное можете редактировать под себя.
Сохраняем файл как vars.bat на рабочий стол, а затем копируем в папку C:\Program files\OpenVPN\easy-rsa
Чаще всего сохранить напрямую в исходную папку не получится — не хватает прав.
5) Отредактируем файл openssl-1.0.0.cnf
Так же открываем с помощью блокнота или notepad++
Нас интересует строка:
default_days = 3650 # how long to certify for
Она отвечает за время жизни сертификата. Если значение отличается — то указываем 3650 (10 лет).
Сохраняем.
6) Запускаем командную строку от имени администратора:
Пуск — Все программы — Стандартные
Правой кнопкой мыши на «Командная строка» и в меню — Запустить от имени администратора.
Командную строку не закрываем до конца процесса генерации сертификатов.
7) Поочередно выполняем следующие три команды:
cd C:\Program files\OpenVPN\easy-rsa
vars
clean-all
В итоге мы должны увидеть сообщение «Скопировано файлов: 1» дважды.
В папке C:\Program files\OpenVPN\easy-rsa появится папка keys с двумя файлами index.txt и serial.
Генерируем ключ Диффи Хельмана — команда build-dh
Генерация займёт некоторое время. Дождитесь окончания.
9) Генерируем ключ центра сертификации (CA) — build-ca
Нажимаем Enter, пока не закончатся вопросы.
Вы увидите в командной строке путь C:\Program files\OpenVPN\easy-rsa
Нет смысла менять заданные значения. Вы ранее прописали эти параметры в файле vars.bat
10) Генерируем сертификат сервера — команда build-key-server server
Нажимаем Enter (оставляем параметры по умолчанию, прописанные в vars.bat), пока не дойдём до вопросов.
Sign the certificate? (Создание сертификата на 3650 дней)
1 out of 1 certificate requests certified, commit? (Запись сертификата в базу)
На вопросы отвечаем нажатием Y
11) Генерируем сертификат клиента build-key client
Нажимаем Enter (оставляем параметры по умолчанию, прописанные в vars.bat), пока не дойдём до вопросов Common Name и Name.
На эти вопросы отвечаем client — это название создаваемого сертификата.
На вопросы Sign the certificate? и 1 out of 1 certificate requests certified, commit? отвечаем нажатием Y
12) Генерация сертификатов окончена.
В папке C:\Program files\OpenVPN\easy-rsa\keys можно увидеть следующие файлы:
Сертификаты для сервера и клиентов готовы.
Настройка OpenVPN сервера на Mikrotik
Подключимся к Mikrotik с помощью программы Winbox.
Загрузим 3 файла: ca.crt, server.crt, server.key
Для этого в меню нажмём Files и перетащим их из папки C:\Program files\OpenVPN\easy-rsa\keys
13) Далее необходимо их импортировать.
Откроем System – Certificates — Import и поочерёдно выберем сертификаты в этом порядке:
ca.crt
server.crt
server.key
После импорта появятся две записи:
14) Создадим пул адресов для VPN клиентов:
IP — Pool — add (+)
Введём название openvpn-pool
Диапазон 172.30.0.2-172.30.0.253
15) Создадим PPP профиль.
PPP — Profiles — add (+)
Введём название openvpn
Локальный адрес 172.30.0.1
Созданный Пул openvpn-pool
Остальные настройки оставляем по умолчанию.
Нажимаем ОК.
16) Создадим непосредственно сам OpenVPN сервер
PPP — Interface — OVPN Server
Включаем Enable
Указываем порт 1194
Выбираем наш профиль openvpn
Поставим галочку Require Client Certificate
Выберем наш сертификат server.crt
17) Создадим пользователя для подключения.
PPP — Secrets — add (+)
Введём имя пользователя и пароль ovpn_user1
Выбираем Сервис ovpn и профиль openvpn
Создадим 2 пользователя:
ovpn_user1 для клиента на компьютере
ovpn_mikrotik1 для клиента на Mikrotik
Рекомендуется для каждого VPN клиента создавать отдельное уникальное имя пользователя.
В дальнейшем это упростит работу и позволит отслеживать всех подключенных VPN клиентов.
18) Настроим фаервол
IP — Firewall — add(+)
Во вкладке General указываем:
Chain — input
Protocol — tcp
Порт 1194
Интерфейс — ether1 (Если интернет идёт через него)
Вкладка Action:
Action — accept
Затем ОК
Сервер настроен, теперь приступим к настройке VPN клиентов.
Настройка VPN клиента на компьютере под управлением Windows
19) Копируем в папку C:\Program files\OpenVPN\config\
из C:\Program files\OpenVPN\easy-rsa\keys следующие файлы
ca.crt, client.crt, client.key.
из C:\Program files\OpenVPN\simple-config\
client.ovpn
Создадим текстовый файл pass, где укажем логин и пароль от созданного VPN клиента на сервере.
В нашем случае это ovpn_user1
20) Откроем файл client.ovpn с помощью блокнота или notepad++
Изменяем следующие строки:
#Протокол
proto tcp
#Адрес и порт сервера
remote ваш.ip.адрес.сервера 1194
#Проверяем правильность названия ключей
ca ca.crt
cert client.crt
key client.key
И в самом конце добавим строчку
auth-user-pass «C:\\Program files\\OpenVPN\\config\\pass.txt»
В итоге у нас получатся следующие настройки в этом файле:
client
dev tun
proto tcp
remote адрес_сервера 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert user.crt
key user.key
remote-cert-tls server
cipher AES-128-CBC
verb 3
auth-user-pass «c:\\Program Files\\OpenVPN\\config\\pass.txt»
Остальные настройки закомментированы решеткой «#» или точкой с запятой «;»
21) Сохраняем файл. Если сохранить в папку не получается — сохраняем на рабочий стол, а затем копируем с заменой.
Запускаем OpenVPN и подключаемся.
После подключения можем увидеть, что нам назначен IP из диапазона, который ранее указали на сервере.
Настройка VPN клиента на Mikrotik
Имея настроенный OpenVPN сервер, можно настроить доступ на Mikrotik даже там, где нет белого IP адреса.
22) Подключимся к Mikrotik с помощью программы Winbox.
Загрузим 2 файла: client.crt, client.key
Для этого в меню нажмём Files и перетащим их из папки C:\Program files\OpenVPN\easy-rsa\keys
23) Далее необходимо их импортировать.
Откроем System – Certificates — Import и поочерёдно выберем сертификаты в этом порядке:
client.crt
client.key
24) Настроим параметры сервера:
PPP — add(+) — OVPN client
Во вкладке General указываем имя
Name — openVPN1 (любое, на ваше усмотрение)
Вкладка Dial Out:
Connect To — Адрес сервера(Внешний IP адрес главного роутера Mikrotik)
Port 1194
Указываем пользователя и пароль, который мы создали на VPN сервере
В нашем случае это пользователь ovpn_mikrotik1
Сертификат Client.crt
Нажимаем ОК
25) В терминале набираем /interface ovpn-client monitor openVPN1
Должно появиться сообщение со статусом connected
Теперь к этому mikrotik можно подключиться через VPN по адресу, который он получил от VPN сервера
Посмотреть адрес можно:
В Mikrotik-клиенте в IP-Adresses строка с нашим интерфейсом openVPN1
В Mikrotik-сервере PPP-Active Connections
В данной инструкции я покажу настройку между двумя Mikrotik OpenVPN Server и Client. Будем делать аутентификацию без сертификата и с ним. Конфигурация с сертификатами требует большой подготовки и ответственности, так как нам нужно всегда думать о сохранности, актуальности и списке отзыва, но не оспоримый плюс — это высокая безопасность. Правилом хорошего тона будет постоянный экспорт сертификатов из роутера на внешнее хранилище, жесткий диск.
Стоит иметь что на оборудовании Mikrotik отсутствуют какие-либо чипы аппаратной разгрузки для OpenVPN. В связи с этим вся нагрузка будет идти через центральный процессор, а значит, что скорость соединений напрямую зависит от загруженности роутера.
Так же OpenVPN на RouterOS v6 не поддерживает следующее:
- UDP протокол, т.е. необходимо использовать исключительно TCP;
- LZO сжатие;
- TLS аутентификация;
- Аутентификация без имени пользователя и пароля;
Схема сети представлена ниже.
Приняв во внимание вышеописанные ограничения и особенности приступим к настройке.
Мы находимся справа внизу в офисе SPB (Office-SPB).
Вводные данные:
- Office-SPB сервер;
- Office-Moscow клиент;
- NetworkCore выполняет роль провайдера, он будет заниматься обычной маршрутизацией;
- Office-Moscow ether1 смотрит в интернет 172.16.10.2/24;
- Office-SPB ether1 смотрит в интернет 172.16.11.2/24;
- Office-Moscow имеет bridge “General-Bridge” в локальной сети 192.168.11.1/24;
- Office-SPB имеет bridge “General-Bridge” в локальной сети 192.168.10.1/24;
- IP ПК в локальной сети Office-Moscow 192.168.11.2;
- IP ПК в локальной сети Office-SPB 192.168.10.2;
- Адресация в VPN сети 172.16.25.0/24;
- Версии RouterOS 6.46.2.
Если вы хотите углубить свои знания по работе с роутерами MikroTik, то наша команда рекомендует пройти курсы которые сделаны на основе MikroTik Certified Network Associate и расширены автором на основе опыта . Подробно читайте ниже.
Содержание
- Настройка OpenVPN по логину и паролю
- Создание сертификата центра сертификации
- Создание сертификата сервера OpenVPN
- Конфигурирование сервера
- Настройка Firewall
- Конфигурирование клиента
- Настройка OpenVPN по сертификату
- Настройка сервера
- Настройка клиента
- 89 вопросов по настройке MikroTik
Настройка OpenVPN по логину и паролю
Первым делом проверим доступность через интернет. Я отправлю ping запросы с обоих роутеров, чтобы убедиться, что они друг друга видят. В реальной жизни один из них должен иметь белый (публичный) IP, а именно тот, кто будет выполнять роль сервера.
Создание сертификата центра сертификации
На московском роутере открываем System — Certificates.
В данном разделе находятся все сертификаты на Mikrotik. Для настройки сервера нам необходимо сделать следующее:
- Создать сертификат центра сертификации;
- Создать сертификат сервера.
Нажимаем плюс и задаем параметры согласно скриншоту:
- Name – имя в списке Mikrotik;
- Country, Sate, Locality, Organization, Unit – произвольные поля для заполнения;
- Common Name – самое важное. Указываем уникальное имя;
- Key Size – длина ключа. Выбирается в выпадающем списке;
- Days Valid – срок годности.
На данный момент мы создали шаблон.
Подписание! Обращаю внимание, что мы будем создавать самоподписанный корневой сертификат центра сертификации.
Ничего страшного в этом нет, т.к. мы не собираемся его использовать для других сервисов. Выбираем наш шаблон, и в контекстном меню выбираем Sign.
В открывшемся окне выбираем CA. Обязательно указываем CA CRL Host – список отзыва, можно указать доменное имя.
Нажимаем Start и ждем окончания процесса.
Создание сертификата сервера OpenVPN
Открываем Certificates и нажимаем на плюс.
- Указываем уникальные имя и Common Name.
Открываем Key Usage, снимаем галочки с:
- crl sign;
- data encipherment;
- key sert sign;
- ставим галочку на tls server.
Сохраняем. Переходим к подписанию.
Выбираем сертификат в списке. В контекстном меню нам нужен Sign. В Certificate выбираем шаблон ServerOVPN, в CA самоподписанный корневой сертификат. Start.
В списке видим, что наш шаблон превратился в полноценный сертификат. Можем открыть его свойства.
Конфигурирование сервера
Но для начала создадим профиль. PPP – Profiles – жмем +.
Перед нами открывается окно нового профайла. В строке «Name» задаем понятное нам имя. В строке Local Address указываем IP адрес Mikrotik в VPN. Я указываю 172.16.25.1. Т.е. при подключении клиента автоматически присвоится именно это адрес.
Далее переключаем:
- Change TCP MSS в yes.
- Use UPnP переключаем в no.
Никогда не оставляйте default если хотите, чтобы все работало именно так, как вы планируете.
Protocols:
- no для Use MPLS;
- yes для Use Compression;
- yes для Use Encryption.
Далее в Limits ставим no для Only One. Остальные настройки можно не задавать. К примеру, если бы нам нужно было ограничить скорость клиента внутри тоннеля, то нас интересовала вкладка Queue – но это совсем другая история.
Теперь можно сохранять. Жмем Apply и OK. В списке должен появиться наш созданный профиль.
Нам нужно создать пользователя и пароль, который будет подключаться к нашей сети. Открываем Secrets и жмем +.
Задаем произвольные логин и пароль. Выбираем Service – ovpn, Profile – General-OVPN, Remote Address – 172.16.25.2 т.к. я планирую подключать одного пользователя (рекомендую использовать привязку по IP если хотите гибко управлять Firewall в отношении каждого пользователя). Если вам нужно больше одного, то необходимо создать DHCP Pool. Apply и Ok.
Открываем PPP – Interfaces – OPENV Server.
- Ставим галочку Enable;
- Задаем порт (не забываем, что это TCP);
- Mode – ip;
- Default Profile – созданный ранее профайл General-OVPN;
- Certificate – сертификат сервера ServerOVPN;
- Cipher – aes256.
Apply и Ok.
Настройка Firewall
Далее нужно разрешить OpenVPN трафик на роутере.
Добавляем правило.
Action – accept.
Сохраняем и переходим к клиентской части.
Конфигурирование клиента
Подключаемся к питерскому роутеру и в PPP создаем новый интерфейс OVPN Client.
Задаем имя интерфейса.
Открываем Dial Out и заполняем обязательные параметры.
Сохраняем и открываем вкладку Status.
Здесь мы видим статус подключено, шифрование и время жизни соединения. Вы спросите, а где же IP адрес клиента? Он по каким-то причинам не отображается в окне статуса интерфейса, зато есть в IP-Address. Возможно, ошибка, в данной прошивке. Попробуем проверить доступность московского роутера через VPN.
Ping-и идут, а значит с соединением все хорошо.
Настройка OpenVPN по сертификату
Здесь мы рассмотрим как настроить подключение по сертификату, выполним экспортирование и эмпортирование ключей для клиента и сервера.
Настройка сервера
Ранее мы настроили аутентификацию по логину и паролю. Настроить аутентификацию только по клиентскому сертификату не получится в связи с ограничением операционной системы. Подключаемся на московский роутер, открываем Certificates и создаем новый шаблон.
Key Usage. Обязательно ставим галочку на tls client.
Сохраняем изменения и нажимаем Copy. Выбираем наш шаблон для пользователей и создаём копию. В Common Name уникальное имя. Далее нажимаем Apply и Sign.
В открывшемся окне по аналогии с предыдущих примеров выбираем корневой сертификат и жмем Start.
Далее нужно экспортировать и импортировать ключи на клиентский Mikrotik. Выбираем в списке и жмем Export.
Для того чтобы выгрузить открытый и закрытый ключи, вбиваем пароль в поле Export Passphrase. Export.
Далее нужно экспортировать открытую часть CA.
Переходим в Files, выбираем 3 созданных файла и перетаскиваем на рабочий стол.
В настройках OVPN Server выставим чтобы проверялись клиентские сертификаты при подключении.
Настройка клиента
После экспорта и копирования ключей подключимся к питерскому роутеру. Открываем Files и переносим с рабочего стола 2 файла скопированных ранее.
Переходим в Certificates и импортируем открытый и закрытый ключи.
В выпадающем списке выбираем открытый ключ и вписываем пароль. Import.
Тоже самое с закрытым ключом.
Далее импортируем CA.
Открываем ранее созданный OVPN Client интерфейс, выбираем импортированный сертификат и требуем проверку серверного.
Соединение установилось.
Проверим его.
А вот и не все! Упустили важную вещь – список отзыва. Так как наш клиент использует DNS 8.8.8.8, есть вероятность, что Google понятия не имеет какой IP адрес скрывается за доменным именем crl-ovpn.ru – его мы указывали, когда создавали сертификат для CA. Нужно это быстро исправить. На клиенте в IP – DNS создаем статическую A запись.
На этом все, мы рассмотрели настройку OpenVPN (OVPN) между двумя роутерами микротик, один из них выступал в роли сервера а второй в роли клиента. Если у вас остались вопросы задавайте их в комментариях или нашей группе Телеграмм.
89 вопросов по настройке MikroTik
Вы хорошо разбираетесь в Микротиках? Или впервые недавно столкнулись с этим оборудованием и не знаете, с какой стороны к нему подступиться? В обоих случаях вы найдете для себя полезную информацию в курсе «Настройка оборудования MikroTik». 162 видеоурока, большая лабораторная работа и 89 вопросов, на каждый из которых вы будете знать ответ. Подробности и доступ к началу курса бесплатно тут.