Клиент OpenVPN 3 на iOS подключается, но не может отправить данные, «неизвестная версия IP» - PullRequest
1 голос
/ 15 марта 2019

У меня есть сборка клиентской библиотеки OpenVPN3 (https://github.com/OpenVPN/openvpn3), подключающаяся к серверу OpenVPN 2 (2.4.4). Это работает для моих сборок Mac и Windows, но не работает, когда клиент - iOS.

Похоже, что iOS-клиент подключается, в том смысле, что я запускаю свой пользовательский сценарий обновления и вижу, что я предполагаю, что пакеты keepalive / heartbeat пересылаются назад и вперед между клиентом и сервером.Тайм-аут, пока эти пакеты разрешено продолжать. Однако, как только клиент пытается получить доступ к любой веб-странице через туннель, я получаю пакеты сброшены на стороне сервера с ошибками, как показано ниже:

Fri Mar 15 20:08:27 2019 11e9-475e-04b1a640-b6f1-dda173e0051f/10.101.172.10:65334 IP packet with unknown IP version=10 seenFri Mar 15 20:08:28 2019 11e9-475e-04b1a640-b6f1-dda173e0051f/10.101.172.10:65334 IP packet with unknown IP version=7 seen
Fri Mar 15 20:08:29 2019 11e9-475e-04b1a640-b6f1-dda173e0051f/10.101.172.10:65334 IP packet with unknown IP version=5 seen
Fri Mar 15 20:08:30 2019 11e9-475e-04b1a640-b6f1-dda173e0051f/10.101.172.10:65334 IP packet with unknown IP version=9 seen
Fri Mar 15 20:08:31 2019 11e9-475e-04b1a640-b6f1-dda173e0051f/10.101.172.10:65334 IP packet with unknown IP version=8 seen
Fri Mar 15 20:08:32 2019 11e9-475e-04b1a640-b6f1-dda173e0051f/10.101.172.10:65334 IP packet with unknown IP version=2 seen
Fri Mar 15 20:08:34 2019 11e9-475e-04b1a640-b6f1-dda173e0051f/10.101.172.10:65334 IP packet with unknown IP version=13 seen
Fri Mar 15 20:08:38 2019 11e9-475e-04b1a640-b6f1-dda173e0051f/10.101.172.10:65334 IP packet with unknown IP version=7 seen

Я использую те же серверные и клиентские конфигурации для iOS, которые использовались, когда клиентом были Mac и Windows.

Серверные конфигурации:

port 1194
proto udp
dev tun

ca /opt/certs/ca-cert.pem
cert /opt/certs/server.pem
key /opt/certs/server-key.pem
dh /opt/certs/dh2048.pem
tls-auth /opt/certs/ta.key 0

server 10.8.0.0 255.255.0.0
keepalive 5 15

verb 3
script-security 3
client-connect "/usr/local/bin/sdp-updown"
client-disconnect "/usr/local/bin/sdp-updown"
cipher AES-256-CBC
tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA256
comp-lzo
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450

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

dev tun
proto udp
remote ... server and port omitted
remote-cert-tls server
key-direction 1
server-poll-timeout 5
cipher AES-256-CBC
tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA256
comp-lzo
... routes omitted
<ca>
... CA omitted
</ca>
<cert>
... cert omitted
</cert>
<key>
... private key omitted
</key>
<tls-auth>
... OpenVPN static key omitted
</tls-auth>

Я пробовал несколько различных настроек для cipher и tls-cipher. Когда эти настройки установлены на значения, которые поддерживаются с обеих сторон, я могу подключиться, но gи та же IP packet with unknown IP version ошибка.Очевидно, что когда cipher или tls-cipher не поддерживаются ни на сервере, ни на клиенте, мы не можем согласовать TLS и вообще не подключаемся.

Я обнаружил несколько сообщений на форуме по устранению неполадок, связанных с этой ошибкой.и большинство из них решаются путем установки параметров сжатия на одно и то же значение на обоих концах.Кажется, моя сборка клиента iOS не позволяет выполнять сжатие, хотя я думаю, что я успешно связался с библиотекой LZ4.Я скомпилировал библиотеку LZ4 для iOS и включил LZ4=1 при сборке dylib для самого OpenVPN.Однако, когда клиент iOS подключается, он сообщает о таких настройках, как:

ENV[IV_AUTO_SESS] = 1
ENV[IV_COMP_STUBv2] = 1
ENV[IV_COMP_STUB] = 1
ENV[IV_LZO_STUB] = 1
ENV[IV_PROTO] = 2
ENV[IV_TCPNL] = 1
ENV[IV_NCP] = 2
ENV[IV_PLAT] = ios
ENV[IV_VER] = 3.1.2

Я замечаю, что это не включает IV_LZ4, что, как я понимаю, означает, что клиент считает, что не может выполнять сжатие.Тем не менее, даже когда мои настройки включают отключенное сжатие, я получаю те же результаты.Я попытался вообще пропустить любые настройки сжатия, comp-lzo no, compress stub и compress stub-v2.Ни один из них не привел к какому-либо другому поведению.

Мои вопросы, таким образом:

  1. Что может быть причиной моих IP packet with unknown IP version ошибок при фактической отправке пакетов по каналу данных?
  2. Если то, что я вижу, на самом деле является ошибкой установки сжатия, как мне убедить OpenVPN полностью отключить сжатие?Кроме того, что я сделал неправильно, чтобы связать LZ4 с моим iOS OpenVPN dylib?
...