OpenVPN это еще одна из реализаций VPN туннелей. У нее есть некоторые преимущества. Например возможность работы по произвольному порту и использование TCP или UDP на выбор, а так же возможность использования Proxy. Но и есть относительные минусы, например требуется установка своего клиента.
Программный маршрутизатор VyOS помимо L2TP, DMVPN, IPsec так же поддерживает OpenVPN.
Для настройки будем считать, что:
eth0 — внешний интерфейс;
192.168.123.1 — внутренний IP адрес маршрутизатора;
255.255.255.0 (/24) — маска внутренней сети;
172.16.0.0/24 – виртуальная сеть для OpenVPN клиентов;
1.1.1.2 — внешний IP адрес.
Создание сертификатов
В начале нужно скопировать скрипты для генерации ключей, чтобы их не потерять при обновлении версии.
cp -rv /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /config/rsa2
После копирования, изменим параметры создаваемых сертификатов, для этого отредактируем файл /config/rsa2/vars:
nano /config/rsa2/vars
Полезные параметры в vars:
export KEY_SIZE=1024
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="RU"
export KEY_PROVINCE="Moscow"
export KEY_CITY="Moscow"
export KEY_ORG="BlackDiver.Net"
export KEY_EMAIL="admin@blackdiver.net"
Описание параметров:
KEY_SIZE – длина ключа;
CA_EXPIRE – время жизни корневого сертификата (в днях);
KEY_EXPIRE – время жизни пользовательских сертификатов;
KEY_COUNTRY – страна, указываемая в сертификате;
KEY_PROVINCE – область, указываемая в сертификате;
KEY_CITY – город;
KEY_ORG – организация;
KEY_EMAIL – адрес электронной почты;
Теперь нужно загрузить переменные (это нужно делать перед каждым началом создания сертификатов):
source /config/rsa2/vars
После загрузки переменных, перейдем к созданию сертификатов.
Перейдем в скопированную папку:
cd /config/rsa2
Очистим все текущие сертификаты:
./clean-all
Создадим корневой сертификат:
./build-ca
Создадим Diffie-Hellman key exchange:
./build-dh
Создадим сертификат сервера (в примере сертификат будет иметь имя blackdiver-server):
./build-key-server blackdiver-server
Создадим пользовательские сертификаты ( в примере создаваемый пользовательский сертификат будет иметь имя user1):
./build-key user1
Для всех сертификатов не должен быть установлен пароль, а так же все сертификаты, кроме корневого, должны быть подписаны корневым сертификатом.
При запросе пароля просто нажимаем Enter:
A challenge password []:
При запросе подписи сертификата вводим y и нажимаем Enter:
Sign the certificate? [y/n]:
1 out of 1 certificate requests certified, commit?
Сертификаты созданы.
Настройка OpenVPN
Нужные сертификаты созданы. Теперь перейдем к настройке OpenVPN сервера на VyOS.
Проведем базовую настройку:
set interfaces openvpn vtun0 mode server
set interfaces openvpn vtun0 server subnet 172.16.0.0/24
set interfaces openvpn vtun0 server name-server 192.168.123.1
set interfaces openvpn vtun0 server domain-name blackdiver.net
set interfaces openvpn vtun0 tls cert-file /config/rsa2/keys/blackdiver-server.crt
set interfaces openvpn vtun0 tls key-file /config/rsa2/keys/blackdiver-server.key
set interfaces openvpn vtun0 tls ca-cert-file /config/rsa2/keys/ca.crt
set interfaces openvpn vtun0 tls dh-file /config/rsa2/keys/dh1024.pem
Описание команд:
Создаем OpenVPN сервер и назначаем ему виртуальный интерфейс vtun0:
set interfaces openvpn vtun0 mode server
Создаем виртуальную сеть 172.16.0.0/24 для OpenVPN клиентов:
set interfaces openvpn vtun0 server subnet 172.16.0.0/24
Передаем OpenVPN клиентам адрес DNS сервера:
set interfaces openvpn vtun0 server name-server 192.168.123.1
Указываем локальный домен для OpenVPN клиентов:
set interfaces openvpn vtun0 server domain-name blackdiver.ovpn
Настройка сертификатов для сервера:
set interfaces openvpn vtun0 tls cert-file /config/rsa2/keys/blackdiver-server.crt
set interfaces openvpn vtun0 tls key-file /config/rsa2/keys/blackdiver-server.key
set interfaces openvpn vtun0 tls ca-cert-file /config/rsa2/keys/ca.crt
set interfaces openvpn vtun0 tls dh-file /config/rsa2/keys/dh1024.pem
Настройка маршрутизации
Если требуется, чтобы клиенты выходили в интернет через VPN канал:
set interfaces openvpn vtun0 replace-default-route
и разрешаем трансляцию адресов для подсети 172.16.0.0/24:
set nat source rule 110 outbound-interface eth0
set nat source rule 110 source address 172.16.0.0/24
set nat source rule 110 translation address masquerade
Если только требуется доступ к локальной сети за маршрутизатором:
set interfaces openvpn vtun0 server push-route 192.168.123.0/24
Дополнительные настройки
Если используется DNS-forwarder на маршрутизаторе VyOS, то нужно его включить на интерфейсе vtun0:
set service dns forwarding listen-on vtun0
Если у маршрутизаторе несколько IP адресов и требуется разрешить подключение к VPN только на один из адресов:
set interfaces openvpn vtun0 local-host 1.1.1.2
Изменить порт OpenVPN на 80-й (по умолчанию используется 1194 порт):
set interfaces openvpn vtun0 local-port 80
Использовать TCP протокол (по умолчанию используется UDP):
set interfaces openvpn vtun0 protocol tcp-passive
Настройка VyOS закончена.
Сохраняем конфигурацию:
commit
save
Настройка OpenVPN клиентов
Для настройки OpenVPN клиентов нам потребуются корневой сертификат, сертификат и ключи пользователя user1:
user1.crt;
user1.key;
ca.crt.
Эти сертификаты находятся в каталоге /config/rsa2/ и их можно скопировать себе с помощью утилиты SCP или WinSCP с маршрутизатора.
Далее создаем текстовый файл конфигурации (например blackdiver-openvpn.ovpn) и записываем в него настройки подключения:
Конфигурация для подключения по протоколу UDP:
client
proto udp
remote-cert-tls server
verb 2
dev tun0
cert user1.crt
key user1.key
ca ca.crt
remote 1.1.1.2 1194
Конфигурация для подключения по протоколу TCP:
client
proto tcp
remote-cert-tls server
verb 2
dev tun0
cert user1.crt
key user1.key
ca ca.crt
remote 1.1.1.2 1194
где:
1.1.1.2 – IP адрес сервера;
1194 – порт, на котором работает OpenVPN сервер.
Если требуется работа через Proxy, то в конфигурацию клиента так же дописываем:
http-proxy 2.2.2.2 8080
где:
2.2.2.2 – IP адрес прокси сервера;
8080 – порт, на котором работает прокси.
после этого, помещаем все файлы (ca.crt, user1.crt, user1.key, blackdiver-openvpn.ovpn) в каталог config на клиенте и инициируем подключение.
Отзыв клиентских сертификатов
Для отзыва сертификатов переходим в каталог:
cd /config/rsa2/
Отзываем сертификат пользователя user1:
./revoke-full user1
При первом отзыве, создастся файл crl.pem в котором будет храниться список отозванных сертификатов. Этот файл нужно прописать в настройках сервера:
set interfaces openvpn vtun0 tls crl-file /config/rsa2/keys/crl.pem
Команды для диагностики
Посмотреть подключенных клиентов:
show openvpn server status
Перезапустить OpenVPN сервер:
reset openvpn interface vtun0
Посмотреть список отозванных сертификатов:
openssl crl -in /config/rsa2/crl.pem -text
cat /config/rsa2/keys/index.txt
Настройка OpenVPN на VyOS закончена. Из нюансов можно отметить, что сервер OpenVPN можно настроить на 443/TCP или 80/TCP порт и тогда можно будет инициировать подключение даже если в сети доступен только просмотр Web страниц и используется прокси.
Заказать создание и поддержку безопасной IT-инфраструктуры любой сложностиБыть уверенным в своей IT-инфраструктуре – это быть уверенным в завтрашнем дне. Для того, чтобы сделать заказ:
|