Установка и настройка OpenVPN на Debian 8: различия между версиями
imported>Supportadmin |
imported>Vix |
||
(не показаны 32 промежуточные версии 2 участников) | |||
Строка 43: | Строка 43: | ||
'''Обновить libssl, возможно не критично, но это ssl :D''' | '''Обновить libssl, возможно не критично, но это ssl :D''' | ||
===Конфигурации сервера и клиента для двух интерфейсов tun и tap | |||
===Конфигурации сервера и клиента для двух интерфейсов tun и tap одновременно=== | |||
В Debian 8 существует особенность запуска двух и более конфигураций openvpn. Эта особенность в "любимом" systemd. При установке активируется '''openvpn@server.service'''. И '''''запускается только один конфигурационный файл и только с именем server.conf''''' (3 часа мозг ломали). Исправляется это деактивацией openvpn@server.service. Затем в каталоге /lib/systemd/system сделать копии файла openvpn@server.service и назвать их по именам конфигурационных файлов. В моём случае файлы конфигураций называются server_tap.conf и server_tun.conf по задействованным интерфейсам. Затем их активировать | В Debian 8 существует особенность запуска двух и более конфигураций openvpn. Эта особенность в "любимом" systemd. При установке активируется '''openvpn@server.service'''. И '''''запускается только один конфигурационный файл и только с именем server.conf''''' (3 часа мозг ломали). Исправляется это деактивацией openvpn@server.service. Затем в каталоге /lib/systemd/system сделать копии файла openvpn@server.service и назвать их по именам конфигурационных файлов. В моём случае файлы конфигураций называются server_tap.conf и server_tun.conf по задействованным интерфейсам. Затем их активировать | ||
Строка 64: | Строка 65: | ||
На клиент положить только сертификат клиента и конфиг. Сертификат может быть с паролем, может быть без. Как сделаете (смотри картинки по генерации сертификатов внимательно). На клиенте тоже обновить версию openvpn до серверной (может и не надо но в 2.4.0 есть lz4 сжатие и работать будет только на 2.4.0 клиенте). | На клиент положить только сертификат клиента и конфиг. Сертификат может быть с паролем, может быть без. Как сделаете (смотри картинки по генерации сертификатов внимательно). На клиенте тоже обновить версию openvpn до серверной (может и не надо но в 2.4.0 есть lz4 сжатие и работать будет только на 2.4.0 клиенте). | ||
Для выдачи клиентам фиксированных постоянных ip, на сервере в каталогах /etc/openvpn/ccd или /etc/openvpn/ddc нужно создавать файлики по одному на клиента | Для выдачи клиентам фиксированных постоянных ip, на сервере в каталогах /etc/openvpn/ccd или /etc/openvpn/ddc нужно создавать файлики по одному на клиента. | ||
Имя файла должно совпадать с именем сертификата (при генерации (common name) или можно посмотреть в логах) | |||
<nowiki> | <nowiki> | ||
ifconfig-push 10. | /etc/openvpn/ccd/lopic.crt для tap интерфейса | ||
push " | |||
ifconfig-push 10.7.0.13 255.255.255.0 | |||
push "dhcp-option DNS 10.7.0.1" | |||
push "dhcp-option DOMAIN office.local" | |||
push "route 10.7.0.0 255.255.255.0 10.7.0.1" | |||
push "route 10. | |||
</nowiki> | </nowiki> | ||
<nowiki> | |||
/etc/openvpn/ddc/lopic.crt для tun интерфейса | |||
ifconfig-push 10.7.0.10 255.255.255.0 | |||
push "dhcp-option DNS 10.7.0.1" | |||
push "dhcp-option DOMAIN office.local" | |||
push "route 10.7.0.0 255.255.255.0 10.7.0.9" | |||
</nowiki> | |||
Для клиентов без явно указания ip (без файла) будет выдан ip динамически. | |||
Обратите внимание, что формат параметров в команде ifconfig-push для разных интерфейсов разный. Для tap - ip и маска сети. Шлюз по умолчанию первый ip в подсети. Для tun интерфейса ip клиента и ip шлюза для 30-й подсети [https://community.openvpn.net/openvpn/wiki/Topology] (как задействовать еще два адреса из 4-х адресной сетки пока не ясно). Для tun клиентов с динамическим ip маршруты добавлять на клиенте вручную. По умолчанию будет виден только сервер. | |||
====/etc/openvpn/server_tap.conf==== | ====/etc/openvpn/server_tap.conf==== | ||
#указывает программе работать в режиме сервера | |||
#указывает программе работать в режиме сервера | mode server | ||
mode server | |||
#активирует работу Transport Layer Security (криптографический протокол) сервера | |||
#активирует работу Transport Layer Security (криптографический протокол) сервера | tls-server | ||
tls-server | |||
#программа будет работать в режиме демона, если нет в этом необходимости - просто раскомментируйте строку | |||
#программа будет работать в режиме демона, если нет в этом необходимости - просто раскомментируйте строку | daemon | ||
daemon | |||
#локальный ip или имя хоста, на котором будет работать OpenVPN. Актуально, если на локальной машине несколько адресов. | |||
#локальный ip или имя хоста, на котором будет работать OpenVPN. Актуально, если на локальной машине несколько адресов. | local 192.168.0.226 | ||
local 192.168.0.226 | |||
#указываем порт, по которому будет работать OpenVPN (обязательно поменять с 1194!!!) | |||
#указываем порт, по которому будет работать OpenVPN (обязательно поменять с 1194!!!) | port 1194 | ||
port 1194 | |||
#выбираем протокол TCP (если необходим UDP, тогда: proto udp) | |||
#выбираем протокол TCP (если необходим UDP, тогда: proto udp) | proto tcp-server | ||
proto tcp-server | |||
#используемый тип интерфейса - L2 туннель (для L3-туннеля: dev tun) | |||
#используемый тип интерфейса - L2 туннель (для L3-туннеля: dev tun) | dev tap | ||
dev tap | |||
#указываем файл с ключем сервера | |||
#указываем файл с ключем сервера | pkcs12 /etc/openvpn/easy-rsa/keys/server-cert.p12 | ||
pkcs12 /etc/openvpn/easy-rsa/keys/server-cert.p12 | |||
#указываем файл Диффи Хельман | |||
#указываем файл Диффи Хельман | dh /etc/openvpn/easy-rsa/keys/dh2048.pem | ||
dh /etc/openvpn/easy-rsa/keys/dh2048.pem | |||
#задаем IP-адрес сервера и маску подсети | |||
#задаем IP-адрес сервера и маску подсети | ifconfig 10.8.0.1 255.255.255.0 | ||
ifconfig 10.8.0.1 255.255.255.0 | |||
#путь к каталогу индивидуальных клиентских конфигураций | |||
client-config-dir /etc/openvpn/ccd | |||
#Для назначения статических ip-адресов клиентов | |||
#ifconfig-pool-persist ipp.txt | |||
#путь к каталогу индивидуальных клиентских конфигураций | |||
client-config-dir /etc/openvpn/ccd | |||
#Для назначения статических ip-адресов клиентов | #push "dhcp-option DNS 10.8.0.1" | ||
#ifconfig-pool-persist ipp.txt | #push "dhcp-option DOMAIN net.local" | ||
#push "dhcp-option DOMAIN-SEARCH net.local" | |||
#push "redirect-gateway" | |||
#push "dhcp-option DNS 10.8.0.1" | #пинг каждые 10 секунд для поддержания канала связ | ||
#push "dhcp-option DOMAIN net.local" | keepalive 10 120 | ||
#push "dhcp-option DOMAIN-SEARCH net.local" | |||
#push "redirect-gateway" | #Связь между клиентами | ||
client-to-client | |||
#пинг каждые 10 секунд для поддержания канала связ | |||
keepalive 10 120 | push "route 10.8.0.0 255.255.255.0" | ||
#Связь между клиентами | # включаем шифрацию пакетов | ||
client-to-client | ''##cipher BF-CBC'' | ||
'''# рекомендуется:''' | |||
push "route 10.8.0.0 255.255.255.0" | '''cipher AES-256-CBC''' | ||
# включаем шифрацию пакетов | # сжатие трафика | ||
cipher BF-CBC | ''##comp-lzo'' | ||
'''# рекомендуется:''' | |||
# сжатие трафика | '''comp-lzo adaptive''' | ||
comp-lzo | |||
# максимум клиентов | |||
# максимум клиентов | max-clients 100 | ||
max-clients 100 | |||
# Не перечитывать ключи после получения | |||
# Не перечитывать ключи после получения | # SIGUSR1 или ping-restart | ||
# SIGUSR1 или ping-restart | persist-key | ||
persist-key | |||
# Не закрывать и переоткрывать TUN\TAP | |||
# Не закрывать и переоткрывать TUN\TAP | # устройство, после получения | ||
# устройство, после получения | # SIGUSR1 или ping-restart | ||
# SIGUSR1 или ping-restart | persist-tun | ||
persist-tun | |||
# логгирование (не забудьте создать эту директорию /var/log/openvpn/) | |||
# логгирование (не забудьте создать эту директорию /var/log/openvpn/) | status /var/log/openvpn/tap-status.log | ||
status /var/log/openvpn/tap-status.log | log /var/log/openvpn/tap.log | ||
log /var/log/openvpn/tap.log | |||
# Уровень информации для отладки 0 - 11 | |||
# Уровень информации для отладки 0 - 11 | verb 6 | ||
verb 6 | |||
====/etc/openvpn/server_tun.conf==== | ====/etc/openvpn/server_tun.conf==== | ||
mode server | mode server | ||
tls-server | tls-server | ||
daemon | daemon | ||
local 192.168.0.226 | local 192.168.0.226 | ||
port 1194 | port 1194 | ||
# TCP or UDP server? | # TCP or UDP server? | ||
##;proto tcp | ##;proto tcp | ||
proto udp | proto udp | ||
##;dev tap | ##;dev tap | ||
dev tun | dev tun | ||
#tun-mtu 1492 | #tun-mtu 1492 | ||
#указываем файл с ключем сервера | #указываем файл с ключем сервера | ||
pkcs12 /etc/openvpn/easy-rsa/keys/server-cert.p12 | pkcs12 /etc/openvpn/easy-rsa/keys/server-cert.p12 | ||
#указываем файл Диффи Хельман | #указываем файл Диффи Хельман | ||
dh /etc/openvpn/easy-rsa/keys/dh2048.pem | dh /etc/openvpn/easy-rsa/keys/dh2048.pem | ||
## ipaddr server | ## ipaddr server | ||
server 10.7.0.0 255.255.255.0 | server 10.7.0.0 255.255.255.0 | ||
#### clients ip | |||
client-config-dir ddc | |||
#push dhcp-option DOMAIN net.local | |||
client-to-client | |||
######### | |||
#auth MD5 | |||
# включаем шифрацию пакетов | |||
''##cipher BF-CBC'' | |||
'''# рекомендуется:''' | |||
'''cipher AES-256-CBC''' | |||
keepalive 10 120 | |||
# сжатие трафика | |||
''##comp-lzo'' | |||
'''# рекомендуется:''' | |||
'''comp-lzo adaptive''' | |||
# максимум клиентов | |||
max-clients 100 | |||
# Не перечитывать ключи после получения | |||
# SIGUSR1 или ping-restart | |||
persist-key | |||
# Не закрывать и переоткрывать TUN\TAP | |||
# устройство, после получения | |||
# SIGUSR1 или ping-restart | |||
persist-tun | |||
# логгирование (не забудьте создать эту дирректорию /var/log/openvpn/) | |||
status /var/log/openvpn/tun-status.log | |||
log /var/log/openvpn/tun.log | |||
# Уровень информации для отладки | |||
verb 6 | |||
====клиент Linux tap /etc/openvpn/client.conf==== | |||
client | |||
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 | ||
'''cipher AES-256-CBC''' | |||
'''comp-lzo adaptive''' | |||
status /var/log/openvpn/openvpn-status.log | |||
log /var/log/openvpn/openvpn.log | |||
verb 6 | |||
mute 20 | |||
auth-nocache | |||
log /var/log/openvpn/ | |||
verb 6 | |||
Чтобы клиент подключился нужно активировать openvpn, иначе ведет себя как мертвый суслик | |||
<nowiki> | <nowiki> | ||
systemctl enable openvpn | |||
/etc/init.d/openvpn restart | |||
</nowiki> | </nowiki> | ||
Строка 282: | Строка 287: | ||
</nowiki> | </nowiki> | ||
Чтобы клиент подключился нужно активировать openvpn, иначе ведет себя как мертвый суслик | |||
<nowiki> | |||
systemctl enable openvpn | |||
/etc/init.d/openvpn restart | |||
</nowiki> | |||
====клиент Windows c:\Program files\Openvpn\conf\client.ovpn==== | ====клиент Windows c:\Program files\Openvpn\conf\client.ovpn==== | ||
Строка 290: | Строка 300: | ||
Их надо удалить. Лог пишется в папке C:\Users\Пользователь\Openvpn | Их надо удалить. Лог пишется в папке C:\Users\Пользователь\Openvpn | ||
===КОСТЫЛЬ №1 | ===КОСТЫЛЬ №1 Автостарт openvpn 2.4.0 в systemd=== | ||
Не знаю, баг это или фича, но на сервере сервисы openvpn.service и openvpn@.service активны, загружены и исполнены, а интерфейса нет. | |||
''' | '''Как сдел я:''' | ||
<nowiki> | |||
/etc/scripts/ovpn_restart.sh | |||
#!/bin/bash | |||
sleep 10 | sleep 10 | ||
systemctl restart openvpn | systemctl restart openvpn | ||
exit 0 | exit 0 | ||
</nowiki> | </nowiki> | ||
<nowiki> | <nowiki> | ||
/etc/systemd/system/ovpn.service | |||
[Unit] | [Unit] | ||
Description=OpenVPN restart kostil | Description=OpenVPN restart kostil | ||
Строка 323: | Строка 329: | ||
[Install] | [Install] | ||
WantedBy=multi-user.target</nowiki> | WantedBy=multi-user.target</nowiki> | ||
<nowiki>systemctl enable ovpn.service</nowiki> | |||
Конечно наколхозил, но работает :D | Конечно наколхозил, но работает :D | ||
===Пропускная способность=== | ===Пропускная способность=== | ||
На HP procurve c 100Мбит/с интерфейсами через ssh прокачал 11.3 Мбайт/с | На HP procurve c 100Мбит/с интерфейсами через ssh прокачал 11.3 Мбайт/с | ||
== Подключение несколько клиентских соединений == | |||
* создаем несколько конфигурационных файлов: | |||
/etc/openvpn/client_office2.conf | |||
прописываем в нем все необходимое: ключ, ip.. - не забываем указать новый интерфейс '''(dev/tap1)''' | |||
.. и | |||
/etc/openvpn/client_office3.conf | |||
прописываем в нем все необходимое: ключ, ip.. - не забываем указать новый интерфейс '''(dev/tap2)''' | |||
* создаем в /lib/systemd/system | |||
cp /lib/systemd/system/openvpn@.service /lib/systemd/system/openvpn@client_office2 | |||
cp /lib/systemd/system/openvpn@.service /lib/systemd/system/openvpn@client_office3 | |||
* содержимое для Debian 9 такое: | |||
[Unit] | |||
Description=OpenVPN service for %I | |||
After=network-online.target | |||
Wants=network-online.target | |||
Documentation=man:openvpn(8) | |||
Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage | |||
Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO | |||
[Service] | |||
Type=notify | |||
PrivateTmp=true | |||
WorkingDirectory=/etc/openvpn/server | |||
ExecStart=/usr/sbin/openvpn --status %t/openvpn-server/status-%i.log --status-version 2 --suppress-timestamps --config %i.conf | |||
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE CAP_AUDIT_WRITE | |||
LimitNPROC=10 | |||
DeviceAllow=/dev/null rw | |||
DeviceAllow=/dev/net/tun rw | |||
ProtectSystem=true | |||
ProtectHome=true | |||
KillMode=process | |||
RestartSec=5s | |||
Restart=on-failure | |||
[Install] | |||
WantedBy=multi-user.target | |||
* Далее обновляем информацию systermd | |||
systemctl daemon-reload | |||
* Активируем службы интерфейсов: | |||
systemctl enable openvpn@client_office2 | |||
systemctl enable openvpn@client_office3 | |||
* Запускаем openvpn для заданных интерфейсов | |||
systemctl start openvpn@client_office2 | |||
systemctl start openvpn@client_office3 | |||
ИСТОЧНИКИ и ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: | |||
<hr> | |||
* [[Ускоряем OpenVPN или немного о размере буфера.]] |
Текущая версия от 02:38, 27 августа 2020
Генерация сертификатов
Генерация сертификатов как здесь.
Подключить репозитории 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
Конфигурации сервера и клиента для двух интерфейсов tun и tap одновременно
В Debian 8 существует особенность запуска двух и более конфигураций openvpn. Эта особенность в "любимом" systemd. При установке активируется openvpn@server.service. И запускается только один конфигурационный файл и только с именем server.conf (3 часа мозг ломали). Исправляется это деактивацией openvpn@server.service. Затем в каталоге /lib/systemd/system сделать копии файла openvpn@server.service и назвать их по именам конфигурационных файлов. В моём случае файлы конфигураций называются server_tap.conf и server_tun.conf по задействованным интерфейсам. Затем их активировать
systemctl enable openvpn@server_tap.service systemctl enable openvpn@server_tun.service
Это позволит управлять (start, stop, restart) интерфейсами по отдельность
Разница в интерфейсах:
- tun выдает 4-х адресную сеть (/30) и по dhcp и настройках клиента тоже это учитывается, tap одна большая сеть
- tun позволяет маршрутизацию
- для tun используется параметр server, для tap - ifconfig
- tun - L3 интерфейс, tap - L2 интерфейс
- и много чего [1], [2]
ВНИМАНИЕ!!! Копия dh2048.pem с сервера или какая там у вас будет глубина шифрования на клиенте НЕ НУЖНА.
На клиент положить только сертификат клиента и конфиг. Сертификат может быть с паролем, может быть без. Как сделаете (смотри картинки по генерации сертификатов внимательно). На клиенте тоже обновить версию openvpn до серверной (может и не надо но в 2.4.0 есть lz4 сжатие и работать будет только на 2.4.0 клиенте).
Для выдачи клиентам фиксированных постоянных ip, на сервере в каталогах /etc/openvpn/ccd или /etc/openvpn/ddc нужно создавать файлики по одному на клиента. Имя файла должно совпадать с именем сертификата (при генерации (common name) или можно посмотреть в логах)
/etc/openvpn/ccd/lopic.crt для tap интерфейса ifconfig-push 10.7.0.13 255.255.255.0 push "dhcp-option DNS 10.7.0.1" push "dhcp-option DOMAIN office.local" push "route 10.7.0.0 255.255.255.0 10.7.0.1" /etc/openvpn/ddc/lopic.crt для tun интерфейса ifconfig-push 10.7.0.10 255.255.255.0 push "dhcp-option DNS 10.7.0.1" push "dhcp-option DOMAIN office.local" push "route 10.7.0.0 255.255.255.0 10.7.0.9"
Для клиентов без явно указания ip (без файла) будет выдан ip динамически.
Обратите внимание, что формат параметров в команде ifconfig-push для разных интерфейсов разный. Для tap - ip и маска сети. Шлюз по умолчанию первый ip в подсети. Для tun интерфейса ip клиента и ip шлюза для 30-й подсети [3] (как задействовать еще два адреса из 4-х адресной сетки пока не ясно). Для tun клиентов с динамическим ip маршруты добавлять на клиенте вручную. По умолчанию будет виден только сервер.
/etc/openvpn/server_tap.conf
#указывает программе работать в режиме сервера mode server #активирует работу Transport Layer Security (криптографический протокол) сервера tls-server #программа будет работать в режиме демона, если нет в этом необходимости - просто раскомментируйте строку daemon #локальный ip или имя хоста, на котором будет работать OpenVPN. Актуально, если на локальной машине несколько адресов. local 192.168.0.226 #указываем порт, по которому будет работать OpenVPN (обязательно поменять с 1194!!!) port 1194 #выбираем протокол TCP (если необходим UDP, тогда: proto udp) proto tcp-server #используемый тип интерфейса - L2 туннель (для L3-туннеля: dev tun) dev tap #указываем файл с ключем сервера 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 #путь к каталогу индивидуальных клиентских конфигураций client-config-dir /etc/openvpn/ccd #Для назначения статических ip-адресов клиентов #ifconfig-pool-persist ipp.txt #push "dhcp-option DNS 10.8.0.1" #push "dhcp-option DOMAIN net.local" #push "dhcp-option DOMAIN-SEARCH net.local" #push "redirect-gateway" #пинг каждые 10 секунд для поддержания канала связ keepalive 10 120 #Связь между клиентами client-to-client push "route 10.8.0.0 255.255.255.0" # включаем шифрацию пакетов ##cipher BF-CBC # рекомендуется: cipher AES-256-CBC # сжатие трафика ##comp-lzo # рекомендуется: comp-lzo adaptive # максимум клиентов max-clients 100 # Не перечитывать ключи после получения # SIGUSR1 или ping-restart persist-key # Не закрывать и переоткрывать TUN\TAP # устройство, после получения # SIGUSR1 или ping-restart persist-tun # логгирование (не забудьте создать эту директорию /var/log/openvpn/) status /var/log/openvpn/tap-status.log log /var/log/openvpn/tap.log # Уровень информации для отладки 0 - 11 verb 6
/etc/openvpn/server_tun.conf
mode server tls-server daemon local 192.168.0.226 port 1194 # TCP or UDP server? ##;proto tcp proto udp ##;dev tap dev tun #tun-mtu 1492 #указываем файл с ключем сервера pkcs12 /etc/openvpn/easy-rsa/keys/server-cert.p12 #указываем файл Диффи Хельман dh /etc/openvpn/easy-rsa/keys/dh2048.pem ## ipaddr server server 10.7.0.0 255.255.255.0 #### clients ip client-config-dir ddc #push dhcp-option DOMAIN net.local client-to-client ######### #auth MD5 # включаем шифрацию пакетов ##cipher BF-CBC # рекомендуется: cipher AES-256-CBC keepalive 10 120 # сжатие трафика ##comp-lzo # рекомендуется: comp-lzo adaptive # максимум клиентов max-clients 100 # Не перечитывать ключи после получения # SIGUSR1 или ping-restart persist-key # Не закрывать и переоткрывать TUN\TAP # устройство, после получения # SIGUSR1 или ping-restart persist-tun # логгирование (не забудьте создать эту дирректорию /var/log/openvpn/) status /var/log/openvpn/tun-status.log log /var/log/openvpn/tun.log # Уровень информации для отладки verb 6
клиент Linux tap /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 cipher AES-256-CBC comp-lzo adaptive status /var/log/openvpn/openvpn-status.log log /var/log/openvpn/openvpn.log verb 6 mute 20 auth-nocache
Чтобы клиент подключился нужно активировать openvpn, иначе ведет себя как мертвый суслик
systemctl enable openvpn /etc/init.d/openvpn restart
клиент Linux tun /etc/openvpn/client.conf
client dev tun0 proto udp 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
Чтобы клиент подключился нужно активировать openvpn, иначе ведет себя как мертвый суслик
systemctl enable openvpn /etc/init.d/openvpn restart
клиент Windows c:\Program files\Openvpn\conf\client.ovpn
Конфиг как на линукс клиенте кроме двух строк:
status /var/log/openvpn/openvpn-status.log log /var/log/openvpn/openvpn.log
Их надо удалить. Лог пишется в папке C:\Users\Пользователь\Openvpn
КОСТЫЛЬ №1 Автостарт openvpn 2.4.0 в systemd
Не знаю, баг это или фича, но на сервере сервисы openvpn.service и openvpn@.service активны, загружены и исполнены, а интерфейса нет.
Как сдел я:
/etc/scripts/ovpn_restart.sh #!/bin/bash sleep 10 systemctl restart openvpn exit 0
/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
systemctl enable ovpn.service
Конечно наколхозил, но работает :D
Пропускная способность
На HP procurve c 100Мбит/с интерфейсами через ssh прокачал 11.3 Мбайт/с
Подключение несколько клиентских соединений
- создаем несколько конфигурационных файлов:
/etc/openvpn/client_office2.conf
прописываем в нем все необходимое: ключ, ip.. - не забываем указать новый интерфейс (dev/tap1) .. и
/etc/openvpn/client_office3.conf
прописываем в нем все необходимое: ключ, ip.. - не забываем указать новый интерфейс (dev/tap2)
- создаем в /lib/systemd/system
cp /lib/systemd/system/openvpn@.service /lib/systemd/system/openvpn@client_office2 cp /lib/systemd/system/openvpn@.service /lib/systemd/system/openvpn@client_office3
- содержимое для Debian 9 такое:
[Unit] Description=OpenVPN service for %I After=network-online.target Wants=network-online.target Documentation=man:openvpn(8) Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO [Service] Type=notify PrivateTmp=true WorkingDirectory=/etc/openvpn/server ExecStart=/usr/sbin/openvpn --status %t/openvpn-server/status-%i.log --status-version 2 --suppress-timestamps --config %i.conf CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE CAP_AUDIT_WRITE LimitNPROC=10 DeviceAllow=/dev/null rw DeviceAllow=/dev/net/tun rw ProtectSystem=true ProtectHome=true KillMode=process RestartSec=5s Restart=on-failure [Install] WantedBy=multi-user.target
- Далее обновляем информацию systermd
systemctl daemon-reload
- Активируем службы интерфейсов:
systemctl enable openvpn@client_office2 systemctl enable openvpn@client_office3
- Запускаем openvpn для заданных интерфейсов
systemctl start openvpn@client_office2 systemctl start openvpn@client_office3
ИСТОЧНИКИ и ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: