OpenVPN: Открытая виртуальная частная сеть.

Установка, настройка, эксплуатация.

Модератор: ROOT

OpenVPN: Открытая виртуальная частная сеть.

Сообщение ROOT » 13 июл 2017, 20:07

Оглавление


Темы
 Установка OpenVPN и EASY-RSA 
 Генерация Серверных и пользовательских сертификатов 
 Конфигурационный файл сервера 
 Конфигурационный файл клиента 
 Встраивание сертификата и ключей в конфигурационный файл 
 Скрипт автоматической установки OpenVpn 
 Импорт подключение из OVPN файла 
Дополнительные материалы
WireGuard - VPN нового поколения
Wake on Lan: Удалённое включение компьютера
Синхронизация времени
BIND — DNS-сервер
ISCSI — Транспортный протокол для SCSI
QUAGGA — Протоколы динамической маршрутизации
Dnscrypt — Проксирование dns-трафика


OpenVPN — свободная реализация технологии виртуальной частной сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT и сетевым экраном, без необходимости изменения их настроек. OpenVPN была создана Джеймсом Йонаном (James Yonan) и распространяется под лицензией GNU GPL.
 Установка OpenVPN и EASY-RSA 
Скачиваем .rpm файл репозитория epel
Код: выделить все
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

Устанавливаем репозиторий
Код: выделить все
dnf install epel*

Устанавливаем easy-rsa openvpn с репозитория epel
Код: выделить все
dnf install easy-rsa openvpn
Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 417
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 18:49



 Генерация серверных и пользовательских сертификатов 
Теперь нужно сделать папку, в которую скопируем скрипты (в общем скрипты копировать не обязательно, но зато это удобнее):
Код: выделить все
mkdir ~/openvpn
cp -vR /usr/share/easy-rsa/2.0/* ~/openvpn
cd ~/openvpn

Теперь нам нужно экспортировать необходимые переменные (очень важно находиться в папке, из которой будут запускаться скрипты, у меня это ~/openvpn). Если в этом файле (./vars) подправить последние 5 строчек, то в дальнейшем в большинстве случаев вам не нужно будет вводить одно и тоже :) Вот эти строчки (дефолтовые):
Код: выделить все
export KEY_COUNTRY="RU"
export KEY_PROVINCE="MO"
export KEY_CITY="MOSCOW"
export KEY_ORG="HOME"
export KEY_EMAIL="ssergey@mail.ru"
export KEY_OU="ENG"

Очистка и инициализация каталога с ключами
Код: выделить все
./clean-all

Выполняем назначение переменных
Код: выделить все
source ./vars

Создаём корневой сертификат Root Certificate Authority (CA)
Код: выделить все
./build-dh

Создаём сертификат сервера (aster.free-adm.ru.crt aster.free-adm.ru.key aster.free-adm.ru.csr)
Реально в данном случае .csr не нужен
Код: выделить все
./build-key-server aster.free-adm.ru

Создаём DIFFIE-HELLMAN PARAMETERS. Криптографический протокол, позволяющий двум и более сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи. Полученный ключ используется для шифрования дальнейшего обмена с помощью алгоритмов симметричного шифрования.
Код: выделить все
./build-dh

ключ для tls аутентификации
Код: выделить все
openvpn --genkey --secret keys/tls.key

Создаём сертификат для клиентов
Код: выделить все
./build-key client.free-adm.ru
...
по мере необходимости
./build-key helpdesk.server.ru
./build-key mail.server.ru
./build-key KM.Guest

А теперь рассмотрим какие, из полученных файлов, нужны на сервере, а какие на клиенте
Код: выделить все
ls -l
-rw-r--r--. 1 root root 1679 апр 17  2015 ca.crt                                     SERVER, CLIENT
-rw-------. 1 root root 1704 апр 17  2015 ca.key                                     SECURITY, SERVER ONLY
-rw-r--r--. 1 root root 5264 апр 17  2015 client.free-adm.ru.crt                     CLIENT ONLY
-rw-------. 1 root root 1708 апр 17  2015 client.free-adm.ru.key                     SECURITY, CLIENT ONLY
-rw-r--r--. 1 root root  424 апр 17  2015 dh2048.pem                                 SERVER ONLY
-rw-r--r--. 1 root root 5407 апр 17  2015 server.free-adm.ru.crt                     SERVER ONLY
-rw-------. 1 root root 1708 апр 17  2015 server.free-adm.ru.key                     SECURITY, SERVER ONLY
Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 417
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 18:50



 Конфигурационные файлы сервера 
e /etc/openvpn/server.conf
Код: выделить все
local 195.0.1.15
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 0.0.0.0 255.255.255.0"
push "dhcp-option WINS 192.168.1.254"
push "redirect-gateway"  #def1 bypass-dhcp"
push "dhcp-option DNS 192.168.1.254"
push "dhcp-option DOMAIN buch.ru"
client-to-client
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log-append /var/log/openvpn.log
verb 3
mute 5

Замечу, что если у всех сетей будут одинаковые адреса (например, 3 сети и во всех адреса 192.168.0.0/24), то компы, на которых стоит OpenVPN, могут жутко глючить с передачей пакетов, а то и вовсе не будут видеть сеть (ни OpenVPN, ни реальную).

Проблема с автозапуском openvpn решается правкой файлoв запуска сервисов openvpn-server@.service openvpn@.service
e /usr/lib/systemd/system/openvpn-server@.service
Код: выделить все
[Unit]
...
After=rsyslog.service network-online.target
...

e /usr/lib/systemd/system/openvpn@.service
Код: выделить все
[Unit]
...
After=rsyslog.service
...
Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 417
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 18:51



 Конфигурационный файл клиента 
Код: выделить все
client
dev tun
proto udp
port 1194
remote gate.free-adm.ru 1194
ca 'C:\\Program Files\\OpenVPN\\config\\free-adm\\ca.crt'
cert 'C:\\Program Files\\OpenVPN\\config\\free-adm\\sergey-clt.crt'
key 'C:\\Program Files\\OpenVPN\\config\\free-adm\\sergey-clt.key'
; если OpenVPN не удалось узнать имя удаленного хоста по DNS, то через указанное количество секунд попытаться переподключиться.
resolv-retry infinite
mute-replay-warnings
; использовать динамический порт для подключения (только для клиента)
nobind
; указывает не перечитывать файлы ключей при перезапуске туннеля.
persist-key
; данная опция оставляет без изменения устройства tun/tap при перезапуске OpenVPN.
persist-tun
comp-lzo
verb 5
cipher AES-128-CBC
redirect-gateway
route-method exe
route-delay 2

Примерная структура каталогов с конфигурациями на клиенте
Код: выделить все
cd "C:\Program Files\OpenVPN\config\"
C:\Program Files\OpenVPN\config
λ tree /f
Структура папок
│       cent.ovpn
│       free-adm.ovpn
│       srv01.free-adm.ovpn

├───cent
│               ca.crt
│               client.free-adm.ru.crt
│               client.free-adm.ru.key

├───free-adm
│               ca.crt
│               sergey-clt.crt
│               sergey-clt.key

└───srv01.free-adm
                ca.crt
                User.crt
                User.key

Теперь можно запустить OpenVPN и проверить работу (потом лучше остановить, зачем он нам
постоянно работающий на клиентах?). Например, если файл конфигурации /etc/openvpn/client/client.conf, то название сервиса будет openvpn-client@client.service:
Код: выделить все
systemctl enable openvpn-client@client
systemctl start openvpn-client@client

На windows все аналогично, за исключением путей.Ключи и сертификаты кладем в папку C:\Program Files\OpenVPN\config\srv01.free-adm, а конфигурацию в C:\Program Files\OpenVPN\config, только расширение я указал .ovpn, т.к. это нужно клиенту windows, т.е. имя файла конфигурации у меня будет таким - srv01.free-adm.ovpn.
Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 417
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 18:53



 Встраивание сертификата и ключей в конфигурационный файл 
Для кроссплатформенной универсализаци конфигурационного файла рекомендуется изменить способ подключения сертификатов и ключей. Для этого нужно заменить соответствующие директивы
Код: выделить все
ca 'C:\\Program Files\\OpenVPN\\config\\free-adm\\ca.crt'
cert 'C:\\Program Files\\OpenVPN\\config\\free-adm\\sergey-clt.crt'
key 'C:\\Program Files\\OpenVPN\\config\\free-adm\\sergey-clt.key'

на следующие конструкции:
Код: выделить все
<ca>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</ca>

<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
...
-----END OpenVPN Static key V1-----
</tls-auth>

<cert>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
</key>
Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 417
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 13 апр 2022, 18:36

Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 417
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 19 апр 2022, 11:42

 Импорт подключение из OVPN файла 
Воспользуемся консольной утилитой nmcli для быстрого импортирования подключения из OVPN файла:
Код: выделить все
nmcli connection import file /path/client.ovpn type openvpn

Здесь /path/client.ovpn – путь к OVPN файлу на диске.
Встроенные сертификаты и ключи будут автоматически импортированы и сохранены в каталоге ~/.cert/nm-openvpn, что не вызовет проблем с SELinux.
Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 417
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный


Вернуться в Fedora

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron