Android 4 OpenVPN приложение tun_builder_error (топология net30)

Я использую сервер OpenVPN на своем сервере и хочу подключить несколько устройств (смартфон, ноутбуки, настольные компьютеры, планшеты...). У меня нет проблем с подключением ноутбуков с Linux или Mac OS X или моим планшетом с Windows 8. Так что эта работа довольно хорошо.

Но когда я хочу подключить Nexus 5 к Android 4.4.2, приложение OpenVPN выдает мне следующую ошибку:

12:53:32.106 -- EVENT: TUN Error: tun_builder_error: ifconfig addresses are not in the same /30 subnet (topology net30)

Вот мой client.conf.:

client
dev tun
proto udp
remote xx.xx.xx.xx 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun

ca ca.crt
cert Nexus5.crt
key Nexus5.key

ns-cert-type server

comp-lzo
verb 3
pull

И соответствующий server.conf:

script-security 2
port 1194
proto udp
dev tun

ca ca.crt
cert server.crt
key server.key
dh dh1024.pem

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.8.0.0 255.255.255.0"
client-config-dir ccd

push "redirect-gateway def1"

push "dhcp-option DNS 208.67.220.220"
up ./up-script.sh
down ./down-script.sh

client-to-client
keepalive 10 120

comp-lzo

user nobody
group nogroup

persist-key
persist-tun

status openvpn-status.log
log         openvpn.log
verb 3

Файл ccd/Nexus5:

ifconfig-push 10.8.0.11 255.255.255.0

Я использую один и тот же client.conf для каждого клиента (адаптированные сертификаты, конечно). Это работает на всех устройствах, кроме Nexus 5. После исследования я прочитал, что это может помочь добавить

push "topology subnet"

на сервер.конф. Но тогда ни один клиент больше не сможет подключиться, так что это не поможет. Можете ли вы обнаружить какие-либо ошибки в моих файлах конфигурации или что-нибудь?

Вот журнал из приложения Nexus 5 OpenVPN:

12.53.30.522 -- ---- OpenVPN Start ----
12.53.30.523 -- EVENT: CORE_THREAD_ACTIVE
12.53.30.531 -- UNUSED OPTIONS
4 [resolv-retry] [infinite]
5 [nobind]
6 [user] [nobody]
7 [group] [nogroup]
8 [persist-key]
9 [persist-tun]
15 [verb 3]
16 [pull]

12:53:30:531 -- EVENT: RESOLVE
12:53:30.534 -- LZO-ASYM init swap=0 asym=0
12:53:30.534 -- Contacting xx.xx.xx.xx:1194 via UDP
12:53:30.535 -- EVENT: WAIT
12:53:30.537 -- Connecting to xx.xx.xx.xx:1194 via UDPv4
12:53:30.572 -- EVENT: CONNECTING
12:53:30.575 -- Tunnel Options:V4,dev-type tun,link-mtu 1542,tun-mtu 1500,proto UDPv4,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client
12:53:30.775 -- Peer Info:
IV_GUI_VER=net.oopenvpn.connect.android
1.1.13-53
IV_VER=3.0
IV_PLAT=android
IV_NCP=1
IV_LZO=1

12:53:30.779 -- VERIFY OK: depth=1
..
12:53:30.780 -- VERIFY OK: depth=0
..
12:53:31.121 -- SSL Handshake: TLSv1.0/TLS-DHE-RSA-WITH-AES-256-CBC-SHA
12:53:31.122 -- Session is ACTIVE
12:53:31.123 -- EVENT: GET_CONFIG
12:53:31.130 -- Sending PUSH_REQUEST to server...
12:53:31.165 -- OPTIONS:
0 [route] [10.8.0.0] [255.255.255.0]
1 [redirect-gateway] [def1]
2 [dhcp-option] [DNS] [208.67.220.220]
3 [route] [10.8.0.0] [255.255.255.0]
4 [topology] [net30]
5 [ping] [10]
6 [ping-restart] [120]
7 [ifconfig] [10.8.0.11] [255.255.255.0]

12:53:31.166 -- LZO-ASYM init swap=0 asym=0
12:53:31.167 -- EVENT: ASSIGN_IP
12:53:31.177 -- TUN Error: tun_builder_error: ifconfig addresses are not on the same /30 subnet (topology 30)
12:53:31.181 -- EVENT: TUN_SETUP_FAILED
info='tun_builder_error: ifconfig addresses are not on the same /30 subnet (topology 30)'
12:53:31.188 -- EVENT: DISCONNECTED
12:53:31.198 -- EVENT: CORE_THREAD_INACTIVE
12:53:31.199 -- Tunnel bytes per CPU second: 0
12:53:31.200 -- ---- OpenVPN Stop ----

Спасибо!

1 ответ

Решение

Задача решена:

Я настроил клиент-клиентские маршруты следующим образом:

ifconfig-push 10.8.0.11 255.255.255.0

В журнале приложения OpenVPN for Android говорится, что не должна быть маска подсети, а должен быть второй (другой) IP-адрес. Настройка VPN, документация всегда хорошая.

Это говорит

Каждая пара адресов ifconfig-push представляет конечные точки виртуального клиента и сервера. Они должны быть взяты из последовательных подсетей /30, чтобы быть совместимыми с клиентами Windows и драйвером TAP-Windows.

Итак, теперь это выглядит так:

ifconfig-push 10.8.0.13 10.8.0.14

Кроме того, документация включает таблицу с примером пар IP-адресов. После изменения это снова работает. Я не знаю, почему у Android проблема с этим, а не с другим клиентом в OS X, Linux и Windows. Но все, что имеет значение, - то, что это работает снова.

Здесь описано решение для принудительного использования режима "подсеть" вместо "net30": https://forums.openvpn.net/viewtopic.php?t=23585

Если вы добавите push "topology subnet" в клиентский ccd, он будет работать с приложением OpenVPN Connect.

Это решенная проблема для меня. Android 8.1 OpenVPN Connect 3.0.5

Другие вопросы по тегам