Установка и настройка OpenVPN на Debian 8: различия между версиями

Материал из support.qbpro.ru
imported>Supportadmin
imported>Supportadmin
Строка 106: Строка 106:
persist-key
persist-key
persist-tun
persist-tun
dh dh2048.pem
pkcs12 lopic85.p12
pkcs12 lopic85.p12
ns-cert-type server
ns-cert-type server
Строка 123: Строка 122:
Их надо удалить. Лог пишется в папке C:\Users\Пользователь\Openvpn
Их надо удалить. Лог пишется в папке C:\Users\Пользователь\Openvpn


На клиент положить копию dh2048.pem с сервера или какая там у вас будет глубина шифрования и сертификат клиента. Сертификат может быть с паролем, может быть без. Как сделаете (смотри картинки по генерации сертификатов внимательно). На клиенте тоже обновить версию openvpn до серверной (может и не надо но d 2.4.0 есть lz4 сжатие и работать будет только на 2.4.0 клиенте).  
'''ВНИМАНИЕ!!! Копия dh2048.pem с сервера или какая там у вас будет глубина шифрования на клиенте НЕ НУЖНА.'''
 
На клиент положить только сертификат клиента и конфиг. Сертификат может быть с паролем, может быть без. Как сделаете (смотри картинки по генерации сертификатов внимательно). На клиенте тоже обновить версию openvpn до серверной (может и не надо но d 2.4.0 есть lz4 сжатие и работать будет только на 2.4.0 клиенте).  


Для выдачи клиентам постоянных ip, на сервере в каталоге /etc/openvpn/ccd нужно создавать файлики по одному на клиента:
Для выдачи клиентам постоянных ip, на сервере в каталоге /etc/openvpn/ccd нужно создавать файлики по одному на клиента:

Версия от 15:22, 12 января 2017

Генерация сертификатов

Генерация сертификатов как здесь.

Подключить репозитории OpenVPN

Подключить репозиторий и у меня подключены бэк-порты.

На всякий случай продублирую

Using OpenVPN apt repositories
We maintain several OpenVPN (OSS) software repositories. To setup the repositories you need to change to the root user. Typically this is done using sudo:

$ sudo -s
Then import the public GPG key that is used to sign the packages:

$ wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -
Next you need to create a sources.list fragment (as root) so that apt can find the new OpenVPN packages. One way to do it is this:

$ echo "deb http://build.openvpn.net/debian/openvpn/<version> <osrelease> main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
Where <version> can be one of

stable: stable releases only - no alphas, betas or RCs
testing: latest releases, including alphas/betas/RCs
release/2.3: OpenvPN 2.3 releases
release/2.4: OpenVPN 2.4 releases, including alphas/betas/RCs
and <osrelease> depends your distribution:

wheezy (Debian 7.x)
jessie (Debian 8.x)
precise (Ubuntu 12.04)
trusty (Ubuntu 14.04)
xenial (Ubuntu 16.04)
Examples:

$ echo "deb http://build.openvpn.net/debian/openvpn/testing jessie main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
$ echo "deb http://build.openvpn.net/debian/openvpn/release/2.3 wheezy main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
Now you're set for installing OpenVPN. Note that packages built for older operating system releases might work just fine on newer release of the same operating system.

Installing OpenVPN
On Debian/Ubuntu use

$ apt-get update && apt-get install openvpn

Обновить libssl, возможно не критично, но это ssl :D

Конфигурации сервера и клиента

сервер /etc/openvpn/server.conf

mode server
tls-server
daemon
local 192.168.0.226
port 1194
proto tcp-server
# - используемый тип устройства и номер
dev tap0
#указываем файл с ключем сервера
pkcs12 /etc/openvpn/easy-rsa/keys/server-cert.p12
#указываем файл Диффи Хельман
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
#задаем IP-адрес сервера и маску подсети
ifconfig 10.8.0.1 255.255.255.0
server 10.8.0.0 255.255.255.0
#### clients ip
client-config-dir /etc/openvpn/ccd
ifconfig-pool-persist ipp.txt
push "route 10.8.0.0 255.255.255.0 10.8.0.1"
push "dhcp-option DNS 10.8.0.1"
#push "dhcp-option DOMAIN net.local"
#push "dhcp-option DOMAIN-SEARCH net.local"
#push "redirect-gateway"
keepalive 10 120 # пинг каждые 10 секунд для поддержания канала связи
client-to-client
#########
#auth MD5
# включаем шифрацию пакетов
cipher BF-CBC
keepalive 10 120
# сжатие трафика
comp-lzo
# максимум клиентов
max-clients 100
# Не перечитывать ключи после получения
# SIGUSR1 или ping-restart
persist-key
# Не закрывать и переоткрывать TUN\TAP
# устройство, после получения
# SIGUSR1 или ping-restart
persist-tun
# логгирование (не забудьте создать эту дирректорию /var/log/openvpn/)
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
# Уровень информации для отладки
verb 6


клиент Linux /etc/openvpn/client.conf.

client
dev tap0
proto tcp-client
remote 192.168.0.226 1194
resolv-retry infinite
nobind
#user nobody
#group nobody
persist-key
persist-tun
pkcs12 lopic85.p12
ns-cert-type server
comp-lzo
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 6
mute 20
auth-nocache

клиент Windows c:\Program files\Openvpn\conf\client.ovpn

Конфиг как на линукс клиенте кроме двух строк:

status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log

Их надо удалить. Лог пишется в папке C:\Users\Пользователь\Openvpn

ВНИМАНИЕ!!! Копия dh2048.pem с сервера или какая там у вас будет глубина шифрования на клиенте НЕ НУЖНА.

На клиент положить только сертификат клиента и конфиг. Сертификат может быть с паролем, может быть без. Как сделаете (смотри картинки по генерации сертификатов внимательно). На клиенте тоже обновить версию openvpn до серверной (может и не надо но d 2.4.0 есть lz4 сжатие и работать будет только на 2.4.0 клиенте).

Для выдачи клиентам постоянных ip, на сервере в каталоге /etc/openvpn/ccd нужно создавать файлики по одному на клиента:

/etc/openvpn/ccd/lopic.crt

ifconfig-push 10.8.0.13 255.255.255.0
push "route 10.8.0.0 255.255.255.0 10.8.0.1"

Имя файла должно совпадать с именем сертификата (при генерации (common name) или можно посмотреть в логах). И создать файл /etc/openvpn/ipp.txt

КОСТЫЛЬ №1 Присвоение постоянных ip клиентам openvpn 2.4.0

После написания файла lopic.crt, и перезагрузки openvpn ip выдавался следующий после сервера 10.8.0.2, а не тот который прописан в lopic.crt

Нужно:

  1. ОСТАНОВИТЬ openvpn
  2. в файле /etc/openvpn/ipp.txt прописать в новой строке 'lopic,10.8.0.13' (зяпятая между именем и ip без пробелов). lopic.crt уже должен быть
  3. запустить openvpn

UPD: Перед добавлением следующего клиента скопировать ipp.txt, потом остановить openvpn, вернуть ipp.txt, внести изменения в ipp.txt и потом запустить openvpn. Это точно фича, либо моя криворукость.

КОСТЫЛЬ №2 Автостарт openvpn 2.4.0 в systemd

Не знаю, баг это или фича, но на сервере сервисы openvpn.service и openvpn@.service активны, загружены и исполнены, а интерфейса нет.

Как сдел я:

  1. /etc/scripts/ovpn_restart.sh
#!/bin/bash
sleep 10
systemctl restart openvpn
exit 0

  1. /etc/systemd/system/ovpn.service
[Unit]
Description=OpenVPN restart kostil
After=syslog.target network.target
After=openvpn.service

[Service]
Type=forking
ExecStart=/etc/scripts/ovpn_restart.sh

[Install]
WantedBy=multi-user.target
  1. systemctl enable ovpn.service

Конечно наколхозил, но работает :D


Пропускная способность

На HP procurve c 100Мбит/с интерфейсами через ssh прокачал 11.3 Мбайт/с