Java で独自の軽量 VPN サーバーを作成することにしました。プログラミングの観点からは、VPN サーバーは、クライアントからのトラフィックを暗号化し、サーバー上で復号化するパススルー プロキシにすぎないように見えます。誰かがこの種のサーバーを書くためのスケルトンを教えてもらえますか?
すぐに使用できるものやオープンソースのものもたくさんあることは知っていますが、残念ながら、いくつかの Web プログラミング言語を知っていても、私が見た C コードの例は、理解できるように文書化/構造化されていません。
私が必要だと想像する部分は次のとおりです。
- クライアント オブジェクトのスレッド ファクトリ
- クライアント用ソケットコネクタ
- IPSec 認証ヘッダー (AH) の作成方法
- IPSec カプセル化セキュリティ ペイロード (ESP) の作成方法
- Internet Security Association and Key Management Protocol (ISAKMP) の何か
- インターネット鍵交換 (IKE)
- PKI 証明書認証モジュール
- 証明書リポジトリ (SQLLite)
- Oakley キー生成 (IKE および ISAKMP 用)
- パケットのアンチリプレイ防止
私が汎用モジュールを使用する (およびアダプターを作成する) 予定の部分は、暗号化アルゴリズムです (DES / 3DES のようなウィンドウのように見えますが、できれば AES -- Noobs)
誰かが IPSec vpn サーバーに必要な部分に詳細を追加できる場合は、遠慮なく貢献してください。私が知る限り、これは古い Linux ハードウェアで実行する必要があるため、サーバーは SSLVPN ホットネスではなく IPSec である必要があります。ターゲット プラットフォームは、2 GB の DDR2 RAM、ミラー化された 100 GB ハード ドライブ、および 2 ギガビット Nic を搭載した古い 1.5 GHz インテル ボックスです。
明るい面としては、非常に多くの種類のクライアント側 VPN があるため、自分のニーズに合わせて作成する必要はないと確信しています。