我在服务器上运行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 ----
谢谢!
答案 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