LINUX.ORG.RU
ФорумAdmin

tls-crypt-v2 openvpn

 


0

1

Здорова всем. Решил воспользоваться новой версией 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>

Гм. А что за канал?

Внутри локальной сети не пробовал поднимать vpn и проверять скорость?

vel ★★★★★ ()
Ответ на: комментарий от vel

Я подключаюсь с компьютера через ethernet к роутеру микротик, микротик по вайфай к мобильному телефону(он как точка доступа) и к vds в Москве где установлен опенвпн. Да скорость то сначала нормальная потом только падает рандомно(может и 2 часа все норм быть) и только на новых ключах tls-crypt-v2

mio_linux ()
Последнее исправление: mio_linux (всего исправлений: 1 )

Конкретно за 2.5 не знаю, но была похожая борода, связанная с рассогласованием в настройках обмена ключами. Может, как-то поможет:

--reneg-sec n Renegotiate data channel key after n seconds (default=3600).

When using dual-factor authentication, note that this default value may cause the end user to be challenged to reauthorize once per hour.

Also, keep in mind that this option can be used on both the client and server, and whichever uses the lower value will be the one to trigger the renegotiation. A common mistake is to set --reneg-sec to a higher value on either the client or server, while the other side of the con‐ nection is still using the default value of 3600 seconds, meaning that the renegotiation will still occur once per 3600 seconds. The solution is to increase --reneg-sec on both the client and server, or set it to 0 on one side of the connection (to disable), and to your chosen value on the other side.

https://forum.netgate.com/topic/121744/разрывается-подключение-openvpn/2

NDfan ()
Ответ на: комментарий от NDfan

на серваке поставил 3600 на клиенте 0. Попробую, может поможет

mio_linux ()
Ответ на: комментарий от NDfan

По ходу на самом деле рассинхрон был какой-то. С –reneg-sec 3600 на сервере и –reneg-sec 0 на клиенте все нормуль стало, тест уже больше 7 часов. Странно, пользуюсь openvpn почти лет 5 и ни разу не сталкивался с этим. Неделю наверно ковырял всякие persist-key, float и пр.

mio_linux ()
Ответ на: комментарий от mio_linux

У меня на стоковом сервисе от pfSense такое было (с двухфактором). Правда, туннель не упал особо, и клиент за полминуты прочихался.

С –reneg-sec 3600 на сервере и –reneg-sec 0 на клиенте

Наверно, если отдать конфиг другому пользователю, и он на настройку под себя подшаманит, то у него тоннель затроит. Поэтому советуют наоборот на сервере 0 ставить.

С другой стороны, может и нефига ему умничать, пусть страдает ))

NDfan ()
Ответ на: комментарий от NDfan

а на андроиде клиенте действует эта функция? так-то идея хорошая. Надо проверить на андроиде, если действует, то заменю. А так я думаю на 3 часа перепроверку изменить, как думаешь, норм или лучше оставить на час?

mio_linux ()
Ответ на: комментарий от mio_linux

Прикольно. Я тот же bundle настроек (с сертами) в андроид загрузил, поднял условное ssh-подключение с top-ом, и оставил на ночь. Судя по логам, всё корректно отработало, как на десктопе, и параметры нужные в логе тоже мелькали.

Так что лично не вижу смысла интервал больше ставить, раз работает штатно.

NDfan ()
Ответ на: комментарий от NDfan

ovpn на ведре немного кастрированный. Сегодня проверил, вроде работает. поставил на серваке 0. Удобней на самом деле менять если что без правки конфига сервака

mio_linux ()
Ответ на: комментарий от mio_linux

ovpn на ведре немного кастрированный.

Потому что tap не поддерживает, или ещё попадались какие-то расхождения с десктопом?

NDfan ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.