5

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 クライアント経由で PC に接続すると、正常に接続されます。また、コマンド ラインで「netstat」と入力すると、PC のポート 1723 が電話のポート 36302 に接続されていることがわかりました。つまり、オフコース ポートに到達できます。

これはサンプル アプリケーションです。動作するはずです...しかし、このアプリを介してサーバーに接続できないという別のリンクも見ました。

このサンプルはまったく機能しますか? この API はルート化された電話を必要としますか?

これを除いて、「android.net.VpnService」の適切な使用方法を示すサンプルやチュートリアルは見つかりませんでした。

誰でもこれについて私を案内してもらえますか..?

4

1 に答える 1

10

ToyVpnService は、単純なカスタム VPN のサンプル実装です。規格に準拠していません。標準準拠の VPN が必要な場合は、組み込みの VPN を使用する必要があります。

サンプルをテストしたい場合は、ToyVPN サンプルにパッケージ化された、ToyVPN プロトコルを理解する Linux サーバーがあります。

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

それだけなのでToyVPNと呼ばれています。

  • 暗号化は行いません
  • 相互認証は行いません
  • 事前共有認証キーを平文で送信します
  • 予期しないパケットを適切に処理しない
  • パケットの完全性または発信元を保証するものではありません

これは、VpnService API が電話のアプリケーションからインターネット宛てのパケットをキャプチャし、それらをトンネルにプッシュする方法を示しているだけです。同様に、パケットがネットワークから来たかのようにアプリケーションに注入する方法。

残りは開発者が実装します。

于 2013-02-13T10:55:03.817 に答える