无需安装客户端软件即可连接到 VPN

2022-09-03 15:01:50

我有时必须编写软件来与驻留在思科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的这种连接?


答案 1

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

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

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

一条容易得多的路径:你真的需要VPN,还是有一种方法可以通过SSL隧道?我认为Java支持SSL;您可以创建所需的安全套接字,然后从那里开始。

如果您知道自己使用的是哪种客户端系统,请考虑为该系统调用 Cisco VPN 客户端。

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


答案 2

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


推荐