問題タブ [l2tp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - プログラムで Android に L2TP/IPSec VPN クライアントを作成する
私は Android Studio を使用して Android アプリに取り組んでおり、L2TP プロトコルを実装する単純な VPN クライアントを構築しようとしています。
ここで Stack Overflow をググって検索しました。また、toyvpn という名前の Android SDK VPN サンプルと、VPN Service クラスの公式ドキュメントも確認しました。
Android プラットフォームで VpnService を使用して L2TP を実装する方法は? コードサンプル、ライブラリ、またはそのような実装の出発点はありますか?
VpnService と VpnService.Builder について読みましたが、VPN タイプを PPTP または L2TP に設定する方法を取得できませんでした。ユーザー/パスワードを設定できる方法も取得できませんでした。
c - 仮想ネットワーク インターフェイスをリッスンしています
私が L2TP について話していることに混乱しないでください。私の問題は L2TP に関連していますが、それ自体は L2TP の問題ではありません。それはネットワークの問題です。
バックグラウンド
L2TP で動作するアプリケーションを作成しています。L2TP と Linux の L2TP サブシステムを扱うのはこれが初めてなので、これでうまくいくといいのですが。L2TP イーサネット セッションを作成すると、サブシステムは自動的に仮想ネットワーク インターフェイスを作成します。
インターフェイスを起動した後、Wireshark で確認すると、実際に必要なデータがインターフェイスに送信されます。これはパッケージなしです。イーサネット フレームなどの内部ではなく、L2TP パケットに含まれていたデータ バイトだけです。
デバイスを実際に作成することは制御できませんが、その名前とそのインデックスなどを照会することはできます。これまでのところ、問題ありません。
実際の問題
私の質問は実際には非常に単純です。仮想インターフェイスに送信されたデータをユーザー空間アプリケーションに取得するにはどうすればよいですか?
Unix でのネットワーキングの経験はあまりありませんが、これはかなり単純な問題であり、使用できるファイル記述子を取得するか、またはソケットをそのネットワーク インターフェイスにバインドすることで解決できると思いread
ますrecv
。
これを行うための (gen-)netlink / ioctl API (またはその他のもの) が見つかりませんでした。
私のアプリケーションは C ではなく GO で書かれていますが、C でのソリューションで十分です。この時点で、この問題をプログラムで解決するためのアプローチについて喜んでいます。:)
事前にどうもありがとう