Androidが初めてで、独自のvpn
を確立して接続しようとしています(デフォルトのvpn
プロバイダーではありません、つまりPPTP
、L2TP
etc Android Setting -> Wireless and Networks
)プログラムで。
私のシナリオは、ボタンがあり、ボタンをクリックすると、独自のvpn
を設定する必要があり、リンク(www.google.comなど)がそのVPN
を通過するはずです。
サンプルコードはありますか?
私が何千回グーグルで検索したのかはわかりませんが、github's searchでした。今年齢を探して、私は最終的に書かれたものを見つけましたbeautifully。コードは文字通り美しく、まれです:
https://github.com/hexene/LocalVPN
プロジェクトは、notNDKまたは任意のネイティブコード(純粋なJava)を使用します。複雑なもの)。ワークフローは非常に簡単です。
LocalVPNService.class
_LocalVPNService
でTCP/UDPパケットが調査され、ソースIPと宛先IPが抽出されます(_Packet.class
_が使用されます)。LocalVPNService
は、リクエストを開始するアプリに代わって接続を作成し、ループを回避するために、新しく作成された接続でVpnService.protect()
を呼び出します。ご覧のように、ヘキセンはすでにすべてのハードワークと重労働を行っています。
上記で参照したすべてのクラスは、プロジェクトディレクトリにあります。 githubからソースコードをざっと見てみましたが、ここで説明したワークフローは正確ではない可能性があります。
Android SDK。にバンドルされているサンプルアプリケーションToyVpnを参照できます。サンプルに移動して、そのアプリケーションを参照してください。 this
これに加えて、Openvpnのソースコードをダウンロードできます。以下はそのためのリンクです
https://github.com/kghost/ics-openvpn
ありがとう
OpenSwanソリューション: https://wiki.strongswan.org/projects/strongswan/wiki/AndroidVPNClient
OpenVPNソリューション: https://code.google.com/p/ics-openvpn/
どちらもAndroid [〜#〜] sdk [〜#〜] および [〜#〜] ndk [〜#〜] 。