我有时必须写软件建立的套接字与驻留在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这样的连接,而无需安装任何客户端软件?

有帮助吗?

解决方案

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

大多数VPN产品使用IPSEC,一个标准协议,用于加密的TCP / IP连接。大多数产品还使用ISAKMP,互联网安全体系结构密钥管理协议,也是一个标准,来建立会话。为IPSEC和ISAKMP源代码是容易获得的,并且可能已经安装在系统上。

现在的坏消息:虽然我已经提到的一切标准,可以与ISAKMP使用的认证方案几乎都是专有的。两个“标准”的认证方案是预共享密钥,和X.509证书。如果VPN服务器被配置为允许任何这些,那么你就有机会。否则,你真的不能使用VPN,因为协议是真正私有的,几乎不可能的,因为身份验证会话进行加密,以逆向工程。

有一个更容易的路径:你真的需要一个VPN,或者是有一种方法可以隧道通过SSL?我认为Java支持SSL;你可以创建你所需要的安全套接字,并从那里走了。

如果你知道你正在使用的客户端系统,然后再考虑炮击援引思科VPN客户端该系统。

否则,你就必须复制一个VPN客户端做什么。 VPN客户端进行认证和会话建立与ISAKMP,结果安装到内核创建VPN连接。 ISAKMP的实现方式有;你只需要弄清楚正在使用的身份验证,并尝试设置了。此时,你会已经编写了自己的VPN客户端。

其他提示

我用的是VPNC包在Linux上,以连接到我公司的VPN思科,因为我们没有一个兼容的Linux客户端。 VPNC是用C语言编写的,所以你必须执行一个端口。

您可以阅读思科官方文档之后,你可以创建这些数据的bat文件: vpnclient连接[连接名称] PWD [密码] 并断开。 它包括你的java程序: 。调用Runtime.getRuntime()EXEC( “CMD / C开始[路径bat文件]”);

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top