Здорова всем. Решил воспользоваться новой версией openvpn 2.5 и сделать ключи tls-crypt-v2 версии 2 со всякими плюшками типа метаданных и их верификации. В общем все работает, но есть одна проблема: как то рандомно пропадает скорость канала вообще до невозможности что-то загрузить(в норм режиме 40 мбит) при этом туннель не рвется keepalive 10 43 установлен и explicit-exit-notify 2 . Переподключаюсь и все нормально. Пробовал только на udp. На tls-crypt таких проблем нет. Я понимаю, что пока мало опыта у всех с этой версией, но может уже решали как-то эту проблему. В логах ничего необычного нет.
конфиг сервера
port 1196
proto udp
;proto tcp
block-ipv6
;mode server
auth-nocache
# поддерживается в системах, отличных от Windows, улучшает использование вашего ЦП
# при работе с UDP-пакетами, используя неблокирующие операции записи. Это относится только к UDP-туннелям.
fast-io
#"dev tun" создаст маршрутизируемый IP туннель, "dev tap" создаст ethernet туннель. Используйте "dev tap0"
# если вам нужен мост и объедините полученный tap0 виртуальный интерфейс в режиме моста с вашим ethernet интерфейсом.
;dev tap1
dev tun1
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server.crt
key /etc/openvpn/certs/server.key
dh /etc/openvpn/certs/dh.pem
crl-verify /etc/openvpn/certs/crl.pem
# Виртуальная сеть, которая будет установлена между клиентом и сервером. Закоментируйте эту строку, если вы используете ethernet мост.
server 10.10.1.0 255.255.255.0
# Укажите хранить соответствие клиент <-> виртуальный IP адрес в файле. Если OpenVPN будет остановлен или
# перезапущен, переприсоединившиеся клиенты смогут получить тот же виртуальный IP адрес из пула, что был назначен ранее.
ifconfig-pool-persist /etc/openvpn/ccd/ipp.txt
# путь к каталогу индивидуальных клиентских конфигураций
client-config-dir /etc/openvpn/ccd
# Specify a directory dir for temporary files. This directory will be used by openvpn processes and script to communicate temporary data
# with openvpn main process. Note that the directory must be writable by the OpenVPN process after it has dropped it's root privileges.
tmp-dir /etc/openvpn/ccd
# Установите серверный режим для ethernet моста. Вы должны сначала в своей ОС настроить мост
# между TAP и NIC интерфейсом. Затем вы должны вручную установить IP/маску на мост, к примеру 10.8.0.4/255.255.255.0.
# В заключении мы должны установить диапазон IP адресов в этой подсети для выделения клиентам
# (начало=10.8.0.50 конец=10.8.0.100). Оставьте эту строку закоментированной, если вы не используете ethernet мост.
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
# Установите клиенту соответствующие маршруты для возможности работать с другими подсетями за сервером. Помните, что эти подсети так же
# должны знать маршрут к клиентам адресного пула OpenVPN (10.10.10.0/255.255.255.0)
;push "route 10.10.2.0 255.255.255.0"
;push "route 10.10.3.0 255.255.255.0"
;learn-address ./script
# Разрешаем клиентам обмениваться пакетами(по умолчанию клиент видит только сервер)
client-to-client
# Расскомментировать,если используется один ключ/сертификат или одно имя клиента(common name) на несколько клиентов
;duplicate-cn
# Максимальное количество клиентов
max-clients 2
# Allow remote to change its IP address/port, such as through DHCP (this is the default if --remote is not used)
;float
# Проверяем соединение каждые 10 секунд, если его нет то через 120 секунд переподключаем в режиме server mode
keepalive 10 43
#то же что и keepalive
;inactive 60
;ping 10
;ping-exit 2
;ping-restart 20
;ping-timer-rem
#Configure a multi-homed UDP server
;multihome
#Disable Paging -- ensures key material and tunnel data will never be written to disk.
mlock
#In UDP server mode send [RESTART] command on exit/restart to connected clients. n = 1 - reconnect to same server, 2 - advance
explicit-exit-notify 2
# Включаем TLS
tls-crypt-v2 /etc/openvpn/certs/tlsv2_server.key
tls-crypt-v2-verify /etc/openvpn/ccd/metadata
script-security 2
tls-crypt /etc/openvpn/certs/tls.key
;tls-timeout 120
tls-server
tls-version-min 1.2
;tls-version-max 1.3
#For OpenSSL, the --tls-cipher is used for TLS 1.2 and below. For TLS 1.3 and up, the --tls-ciphersuites setting is used. mbed TLS has no TLS 1.3 support yet and only the --tls-cipher setting is used.
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384
tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256
# шифрование
auth SHA512
;whirlpool:SHA512:RSA-SHA512:BLAKE2b512:SHA3-512
;cipher AES-256-GCM
data-ciphers CHACHA20-POLY1305:AES-256-GCM:AES-128-GCM
# сжатие
;compress lz4-v2
;compress lzo
;push "compress lz4-v2"
;push "compress lzo"
# Назначаем пользователя и группу для работы с OpenVPN
;user nobody
;group nogroup
# Не перечитывать ключи после получения SIGUSR1 или ping-restart
;persist-key
# Не закрывать или переоткрывать TUN\TAP устройство, после получения SIGUSR1 или ping-restart
;persist-tun
# Write operational status to file every n seconds.
status /var/log/openvpn/server_status.log 60
# Choose the status file format version number. Currently, n can be 1, 2, or 3 (default=1).
status-version 3
# "log" будет обрезать файл журнала при запуске OpenVPN. Использовать один или другой (но не оба).
log /var/log/openvpn/server.log
# "log-append" будет добавляться. Использовать один или другой (но не оба).
;log-append /var/log/openvpn/server_log_append.log
# Установите необходимый уровень логирования. 0 - ничего, за исключением фатальных ошибок 4 - подойдет для получения общих сведений
# 5 и 6 пригодяться для отладки проблем соединения 9 - максимально возможная информация
verb 6
# Запрещает повтор сообщений. Не более 20 идущих друг за другом сообщений одного типа будут направлены в лог.
mute 20
# весь трафик идет через впн local опция в одной беспроводной сети
push "redirect-gateway def1 bypass-dhcp bypass-dns"
;push "redirect-gateway def1 autolocal local bypass-dhcp bypass-dns"
# устанавливает виртуальный адрес сервера
;ifconfig 192.168.10.1 255.255.255.0
# устанавливает диапазон виртуальных адресов для клиентов
;ifconfig-pool 192.168.10.2 192.168.10.99
# Топология сети tun только Должна быть подсетью (адресация по IP) если клиенты Windows v2.0.9 и ниже не должны
# поддерживаться (тогда net30, то есть / 30 для каждого клиента) По умолчанию net30 (не рекомендуется)
topology subnet
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#утечка dns
push "block-outside-dns"
#realtime получить разного рода информацию о текущих клиентских подключениях к серверу
#нужно установить telnet сначала на сервере
;management localhost 7778
#повышаем скорость
;sndbuf 524288
;rcvbuf 524288
;tun-mtu 1472
;fragment 0
;mssfix 1431
windows-driver wintun
remote-cert-tls server
client
auth-nocache
#On exit/restart, send exit signal to server/remote. n = # of retries, default=1. udp only
explicit-exit-notify 1
# Uncomment this is you are not on Windows udp only
;fast-io
#Accept certain config file options from the peer as if they were part of the local config file. Must be specified when connecting to a '--mode server' remote host
;pull
#Filter each option received from the server if it starts with the text t. The action flag accept, ignore or reject causes the option
#to be allowed, removed or rejected with error. May be specified multiple times, and each filter is applied in the order of appearance.
;pull-filter accept|ignore|reject text
#When this option is set, OpenVPN will not drop incoming tun packets with same destination as host
;allow-recursive-routing
block-ipv6
dev tun1
proto udp
remote мой айпи
# необходимо для DynDNS
resolv-retry infinite
nobind
;persist-key
;persist-tun
auth SHA512
;cipher AES-256-GCM
data-ciphers CHACHA20-POLY1305:AES-256-GCM:AES-128-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384
tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256
;keepalive 10 43
;compress lz4-v2
;compress lzo
verb 6
mute 20
;float
#повышаем скорость
;sndbuf 524288
;rcvbuf 524288
;tun-mtu 1472
;fragment 1472
#для udp ошибки bad packet id
;mssfix 1431
;<tls-crypt>
;</tls-crypt>
<tls-crypt-v2>
здесь ключ
</tls-crypt-v2>
<ca>
здесь ключ
</ca>
<cert>
здесь ключ
</cert>
<key>
здесь ключ
</key>