OpenVPN Server

Материал из darklurker wiki
Перейти к: навигация, поиск

Вариант 1, общий

Подготовка сертификатов

Создаем и подписываем корневой сертификат CA:

certificate add name=template-CA country="" state="" locality="" organization="" unit="" common-name="CA" key-size=4096 days-valid=3650 key-usage=crl-sign,key-cert-sign
certificate sign template-CA ca-crl-host=<router_ip> name="CA"

Генерируем и подписываем сертификат сервера:

certificate add name=SRV country="" state="" locality="" organization="" unit="" common-name="srv-OVPN" key-size=4096 days-valid=1095 key-usage=digital-signature,key-encipherment,tls-server
certificate sign SRV ca="CA" name="srv-OVPN"

Создаем шаблон сертификата для клиентов:

certificate add name=CL country="" state="" locality="" organization="" unit="" common-name="client-ovpn" key-size=4096 days-valid=365 key-usage=tls-client

Создаем и подписываем сертификат первого клиента:

certificate add name=CL-to-issue copy-from="CL" common-name="client-ovpn-1"
certificate sign CL-to-issue ca="CA" name="client-ovpn-1"

Сертификаты последующих клиентов.

Меняем след. параметры:

common-name="client-ovpn-1"

Для первой команды, это значение должно быть уникальным в пределах одного CA.

name="client-ovpn-1"

Для второй команды, это значение должно быть уникальным в пределах одного микротика.

Для отзыва сертификатов используем команду:

certificate issued-revoke %cert-name%

Настройка OpenVPN сервера

tap интерфейс

Задаем пул адресов:

ip pool add name=OVPN_srv_pool ranges=192.168.88.100-192.168.88.110

Создаем бридж интерфейс

interface bridge add name=OVPN_bridge arp=enabled

Создаем PPP-профиль:

ppp profile add name=OVPN_server local-address=192.168.88.1 remote-address=OVPN_srv_pool bridge=OVPN_bridge
ppp aaa set accounting=yes
ppp secret add name=USERNAME password=PASSWORD service=ovpn profile=OVPN_server

Включаем сервер OpenVPN:

interface ovpn-server server set auth=sha1 cipher=blowfish128 default-profile=OVPN_server mode=ethernet netmask=24 require-client-certificate=yes certificate=srv-OVPN enabled=yes

для 443 порта:

interface ovpn-server server set auth=sha1 certificate=srv-OVPN cipher=blowfish128,aes128 default-profile=OVPN_server enabled=yes keepalive-timeout=60 max-mtu=1500 mode=ethernet netmask=24 port=443 require-client-certificate=yes

Экспортируем сертификаты, пароль установить свой:

certificate export-certificate CA export-passphrase=""
certificate export-certificate client-ovpn-1 export-passphrase=KEY_PASSWORD


Конфиг tap

Конфиг для tap интерфейса, openvpn.conf:

client
dev tap
proto tcp
remote <ip_adress> <port>
resolv-retry infinite
nobind
persist-key
persist-tun
ca /home/akimrx/mikrotikcerts/cert_export_CA.crt
cert /home/akimrx/mikrotikcerts/cert_export_client-ovpn-1.crt
key /home/akimrx/mikrotikcerts/cert_export_client-ovpn-1.key
—auth-user-pass /home/akimrx/mikrotikcerts/user-pwd.txt
remote-cert-tls server
log /var/log/openvpn.log
verb 4
tun интерфейс

Отличается тем, что не нужно создавать бридж интерфейс и mode=ip:

interface ovpn-server server set auth=sha1 cipher=blowfish128 default-profile=OVPN_server mode=ip netmask=24 require-client-certificate=yes certificate=srv-OVPN enabled=yes
Конфиг tun

Конфиг для tun интерфейса, openvpn.conf:

client
dev tun
proto tcp
topology subnet
remote <ip_adress> <port>
resolv-retry infinite
nobind
persist-key
persist-tun
ca /home/akimrx/mikrotikcerts/cert_export_CA.crt
cert /home/akimrx/mikrotikcerts/cert_export_client-ovpn-1.crt
key /home/akimrx/mikrotikcerts/cert_export_client-ovpn-1.key
—auth-user-pass /home/akimrx/mikrotikcerts/user-pwd.txt
remote-cert-tls server
route 192.168.88.0 255.255.255.0
route-delay 5
log /var/log/openvpn.log
verb 4

Вариант 2, для стима, эмуляция физического подключения к роутеру

Задаем пул адресов:

ip pool add name=OVPN_srv_pool ranges=192.168.88.100-192.168.88.110

Используем существующий бридж, ставим для него прокси арп:

interface bridge set arp=proxy-arp

Создаем PPP-профиль:

ppp profile add name=OVPN_server local-address=dhcp remote-address=OVPN_srv_pool bridge=bridge
ppp aaa set accounting=yes
ppp secret add name=USERNAME password=PASSWORD service=ovpn profile=OVPN_server

Включаем сервер OpenVPN:

interface ovpn-server server set auth=sha1 cipher=blowfish128 default-profile=OVPN_server mode=ethernet netmask=24 require-client-certificate=yes certificate=srv-OVPN enabled=yes

Экспортируем сертификаты, пароль установить свой:

certificate export-certificate CA export-passphrase=""
certificate export-certificate client-ovpn-1 export-passphrase=KEY_PASSWORD

Конфиг точно такой же, как и у tap интерфейса в Варианте 1.

Микротик-клиент

Импорт сертификатов

Кладём в микротик файл сертификата CA и файл сертификата и файл ключа клиента любым удобным способом

Импортируем сертификат CA

certificate import file-name=cert_export_CA.crt passphrase=""

Импортируем сертификат и ключ клиента

certificate import file-name=cert_export_client-ovpn-1.crt passphrase=""
certificate import file-name=cert_export_client-ovpn-1.key passphrase=KEY_PASSWORD

Настраиваем клиент

interface ovpn-client add name=OVPN_client connect-to={ovpn.my.domain|xxx.xxx.xxx.xxx} port=1194 mode={ip|ethernet} user=user-1 password=P@ssword profile=default certificate=cert_32 auth=sha1 cipher=blowfish128 add-default-route={no|yes} disabled=no

Значения в {} указывать в соответствии с предыдущими настройками и вашими потребностями.