Шукати в цьому блозі

вівторок, 22 серпня 2023 р.

Налаштування OpenVPN-сервера на Mikrotik (метод 2)

Вступ

Вже був розповідав як налаштувати OpenVPN-сервер на Mikrotik (назвемо його - метод 1). В тому методі ми налаштували сервер де організували з кожним клієнтом point-to-point канал і маршрутизували трафік. Але подекуди нам зустрічаються локальні мережі в яких працює специфічний софт, який "не любить" маршрутизацію і чи зовсім не працює з нею, чи працює лише після танців з бубном. В таких випадках нам зможе допомогти другий метод налаштування OpenVPN-сервера, коли клієнт входить безпосередньо в бродкаст домен (bridge-інтерфейс) локальної мережі.

Сертифікати

В цьому другому методі нам теж треба згенерувати сертифікати, але з іншими правами. Якщо генерувати сертифікати в тими правами, що були у попередньому методі, нічого не буде працювати. Це важливо.

Генеруємо корневий сертифікат нашого "сертифікаційного центру":

/certificate add name=ca-v2 country="UA" state="KY" locality="Locality" organization="Organization" unit="Unit" common-name="ca-v2" key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,data-encipherment,key-cert-sign,crl-sign
/certificate sign ca-v2

Створюємо сертифікат та закритий ключ для OpenVPN-сервера:

/certificate add name=ovpn-server-v2 country="UA" state="KY" locality="Locality" organization="Organization" unit="OpenVPN-server-v2" common-name="ovpn-server-v2" key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,data-encipherment,key-cert-sign,tls-server
/certificate sign ovpn-server-v2 ca=ca-v2

Генеруємо клієнтський сертифікат:

/certificate add name=ovpn-client-v2 country="UA" state="KY" locality="Locality" organization="Organization" unit="OpenVPN-client-v2" common-name="ovpn-client-v2" key-size=2048 days-valid=3650 key-usage=tls-client
/certificate sign ovpn-client-v2 ca=ca-v2

Сервер

З сертифікатами поки закінчили, тепер налаштуємо сам OpenVPN-сервер.

/ppp profile add bridge=bridge bridge-learning=yes local-address=192.168.0.1 name=profile-ovpn remote-address=default-dhcp use-ipv6=no
/interface ovpn-server server set auth=sha1 certificate=OVPN-server cipher=aes256 default-profile=profile-ovpn enabled=yes mode=ethernet require-client-certificate=yes

Тут важливо розуміти що на відміну від метода 1 тут ми вводимо клієнтів безпосередньо в бродкаст домен (bridge-інтерфейс) локальної мережі, відповідно для сервера вказуємо mode=ethernet, а в профілі використовуємо наявний для локальної мережі dhcp-діапазон адрес і локальним адресом вказуємо адресу на bridge-інтерфейсі.

Далі додаємо користувачів
/ppp secret add name=USERNAME password=PASSWORD profile=ovpn service=ovpn
та не забуваємо відкрити OpenVPN-сервер для доступу:
/ip firewall filter add action=accept chain=input dst-port=1194 protocol=tcp

Клієнт

Тепер давайте створимо ovpn-файл для OpenVPN-клієнта. Спочатку експортуємо ca та клієнтський сертифікати. Тут все просто:
/certificate export-certificate ca-v2 file-name=ca-v2 type=pem 
/certificate export-certificate ovpn-client-v2 file-name=ovpn-client-v2 type=pem export-passphrase="passphrase"
Важливо! Для клієнтського сертифіката необхіжно вказати бодай якусь passphrase, інакше не буде експортовано закритий ключ, а він нам необхідний.

Сам вміст ovpn-файла може бути приблизно таким.

client.ovpn:

client
dev tap
proto tcp
remote <ip address or dns name of the ovpn server> 1194
nobind
persist-key
persist-tun
remote-cert-tls server
data-ciphers AES-256-CBC
cipher AES-256-CBC
auth-user-pass
keepalive 10 120
verb 1
auth SHA1
<ca>
-----BEGIN CERTIFICATE-----
вставляємо вміст з експортованого файла ca-v2.crt
-----END CERTIFICATE-----
</ca>
-----BEGIN CERTIFICATE-----
вставляємо вміст з експортованого файла ovpn-client-v2.crt
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN ENCRYPTED PRIVATE KEY-----
вставляємо вміст з експортованого файла ovpn-client-v2.key
-----END ENCRYPTED PRIVATE KEY-----
</key>
Якщо OpenVPN-клієнт для Windows дозволяє запам'ятати введену passphrase та ім'я та пароль користувача то для Linux такої можливості немає, але в сам ovpn-файл можна додати опції:
auth-user-pass auth.cfg
askpass store.pass
а в самих файлах розмістити, відповідно, ім'я користувача з паролем та passphrase.

auth.cfg:

USERNAME
PASSWORD

store.pass:

passphrase
Ось і все, щодо метода 2.

Немає коментарів: