Android 4 OpenVPN App tun_builder_error(拓扑net30)

时间:2014-05-11 11:54:43

标签: android openvpn tun

我在服务器上运行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"

到server.conf。但是,没有客户端可以连接,所以这没有帮助。 你能发现我的配置文件或其他任何错误吗?

以下是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 ----

谢谢!

2 个答案:

答案 0 :(得分:2)

问题解决了:

我配置了客户端 - 客户端路由,如下所示:

ifconfig-push 10.8.0.11 255.255.255.0

OpenVPN for Android应用程序中的日志表示不必​​是子网掩码,而是第二个(不同的)IP地址。配置VPN,documentation总是好的。

它说

  

每对ifconfig-push地址代表虚拟客户端和服务器IP端点。它们必须从连续的/ 30个子网中获取,以便与Windows客户端和TAP-Windows驱动程序兼容。

所以现在它看起来像这样:

ifconfig-push 10.8.0.13 10.8.0.14

此外,该文档包括一个包含IP地址对示例的表。更改后,它再次工作。我不知道为什么Android有问题,而不是OS X,Linux和Windows上的其他客户端。但重要的是它再次发挥作用。

答案 1 :(得分:0)

此处介绍了强制使用“子网”模式而不是“ net30”的解决方案:https://forums.openvpn.net/viewtopic.php?t=23585

如果将推送“拓扑子网”添加到客户端ccd,它将与OpenVPN Connect应用程序一起使用。

这为我解决了问题。 Android 8.1 OpenVPN Connect 3.0.5