1

我在我的服务器上运行了一个 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 ----

谢谢!

4

2 回答 2

3

问题解决了:

我像这样配置了客户端-客户端路由:

ifconfig-push 10.8.0.11 255.255.255.0

OpenVPN for Android 应用程序中的日志显示,不必有子网掩码,而是需要第二个(不同的)IP 地址。配置 VPN,文档总是很好。

它说

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

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

ifconfig-push 10.8.0.13 10.8.0.14

此外,该文档还包括一个带有 IP 地址对示例的表格。更改此设置后,它再次工作。我不知道为什么 Android 有问题,而不是 OS X、Linux 和 Windows 上的其他客户端。但最重要的是它又开始工作了。

于 2014-05-13T19:46:44.527 回答
0

这里描述了强制“子网”模式而不是“net30”的解决方案:https ://forums.openvpn.net/viewtopic.php?t=23585

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

这为我解决了问题。安卓 8.1 OpenVPN 连接 3.0.5

于 2019-01-26T14:15:59.847 回答