Настройка OpenVPN Mikrotik
Теория
Для работы OpenVPN необходимы сертификаты
Сертификат удостоверяющего центра CA
Сертификат сервера OpenVPN
Сертификат клиента OpenVPN
Пул адресов для OpenVPN клиентов
Имена и пароли пользователей
Практика
Подразумевается что у нас новый чистый роутер, обновленный до последней версии c дефолтным файрволлом
Если это не так то работать будет тоже, только подразумевается что вы знаете что у вас настроено
Настройка Сервера
Обязательно проверьте установку времени
Если время будет не совпадать, то будут возникать ошибки подключения
Установить можно руками, или настроить NTP client
Настроим NTP
Код просто выделяет. Открываем консоль и щелкаем вставить. После последней строки нажать enter.
/system clock set time-zone-name=Europe/Moscow /system ntp client set enabled=yes client servers add address=time.google.com add address=0.pool.ntp.org add address=1.pool.ntp.org add address=2.pool.ntp.org add address=3.pool.ntp.org
В картинках
Ну ты красавчик!) ты смог… теперь иди делай сертификаты
# Сертификаты
Создается сертификат удостоверяющего центра /certificate add name="openvpn-ca" country="ru" state="Dmitrov" locality="Dmitrov" organization="openvpn" unit="ou" common-name="openvpn-ca" key-size=4096 days-valid=3650 key-usage=digital-signature,key-encipherment,data-encipherment,key-cert-sign,crl-sign,tls-client,tls-server Создается сертификат сервера /certificate add name="openvpn-srv" country="ru" state="Dmitrov" locality="Dmitrov" organization="openvpn" unit="ou" common-name="openvpn-srv" key-size=4096 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server Создается сертификат пользователя мастер сертификат из которого сделаем копии пользователям /certificate add name="openvpn-client-template" country="ru" state="Dmitrov" locality="Dmitrov" organization="openvpn" unit="ou" common-name="openvpn-client-template" key-size=4096 days-valid=365 key-usage=tls-client Делаем копии на трех пользователей из сертификата openvpn-client-template, для удобства можно переименовать openvpn-client-1 в openvpn-client-Vasso /certificate add name="openvpn-client-1" copy-from="openvpn-client-template" common-name="openvpn-client-1" /certificate add name="openvpn-client-2" copy-from="openvpn-client-template" common-name="openvpn-client-2" /certificate add name="openvpn-client-3" copy-from="openvpn-client-template" common-name="openvpn-client-3"
# Подписываем сертификаты
Сертификат удостоверяющего центра /certificate sign openvpn-ca ca-crl-host=127.0.0.1 Сертификат сервера, подписывается сертификатом удостоверяющего центра /certificate sign openvpn-srv ca="openvpn-ca" Сертификат пользователей, подписывается сертификатом удостоверяющего центра, мы сделали три сертификата со сроком службы 365 дней, для себя будет достаточно одного сертификата на несколько устройств но мы не такие и у нас будет их три :-) перед подписанием сертификата можно изменить срок службы, потом изменить нельзя будет. /certificate sign openvpn-client-1 ca="openvpn-ca" delay 60 /certificate sign openvpn-client-2 ca="openvpn-ca" delay 60 /certificate sign openvpn-client-3 ca="openvpn-ca"
Ну ты даёшь… ну погнали дальше)
Запускаем сервер
Включаем аутентификацию по пользователю /ppp aaa set accounting=yes Создаем мост /interface bridge add name=openvpn-bridge arp=enabled Создаем пул адресов для пользователей 10.20.30.100-10.20.30.200 /ip pool add name=openvpn-pool ranges=10.20.30.100-10.20.30.200 Создаем профиль PPP /ppp profile add name=openvpn-server local-address=10.20.30.1 remote-address=openvpn-pool Включаем сервер OVPN /interface ovpn-server server set auth=sha1,md5 certificate=openvpn-srv cipher=blowfish128,aes256-cbc default-profile=openvpn-server enabled=yes require-client-certificate=yes Добавляем разрешающие правило файрволла подключения к серверу, разместить его следуют самым первым. /ip firewall filter add action=accept chain=input comment="OpenVPN" dst-port=1194 protocol=tcp in-interface-list=WAN place-before=0
Создаем пользователей
/ppp secret add name="client-1" password="Qdjo0102$030405!" service=ovpn profile="openvpn-server" /ppp secret add name="client-2" password="ZdRb01#0203&0405" service=ovpn profile="openvpn-server" /ppp secret add name="client-3" password="VdRt010@2030*405" service=ovpn profile="openvpn-server"
Для любителей copy-paste:
- copy-paste.txt
/system clock set time-zone-name=Europe/Moscow /system ntp client set enabled=yes client servers add address=time.google.com add address=0.pool.ntp.org add address=1.pool.ntp.org add address=2.pool.ntp.org add address=3.pool.ntp.org /certificate add name="openvpn-ca" country="ru" state="Dmitrov" locality="Dmitrov" organization="openvpn" unit="ou" common-name="openvpn-ca" key-size=4096 days-valid=3650 key-usage=digital-signature,key-encipherment,data-encipherment,key-cert-sign,crl-sign,tls-client,tls-server /certificate add name="openvpn-srv" country="ru" state="Dmitrov" locality="Dmitrov" organization="openvpn" unit="ou" common-name="openvpn-srv" key-size=4096 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server /certificate add name="openvpn-client-template" country="ru" state="Dmitrov" locality="Dmitrov" organization="openvpn" unit="ou" common-name="openvpn-client-template" key-size=4096 days-valid=365 key-usage=tls-client /certificate add name="openvpn-client-1" copy-from="openvpn-client-template" common-name="openvpn-client-1" /certificate add name="openvpn-client-2" copy-from="openvpn-client-template" common-name="openvpn-client-2" /certificate add name="openvpn-client-3" copy-from="openvpn-client-template" common-name="openvpn-client-3" /certificate sign openvpn-ca ca-crl-host=127.0.0.1 delay 60 /certificate sign openvpn-srv ca="openvpn-ca" delay 60 /certificate sign openvpn-client-1 ca="openvpn-ca" delay 60 /certificate sign openvpn-client-2 ca="openvpn-ca" delay 60 /certificate sign openvpn-client-3 ca="openvpn-ca" /ppp aaa set accounting=yes /interface bridge add name=openvpn-bridge arp=enabled /ip pool add name=openvpn-pool ranges=10.20.30.100-10.20.30.200 /ppp profile add name=openvpn-server local-address=10.20.30.1 remote-address=openvpn-pool /interface ovpn-server server set auth=sha1,md5 certificate=openvpn-srv cipher=blowfish128,aes256-cbc default-profile=openvpn-server enabled=yes require-client-certificate=yes /ip firewall filter add action=accept chain=input comment="OpenVPN" dst-port=1194 protocol=tcp in-interface-list=WAN place-before=0
PS: не забудь создать пользователей
Настройка Клиента
Выгружаем сертификаты
Путей много, часто используют несколько файлов, а именно файл конфигурации, файл учетной записи пользователя, и файлы сертификатов. Самый простой все эти файлы объединить в один файл конфигурации, и использовать на всех клиентах, как на мобильных, так и на ПК
# Экспортируем один сертификат, без пароля сертификат openvpn-client-1 выгрузить нельзя, установим пароль 12345678
/certificate export-certificate openvpn-ca /certificate export-certificate openvpn-client-1 export-passphrase=12345678
Выгружаем сертификаты к себе в папку на компьютер
Файл конфигурации
- openvpn-client-1.ovpn
client dev tun remote 10.10.10.10 1194 tcp tun-mtu 1500 tls-client nobind user nobody group nogroup ping 15 ping-restart 45 persist-tun persist-key mute-replay-warnings verb 3 cipher AES-256-CBC auth SHA1 pull auth-user-pass connect-retry 1 reneg-sec 3600 remote-cert-tls server route 0.0.0.0 0.0.0.0 route-delay 3 <ca></ca> <cert></cert> <key></key>
Теперь содержимое сертификатов необходимо вставить в нужные секции,
<ca></ca> - cert_export_openvpn-ca.crt <cert></cert> - cert_export_openvpn-client-1.crt <key></key> - cert_export_openvpn-client-1.key
Должно получиться так:
Ну вот и все Дружок!
Bonus: На мобильных клиентах может возникает ошибка при запросе пароля сертификата клиента 12345678, поэтому мы его сбросим, но для этого нужна машина на Linux)
openssl rsa -in cert_export_openvpn-client-1.key -out nopas.key
Скачиваем файлик nopas.key и получаем сертификат без пароля)
Используемые материалы: Раз Два