OpenVPN + Mikrotik

Статья в разработке!

Устанавливаем Easy-RSA

apt-get install easy-rsa

Подготавливаем CA
Все команды запускаем по очереди.

make-cadir /etc/easy-rsa
cd /etc/easy-rsa
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-dh
./easyrsa gen-crl

Генерим сертификаты для сервера

./easyrsa gen-req openvpn-server nopass
./easyrsa sign-req server openvpn-server

Увеличиваем время жизни сертификата на 2 года

openssl x509 -in /etc/easy-rsa/pki/issued/openvpn-server.crt -text -noout | grep "Not After"

Генерим сертификаты для клиента с имененм mikrotik

./easyrsa gen-req mikrotik nopass
./easyrsa sign-req client mikrotik

Сертификаты для микротика

/etc/easy-rsa/pki/issued/mikrotik.crt
/etc/easy-rsa/pki/private/mikrotik.key

Установка openvpn

apt-get install openvpn

Конфиг сервера
/etc/openvpn/server/server.conf

ca /etc/easy-rsa/pki/ca.crt
cert /etc/easy-rsa/pki/issued/openvpn-server.crt
key /etc/easy-rsa/pki/private/openvpn-server.key
dh /etc/easy-rsa/pki/dh.pem
crl-verify /etc/easy-rsa/pki/crl.pem

proto tcp
# Имя интерфейса
dev tun200
tun-mtu 1400
topology subnet
server 10.20.200.0 255.255.255.0
client-config-dir /etc/openvpn/client
data-ciphers AES-256-GCM:AES-128-GCM:BF-CBC

# Говорим клиенту пингать сервер что бы не терялась связь
push "ping 10"

# Маршруты которые отдаем клиентам
push "route 10.10.0.0 255.255.0.0"
push "route 192.168.0.0 255.255.0.0"

# Маршруты за опенвпн в системном роутинге
route 192.168.0.0 255.255.255.0

Конфиг клиента
Конфиг лежит в каталоге /etc/openvpn/client . Название ключа есть название конфига для клиента. В данном случае mikrotik

# Адресация для микротика
#ifconfig-push 10.20.200.9 255.255.255.0

# роутинг за микротиком
iroute 192.168.0.0 255.255.255.0

Запуск

systemctl enable openvpn-server@server
systemctl start openvpn-server@server

iptables

iptables -I INPUT -p tcp -m tcp --dport 1194 -j ACCEPT

Утранение неисправностей.

Лог

TLS: Initial packet from [AF_INET]19.10.5.11:51849, sid=ba13f8a4 4c4aec28
VERIFY ERROR: depth=0, error=CRL has expired: CN=client1
OpenSSL: error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned
TLS_ERROR: BIO read tls_read_plaintext error
TLS Error: TLS object -> incoming plaintext read error
TLS Error: TLS handshake failed
SIGUSR1[soft,tls-error] received, client-instance restarting

Решение

cd /etc/easy-rsa
./easyrsa gen-crl
systemctl restart openvpn-server@server

Для того что бы постоянно не отвлекаться можно добавить данный код в крон.
Заходим в каталог /etc/cron.weekly, создаем файл fix-vpn, даем права chmod 755 и вставляем внутрь содержимое:

cd /etc/easy-rsa
./easyrsa gen-crl >/dev/null 2>&1
systemctl restart openvpn-server@server > /dev/null

[ Править ]

@kiranananda