【问题标题】:Android: Unable to connect to VPN server via ToyVpn app; getting port unreachable exceptionAndroid:无法通过 ToyVpn 应用连接到 VPN 服务器;获取端口不可达异常
【发布时间】:2012-10-23 03:36:31
【问题描述】:

我正在尝试在 android 上创建一个 VPN 客户端。我查看了 android 示例应用程序“ToyVpn”,我尝试从该应用程序连接到我的 PC(Windows 7),但出现端口无法访问异常。

E/ToyVpnService(2302): Got java.net.PortUnreachableException: 
E/ToyVpnService(2302): Got java.net.SocketException: sendto failed: ECONNREFUSED (Connection refused)

但是当我通过 Android 的默认 vpn 客户端连接到我的电脑时,它连接成功。通过在命令行中输入“netstat”,我观察到我的电脑的 1723 端口连接到了手机的 36302 端口。因此,可以访问离线端口。

这是一个示例应用程序,它应该可以工作......但我也看到了一些其他链接,其中提到他们无法通过这个应用程序连接到服务器。

此示例是否有效?这个 API 需要 root 手机吗?

除此之外,我没有找到任何示例或教程来展示正确使用“android.net.VpnService”。

谁能指导我这个..?

【问题讨论】:

    标签: android vpn


    【解决方案1】:

    ToyVpnService 是一个简单的自定义 VPN 的示例实现。它不符合标准。如果您想要一个符合标准的 VPN,您应该使用内置的。

    如果您想测试示例,有一个 linux 服务器可以理解与 ToyVPN 示例一起打包的 ToyVPN 协议。

    https://github.com/android/platform_development/tree/master/samples/ToyVpn

    之所以称为ToyVPN,是因为它就是这样。

    • 没有加密
    • 没有相互认证
    • 它以明文形式发送预共享的身份验证密钥
    • 它不会优雅地处理意外的数据包
    • 它不保证数据包的完整性或来源

    它只展示了 VpnService API 如何从手机上的应用程序中捕获发往 Internet 的数据包并将它们推送到隧道中。同样,如何将数据包注入应用程序,就好像它们来自网络一样。

    剩下的由开发者来实现。

    【讨论】:

    • 我已经使用 VpnService 来包装另一个专有的 vpn 解决方案,以提供 android 支持。我没有从头开始编写 VPN,因为这几乎是在编写自己的加密货币的领域。众所周知,这不是一个好主意,除非你是一个被具有多年实践经验的天才包围的天才。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    相关资源
    最近更新 更多