代码之家  ›  专栏  ›  技术社区  ›  Adam Paynter

在不安装客户端软件的情况下连接到VPN

  •  12
  • Adam Paynter  · 技术社区  · 15 年前

    有时,我必须编写软件来建立一个与驻留在CiscoVPN中的特定服务器的套接字。我只是简单地编写我的软件,就好像没有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 回复  |  直到 11 年前
        1
  •  10
  •   d3jones    15 年前

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

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

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

    一个更简单的方法:您真的需要一个VPN,还是有一种方法可以通过SSL进行隧道传输?我认为Java支持SSL;您可以创建您需要的安全套接字,并从那里开始。

    如果您知道您使用的是什么客户机系统,那么可以考虑为该系统调用CiscoVPN客户机。

    否则,您必须复制VPN客户机所做的。VPN客户端使用isakmp执行身份验证和会话设置,并将结果安装到内核中以创建VPN连接。isakmp实现是可用的;您只需要知道正在使用什么身份验证,并尝试设置它。此时,您将编写自己的VPN客户端。

        2
  •  2
  •   Jherico    15 年前

    我在Linux上使用vpnc包来连接我公司的Cisco VPN,因为我们没有兼容的Linux客户机。不过,vpnc是用C编写的,所以您必须执行一个端口。

        3
  •  2
  •   Michael    11 年前

    您可以阅读正式的Cisco文档,然后使用这些数据创建BAT文件: vpnclient connect[连接名称]pwd[密码] 断开连接。 将它包含到Java程序中: runtime.getruntime().exec(“cmd/c start[path to bat file]”);