连接到VPN而不安装客户端软件

时间:2009-05-22 18:39:26

标签: java sockets vpn cisco

我有时必须编写软件来与位于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的连接?

3 个答案:

答案 0 :(得分:10)

这取决于VPN服务器的配置方式。

大多数VPN产品使用IPSEC,一种用于加密TCP / IP连接的标准协议。大多数产品还使用ISAKMP(Internet安全体系结构密钥管理协议)(也是标准)来设置会话。 IPSEC和ISAKMP的源代码随时可用,并且可能已经安装在您的系统上。

现在有了坏消息:尽管我已经提到的所有内容都是标准的,但可以与ISAKMP一起使用的身份验证方案几乎都是专有的。两种“标准”身份验证方案是预共享密钥和X.509证书。如果VPN服务器配置为允许其中任何一个,那么您有机会。否则,您无法真正使用VPN,因为协议是真正专有的,并且几乎不可能进行逆向工程,因为身份验证会话已加密。

更容易的路径:您真的需要VPN,还是有办法通过SSL隧道?我认为Java支持SSL;你可以创建你需要的安全套接字并从那里开始。

如果你知道你正在使用什么客户端系统,那么考虑使用shell来调用该系统的Cisco VPN客户端。

否则,您将不得不复制VPN客户端的功能。 VPN客户端使用ISAKMP执行身份验证和会话设置,并将结果安装到内核中以创建VPN连接。 ISAKMP实现可用;你只需要弄清楚正在使用什么身份验证并尝试设置它。此时您将编写自己的VPN客户端。

答案 1 :(得分:2)

我在linux上使用vpnc软件包以连接到我公司的Cisco VPN,因为我们没有兼容的Linux客户端。 vpnc是用c编写的,所以你必须执行一个端口。

答案 2 :(得分:2)

您可以阅读官方cisco文档,之后您可以使用以下数据创建bat文件: vpnclient connect [连接名称] pwd [密码] 并断开连接。 将它包含在您的java程序中: Runtime.getRuntime()。exec(“cmd / c start [bat文件的路径]”);

相关问题