【问题标题】:How to enable VPN support in Android Emulator如何在 Android 模拟器中启用 VPN 支持
【发布时间】:2026-02-11 08:55:01
【问题描述】:

我喜欢在 Android 模拟器中使用 PPTP VPN。我的 VPN 提供商是 Witopia。这些设置适用于真机 (HTC Desire)。

它不起作用,一段时间后连接超时。

adb logcat 打印:

D/VpnManager( 1527): succeeded to connect to VPN service
D/com.android.settings.vpn.AuthenticationActor( 1527): ~~~~~~ connect() succeeded!
I/SProxy_mtpd( 2211): Stop VPN daemon: mtpd
D/VpnSettings( 1527): received connectivity: Witopia: connected? CONNECTING   err=0
D/SProxy_mtpd( 2211): mtpd is stopped after 0 msec
D/SProxy_mtpd( 2211): stopping mtpd, success? true
I/SProxy_racoon( 2211): Stop VPN daemon: racoon
D/SProxy_racoon( 2211): racoon is stopped after 0 msec
D/SProxy_racoon( 2211): stopping racoon, success? true
D/VpnService( 2211):   Local IP: 10.0.2.15, if: eth0
D/VpnService( 2211):        VPN UP: down
I/SProxy_mtpd( 2211): Start VPN daemon: mtpd
D/SProxy_mtpd( 2211): mtpd is running after 0 msec
D/SProxy_mtpd( 2211): service not yet listen()ing; try again
D/mtpd    ( 2224): Waiting for control socket
D/mtpd    ( 2224): Received 19 arguments
I/mtpd    ( 2224): Using protocol pptp
I/mtpd    ( 2224): Connecting to 203.131.247.213 port 1723
I/SProxy_mtpd( 2211): got data from control socket: 19
I/mtpd    ( 2224): Connection established (socket = 10)
D/mtpd    ( 2224): Sending SCCRQ
D/mtpd    ( 2224): Received SCCRP -> Sending OCRQ (local = 32087)
I/mtpd    ( 2224): Tunnel established
D/mtpd    ( 2224): Received OCRQ (remote = 52286)
I/mtpd    ( 2224): Session established
I/mtpd    ( 2224): Creating PPPoX socket
F/mtpd    ( 2224): Socket() Address family not supported by protocol

后跟用户消息:无法连接到网络。你想再试一次吗?

同时在adb logcat

E/VpnService( 2211): onError()
E/VpnService( 2211): java.io.IOException: Connecting timed out
E/VpnService( 2211):    at com.android.server.vpn.VpnService.waitUntilConnectedOrTimedout(VpnService.java:206)
E/VpnService( 2211):    at com.android.server.vpn.VpnService.onConnect(VpnService.java:136)
E/VpnService( 2211):    at com.android.server.vpn.VpnServiceBinder$2.run(VpnServiceBinder.java:114)
E/VpnService( 2211):    at java.lang.Thread.run(Thread.java:1096)
I/VpnService( 2211): disconnecting VPN...
D/VpnSettings( 1527): received connectivity: Witopia: connected? DISCONNECTING   err=0
I/SProxy_mtpd( 2211): Stop VPN daemon: mtpd
D/SProxy_mtpd( 2211): mtpd is stopped after 0 msec
D/SProxy_mtpd( 2211): stopping mtpd, success? true
I/SProxy_racoon( 2211): Stop VPN daemon: racoon
D/SProxy_racoon( 2211): racoon is stopped after 0 msec
D/SProxy_racoon( 2211): stopping racoon, success? true
D/VpnService( 2211): onFinalCleanUp()
I/VpnService( 2211): restore original suffices --> null
D/VpnSettings( 1527): received connectivity: Witopia: connected? IDLE   err=101

我猜这要么是权限问题,要么是安卓模拟器不支持。

我的平台是 MacOSX,模拟器运行的是 Android 2.2。

这个问题与:

【问题讨论】:

  • 我买了另一台设备(iRobot 平板电脑)并在那里试用了 VPN。关于Address family not supported by protocol 的相同消息。所以这可能是内核问题?
  • 检查这些行...com.android.server.vpn.VpnService.onConnect(VpnService.java:136) E/VpnService(2211): at com.android.server.vpn.VpnServiceBinder$2 .run(VpnServiceBinder.java:114)

标签: android android-emulator android-2.2-froyo


【解决方案1】:

是的,这就像内核问题:

  1. 没有 tun.ko 模块(参见http://forum.xda-developers.com/showthread.php?t=630703&page=2
  2. 不支持 lkm(可加载内核模块)(http://code.google.com/p/get-a-robot-vpnc/issues/detail?id=100)

所以我认为您需要自定义内核 http://code.google.com/p/batterymine/wiki/BuildingInModuleSupport

您还需要将其他模块复制到模拟器:slhc.ko、ppp*.ko

【讨论】:

  • 我想就是这样,不知道可以在模拟器中安装自定义内核!非常感谢,西布尼克!
  • @Sebastian Roth:你能告诉我模拟器需要哪个内核吗?我检查了这个链接 ttp://forum.xda-developers.com/showthread.php?t=630703&page=2,但是它的程序是针对 Nexsus 的,模拟器会不会一样,我在哪里可以得到 tun.ko, slhc.ko, ppp*.ko 用于模拟器(API 级别 15)。我还需要其他模块吗?!
【解决方案2】:

我在使用 2.2 模拟器时遇到了同样的问题。我切换到 4.2 的模拟器,它通过 VPN 运行良好。

【讨论】: