Я тестирую соединение OpenVPN между следующими устройствами:
Сервер (Amazon Linux 2)
Linux xxxxx 4.14.146-120.181.amzn2.x86_64 #1 SMP Fri Oct 18 17:01:06 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
OpenVPN 2.4.7 x86_64-redhat-linux-gnu [Fedora EPEL patched] [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Feb 20 2019
library versions: OpenSSL 1.0.2k-fips 26 Jan 2017, LZO 2.06
Originally developed by James Yonan
Copyright (C) 2002-2018 OpenVPN Inc <sales@openvpn.net>
Compile time defines: enable_async_push=no enable_comp_stub=no enable_crypto=yes enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=yes enable_fragment=yes enable_iproute2=yes enable_libtool_lock=yes enable_lz4=yes enable_lzo=yes enable_management=yes enable_multihome=yes enable_pam_dlopen=no enable_pedantic=no enable_pf=yes enable_pkcs11=yes enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=yes enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_small=no enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=yes enable_werror=no enable_win32_dll=yes enable_x509_alt_username=yes with_aix_soname=aix with_crypto_library=openssl with_gnu_ld=yes with_mem_check=no with_sysroot=no
Клиент (Yocto Linux)
Linux xxxxx 4.4.185-cip35 #1 PREEMPT Wed Oct 30 15:03:38 UTC 2019 i586 i586 i386 GNU/Linux
OpenVPN 2.4.6 i586-poky-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD] built on Oct 30 2019
library versions: OpenSSL 1.1.1b 26 Feb 2019, LZO 2.10
Originally developed by James Yonan
Copyright (C) 2002-2018 OpenVPN Inc <sales@openvpn.net>
Compile time defines: enable_async_push=no enable_comp_stub=no enable_crypto=yes enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=yes enable_fragment=yes enable_iproute2=yes enable_libtool_lock=yes enable_lz4=yes enable_lzo=yes enable_management=yes enable_multihome=yes enable_pam_dlopen=no enable_pedantic=no enable_pf=yes enable_pkcs11=no enable_plugin_auth_pam=no enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_silent_rules=no enable_small=no enable_static=no enable_strict=no enable_strict_options=no enable_systemd=no enable_werror=no enable_win32_dll=yes enable_x509_alt_username=no with_aix_soname=aix with_broken_putenv=no with_crypto_library=openssl with_gnu_ld=yes with_libtool_sysroot=/home/xxxxx/poky/build/tmp/work/i586-nlp-32-poky-linux/openvpn/2.4.6-r0/recipe-sysroot with_mem_check=no
Я создал ключи и сертификаты с помощью сценария Easy-RSA и распределил их между сервером и клиентом. Сервер и клиент создали виртуальный сетевой адаптер tap0, и я вручную назначил адаптеру для серверов IP-адрес 192.168.20.1/24, а клиенту - 192.168.20.2/24. Нижний сервер или клиент имеют другой сетевой адаптер в той же подсети.
У меня есть следующие файлы конфигурации:
Сервер:
proto tcp
port 1194
dev tap0
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem
server-bridge
client-to-client
keepalive 10 120
verb 5
Клиент:
port 1194
ca ca.crt
cert client.crt
key client.key
client
remote-cert-tls server
auth-nocache
reneg-sec 0
dev tap0
keepalive 10 120
verb 5
Я могу запустить сервер, и клиент подключится. Затем я могу пинговать или установить SSH-соединение с сервером от клиента, используя IP 192.168.20.1 после первоначального подключения.
Однако почти ровно через 40 секунд я перестаю получать ответ на свой пинг. Я вижу на сервере, что он больше не получает данные (команда 5 показывает, когда пакет читается / записывается). Я вижу, что клиент все еще «записывает» данные - тоже в соответствии с командой ping.
В конце концов, OpenVPN обнаруживает тайм-аут и повторно подключается, что дает мне еще 40 секунд связи.
Я пробовал уменьшить настройки MTU; Я пробовал отключить аутентификацию и шифрование. Я пробовал как TCP, так и UDP.
Я протестировал точный файл конфигурации с тем же сертификатом и ключами на машине Debian 9, и у меня нет такой же проблемы. Так что это почти наверняка проблема клиента Yocto Linux.