У попередній статті ми писали про налаштування VPN через MikroTik за допомогою протоколів PPPoE та PPTP. Це найпопулярніші способи тунелювання. Сьогодні ми зупинимося на OpenVPN - також поширеному рішенні VPN-тунелів на роутерах Мікротік.
Особливості OpenVPN на MikroTik
OpenVPN має багато переваг, завдяки яким він, як і раніше, один з найпопулярніших протоколів для підняття VPN тунелів:
- простота налаштування;
- надійність та захищеність завдяки сертифікатам;
- універсальність - віддалений доступ можна організувати з пристроїв із будь-якою операційною системою;
- відсутність проблем із NAT.
Однак про те, що можливості OpenVPN на MikroTik урізані:
- немає стиснення LZO;
- немає UDP, хоча саме він є кращим для OpenVPN як простий та легковажний транспорт;
- швидкість передачі даних не надто висока;
- немає можливості надавати адреси через інший DHCP, їх видає тільки сам Mikrotik.
- генерація сертифікатів;
- налаштування OpenVPN сервера на MikroTik;
- налаштування клієнта.
ГЕНЕРАЦІЯ СЕРТИФІКАТІВ ДЛЯ OPENVPN
Сертифікати для сервера та клієнта можна створити засобами OpenVPN (Easy-RSA), а можна за допомогою ресурсу CAcert.org. Розглянемо створення самопідписаних сертифікатів за допомогою Easy-RSA.
Завантажуємо та встановлюємо OpenVPN .
Редагуємо параметри easy-rsa OpenVPN .
Після встановлення йдемо до папки з програмою, до каталогу easy-rsa
і відкриваємо за допомогою блокнота файл vars.bat.sample , редагуємо його.
Якщо ми створюємо дублікат папки easy-rsa (а в цьому є сенс) і працюємо в ньому, необхідно відредагувати рядок, прописавши в ньому новий шлях до папки:
set HOME=%ProgramFiles%\OpenVPN\easy-rsa
Значення рядка set KEY_SIZE=1024 можна змінити на 2048 (як сказано у коментарях у файлі - якщо ви параноїк), але врахуйте, що продуктивність зменшиться.
Далі редагуємо наступні рядки, проставляючи в них актуальні для себе значення (порожні параметри залишати не можна):
set KEY_PROVINCE=Harkiv
set KEY_CITY=Harkiv
set KEY_ORG=OpenVPN
set KEY_EMAIL=admin@lantorg.com
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=lantorg set PKCS11_MODULE_PATH=
changeme
Останні два параметри не можна змінювати.
Після чого зберігаємо файл під ім'ям vars.bat .
Якщо під час збереження vars.bat у цьому ж каталозі система видає помилку:
то збережіть файл спочатку на робочому столі, та був перенесіть у цей каталог.
Виконуємо створення сертифікатів для OpenVPN під MikroTik.
Працюємо у командному рядку Windows (cmd), запустивши її від імені адміністратора.
Переходимо до потрібного каталогу: cd "C:\Program Files\OpenVPN\easy-rsa"
Набираємо команду vars і тиснемо ентер.
Набираємо команду clean-all і тиснемо ентер.
Якщо бачимо напис, як у зображенні - "Скопійовано файлів - 1.", отже, все зроблено правильно.
Набираємо команду build-ca. Програма починає генерацію публічного сертифіката OpenVPN і запитує значення параметрів. Якщо питання в командному рядку ми просто тиснемо ентер, то програма підставляє значення за промовчанням, які ми вписали у файл vars.bat . Зупиняємось, коли знову з'являється рядок C: Program Files Open VPN easy-rsa.
Даємо команду на генерацію сертифіката сервера OpenVPN для MikroTik: build-key-server имя_сертификата . У нашому випадку пишемо
build-key-server server, питанням " Sign the certificate? " відповідаємо y, як і питання " 1 out of 1 certificate requests certified, commit?" , На інші просто тиснемо ентер.
Даємо команду на генерацію сертифіката клієнта - build-key client . Ім'я сертифіката (Common Name) має бути унікальним і не співпадати з іншими сертифікатами. Тому на це запитання відповідаємо- client . Тут також наприкінці з'являться два питання, як у попередньому пункті, і ми також відповідаємо на них – y.
Все, тепер у папці C:\Program Files\OpenVPN\easy-rsa\keys лежать усі створені ключі та сертифікати OpenVPN.
ВСТАНОВЛЕННЯ СЕРТИФІКАТІВ OPENVPN ТА НАЛАШТУВАННЯ СЕРВЕРА НА MIKROTIK
Зі створених нами сертифікатів та ключів нас цікавлять 3 файли:
- ca.crt,
- server.crt,
- server.key.
Імпортуємо сертифікати OpenVPN в ОС MikroTik .
- ім'я профілю,
- Local Address - адреса роутера Мікротик, до якого підключатимуться клієнти. Він повинен лежати в одій підмережі з Remote Address
- Remote Address- тут пишемо або одну IP-адресу клієнта, або ім'я раніше створеного пулу адрес.
Інші налаштування не чіпаємо.
Ідемо в меню PPP-Interface - OVPN Server .
- Активуємо його, поставивши галочку у пункті Enabled.
- У полі mode залишаємо IP (IP-тунелювання за замовчуванням) або виставляємо ethernet (режим мережного моста), це L3 та L2 відповідно. Найчастіше використовується IP.
- Default Profile – вибираємо профіль, який ми створили раніше.
- Certificate – сертифікат сервера.
- require-client-certificate - якщо ставимо галку, сервер при підключенні перевіряє сертифікат клієнта. Якщо ні, то не перевіряє, і налаштування клієнта при цьому спрощується.
Створюємо та налаштовуємо користувача .
Ідемо: PPP - Secrets і додаємо користувача. Тут все просто: ім'я, пароль, сервіс та профіль.
Необхідно також у налаштуваннях клієнта передбачити синхронізацію часу із сервером. Спочатку переконуємося, що у нас виставлено правильну тайм-зону (меню System - Clock ). Далі йдемо в меню System - SNTP Client і прописуємо адресу NTP сервера (на скріншоті вказана локальна, але можна взяти будь-яку, наприклад 85.21.78.91).
Налаштовуємо дозвіл правило фаєрволла .
Ідемо IP - Firewall - Filter Rules і дозволяємо трафік на порт OpenVPN:
- У полі Chain ставимо input.
- Protocol - 6(tcp).
- Dst. Port – 1194.
- In. Interface – прописуємо назву інтерфейсу, на який йде вхідний трафік.
Активуємо правило на вкладці Action:
Нагадаємо, що дозвільне правило у списку правил має бути вищим за забороняючі, інакше воно не працюватиме.
НАЛАШТУВАННЯ КЛІЄНТА OPENVPN
Якщо ми не використовуємо клієнтські сертифікати (у налаштуваннях сервера не відзначали галочкою пункт require-client-certificate), то налаштувати клієнт OpenVPN буде швидше та простіше. Нам не потрібно буде копіювати сертифікати для клієнта, тільки створити в меню PPP - Interfaces новий запис OVPN Client та на вкладці Dial Out прописати:
- адреса OpenVPN сервера (поле Connect To ),
- логін та пароль користувача (поля User та Password ),
- порт з'єднання,
- тип аутентифікації та шифрування (поля Auth та Cipher ).
Налаштування другого роутера Мікротік як клієнта OpenVPN .
Так само, як і при налаштуванні сервера, копіюємо з папки C: Program Files OpenVPN easy-rsa keys і вставляємо в розділ Files файли сертифікатів і ключів OpenVPN. Тільки тепер це будуть:
- ca.crt,
- client.crt,
- client.key.
Після цього імпортуємо їх по черзі, використовуючи меню System – Certificates - вибір сертифіката - кнопка Import .
Після успішного імпорту у рядку сертифіката мають з'явитися літери KT
Далі налаштовуємо з'єднання практично так само, як і у випадку без сертифікатів. Створюємо в меню PPP - Interfaces новий запис OVPN Client і на вкладці Dial Out прописуємо:
- адреса OpenVPN сервера (поле Connect To ),
- логін та пароль користувача (поля User та Password ),
- порт з'єднання,
- найменування сертифіката
- тип аутентифікації та шифрування (поля Auth та Cipher ).
Все залишилося перевірити, чи піднялося з'єднання.
Налаштування клієнта OpenVPN у Windows .
Копіюємо раніше створені нами файли ca.crt, client.crt, client.key з папки C:\Program Files\OpenVPN\easy-rsa\keys до каталогу C:\Program Files\OpenVPN\config .
Створюємо тут звичайний текстовий файл, який зберігаємо як auth.cfg (зверніть увагу, змінюємо і розширення теж).
Відкриваємо файл auth.cfg для редагування в блокноті і вписуємо в нього 2 рядки: перший - логін користувача, другий - пароль, які ми задали на сервері. Зберігаємо файл.
Створюємо ще один текстовий файл, який зберігаємо як client.ovpn (включно із зміною розширення).
Файл client.ovpn редагуємо так:
- proto tcp-client
- remote 123.123.123.123 # тут зовнішня адреса нашого роутера MikroTik
- dev tap
- nobind persist-key
- tls-client
- ca ca.crt #вказуємо ім'я CA сертифіката
- cert client.crt #вказуємо ім'я сертифіката клієнта
- key client.key # вказуємо ім'я файла-ключа для клієнта
- ping 10
- verb 3 # чим вищий цей параметр - тим вищий рівень логування
- ns-cert-type server
- cipher AES-256-CBC
- auth SHA1
- pull
- auth-user-pass auth.cfg # тут ім'я файлу з логіном-паролем користувача
- route-method exe
- route-delay 2
- route 192.168.1.0 255.255.255.0 172.21.108.1 # цей рядок задає маршрут, тут 172.21.108.1 - адреса мікротика з PPP-профілю, а 192.168.1.0 с255.25.