14

Cisco VPN 内に存在する特定のサーバーとのソケットを確立するためのソフトウェアを作成する必要がある場合があります。VPN がないかのように (標準のソケット ライブラリを使用して) ソフトウェアを作成するだけです。このプログラムを実行するときは、コンピューターにインストールされているクライアント ソフトウェアを使用して手動で VPN に接続し、プログラム自体を実行します。

ただし、インストールされたクライアント ソフトウェアを使用せずに、VPN を介して直接通信できる特殊なソケット ライブラリを利用するようにソフトウェアを作成することが望ましいでしょう。

私が望む機能を示すJavaコードは次のとおりです。

String vpnHost = ...;
String vpnUser = ...;
String vpnPassword = ...;
VPNConnection vpnConnection = new CiscoVPNConnection(vpnHost, vpnUser, vpnPassword);

String serverHost = ...;
int serverPort = ...;
Socket socket = vpnConnection.openSocket(serverHost, serverPort);

クライアント ソフトウェアをインストールせずに VPN への接続を確立することは可能ですか?

4

3 に答える 3

10

これは、VPN サーバーの構成方法によって異なります。

ほとんどの VPN 製品は、TCP/IP 接続を暗号化するための標準プロトコルである IPSEC を使用しています。ほとんどの製品は、同じく標準の Internet Security Architecture Key Management Protocol である ISAKMP を使用してセッションをセットアップします。IPSEC と ISAKMP のソース コードはすぐに入手でき、既にシステムにインストールされている場合があります。

ここで悪いニュースがあります。これまで述べてきたことはすべて標準ですが、ISAKMP で使用できる認証スキームはほとんどすべて独自のものです。2 つの「標準」認証方式は、事前共有鍵と X.509 証明書です。VPN サーバーがこれらのいずれかを許可するように構成されている場合は、可能性があります。そうしないと、VPN を実際に使用することはできません。プロトコルは真に独自のものであり、認証の会話が暗号化されているため、リバース エンジニアリングがほとんど不可能だからです。

はるかに簡単な方法: VPN が本当に必要なのか、それとも SSL を介してトンネリングできる方法があるのか​​? Java は SSL をサポートしていると思います。必要なセキュア ソケットを作成するだけで、そこから移動できます。

使用しているクライアント システムがわかっている場合は、そのシステムの Cisco VPN クライアントを起動するためにシェルを実行することを検討してください。

それ以外の場合は、VPN クライアントが行うことを複製する必要があります。VPN クライアントは、ISAKMP で認証とセッション設定を行い、その結果をカーネルにインストールして VPN 接続を作成します。ISAKMP の実装が利用可能です。どの認証が使用されているかを把握し、その設定を試みるだけで済みます。この時点で、独自の VPN クライアントを作成したことになります。

于 2009-05-22T18:56:37.673 に答える
2

互換性のある Linux クライアントがないため、会社の Cisco VPN に接続するために Linux で vpnc パッケージを使用しています。ただし、vpnc は c で記述されているため、移植を実行する必要があります。

于 2009-05-22T18:44:54.700 に答える
2

公式の cisco doc を読むことができます。その後、次のデータを使用してバット ファイルを作成できます: vpnclient connect [接続名] pwd [パスワード] および切断。Java プログラムに含めます: Runtime.getRuntime().exec("cmd /c start [bat ファイルへのパス]");

于 2013-04-22T13:44:59.133 に答える