当前位置: 首页 > 面试题库 >

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

章岳
2023-03-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的这种连接?


问题答案:

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

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

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

更简单的方法:您是否真的需要VPN,或者是否可以通过SSL进行隧道传输?我认为Java支持SSL;您可以只创建所需的安全套接字,然后从那里去。

如果知道您使用的是哪个客户端系统,则考虑进行炮击以调用该系统的Cisco VPN客户端。

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



 类似资料:
  • 我正在尝试从Azure连接到Oracle数据库。NET网络应用程序。目标是不必在Azure Web应用程序上安装Oracle客户端。 我已经尝试了几个选项,但似乎没有任何效果。有什么建议吗? 目前我收到以下错误: 系统数据OracleClient需要Oracle客户端软件版本8.1。7或以上。

  • 我一直在使用macOS 10.15.3在Flutter中编程,目标是iOS设备。今天我也尝试安装Android Studio,以扩展。安装没有错误,但在中没有子目录,这是一个问题,因为应该在中找到。 我注意到这一点是因为运行< code>flutter doctor给了我: 我尝试重新安装Android Studio(没有区别)。在线发布的其他解决方案都谈到了Java版本,所以我将JRE从1.7升

  • 问题内容: 我正在尝试使用以下设置来创建与MYSQL服务器的ssl连接。我注意到,当我在jdbc URL中指定verifyServerCertificate = false时,Java似乎会忽略通过System.setProperty指定的密钥库和信任库信息。因此,我可以注释掉1)中指定的代码,并且ssl连接仍将成功创建。当我指定verifyServerCertificate = true时,似乎

  • 我无法获取上一个已知位置。我已经在谷歌控制台中启用了地理编码API和谷歌地点API的Android。我在清单文件中添加了 API 密钥: 但我不断在控制台中收到一条消息:“无法连接到Google API客户端:连接结果{状态代码=API_UNAVAILABLE,分辨率=空}” 更新 我使用谷歌示例 onConnected和onConnectionFailed不调用。 而且我也使用Android反应

  • 我正在做一个项目,我们使用Tomcat8作为应用服务器,因此使用JSP和servlet。每个JSP都显示一种项目列表。应用程序的用户有可能模拟一个项目。这意味着什么并不重要。当用户单击“模拟”按钮时,将执行以下过程: 通过Ajax(javascript)将执行一个servlet,该servlet生成一个zip文件并将该文件存储在服务器的硬盘上 所以我的问题是:通知JSP模拟已经完成的最佳方式是什么

  • web应用程序的单点登录(SSO)(通过浏览器使用)已得到充分的证明和确立。为富客户端建立SSO比较困难,通常建议基于Kerberos票证,尤其是使用Windows登录域中的ActiveDirectory。 但是,我正在为以下问题寻找一个更通用的解决方案:我需要建立“真正的”SSO(所有应用程序的一个标识,即不仅仅是跨应用程序的密码同步),其中在客户端(非托管计算机,包括非Windows),“最终