【问题标题】:How to Connect to a VPN Server with Delphi?如何使用 Delphi 连接到 VPN 服务器?
【发布时间】:2011-04-10 11:58:31
【问题描述】:

我需要连接到 VPN 服务器,我不能使用 windows 连接,我的应用程序应该独立工作!

我使用 RAS Api 测试了一些组件,它们有效!但是通过使用 Windows 连接。

如何在不依赖 Windows 连接的情况下做到这一点?

【问题讨论】:

  • 问题不完整。你用的是什么类型的VPN?有IPSec、L2TP、PPTP、OpenVPN、Hamachi、PPP+L2TP、SSH隧道等等。没有更多细节,就无法回答您的问题。
  • 没有广泛接受的实现 VPN 的标准。因此,您将为目标服务器进行开发。您可以使用 Indy 调色板上的组件来实现客户端。
  • 任何希望您使用 VPN 并同时绕过实际 VPN 软件来实施 DIY 解决方案的人都是在找麻烦的人。保证。
  • 这看起来很不对劲......假设用户必须在同一个 VPN 中使用另一个应用程序。所以他们启动他们的 Cisco VPN 客户端或其他任何东西,输入他们的用户 ID、PIN 和从他们的硬件密钥卡生成的令牌。他们进来了。现在他们必须再次执行所有这些操作,将 userid/pin/token 输入到您的应用程序中。他们不会喜欢它,他们的安全部门也不会。它闻起来更像是木马密码窃取器,而不是安全应用程序。

标签: delphi vpn ras


【解决方案1】:

这个问题的问题

“VPN”代表“虚拟专用网络”。这是一种使您的计算机可以使用专用网络的方法,可能以一种安全的方式,因此您的计算机可以使用标准 IP 协议,就像它物理连接到专用网络一样。

操作系统需要了解该网络,因此当然所有 VPN 实现都使用“Windows 连接”。 从不同的角度来看: 当您连接到 VPN 时,您可以打开与专用网络上 IP 的 TCP 连接,就好像它在您的本地网络上一样。由于建立 TCP 连接和路由 TCP/IP 数据包是操作系统的工作,因此它当然需要了解 VPN!如果没有,它会简单地将您对给定 IP 的所有请求转发到它的默认路由器,并以 "no route to destination" 消息(或 "time out",如果您的路由器不足以告诉您的系统它有不知道私有 IP 是什么)。

可以吗?

从理论的角度来看,当然,你可以完全绕过 Windows,但是你必须“自己动手”一切。您不能使用 Windows IP 服务,您必须实现自己的 TCP。我敢肯定还有大约一百万个其他小事情需要重新实现。

作为起点,我会查看Open VPN:它是开源的,可用于 Windows。它使用 UDP 协议作为 VPN 实现的基础,这与 Windows VPN 不同(使用 GRE - 通用路由封装,协议 47)。当然,Open VPN 本身使用“windows 连接”来完成它的工作,因为它旨在提供有用的服务,但您可以使用源代码作为您自己实现的基础。

我个人什至不会考虑这样做,我只是向您展示方法并证明它是可能的。

应该怎么做

我假设您需要某种安全的通信渠道来连接您自己的服务。研究简单的安全连接、隧道协议和代理。

如果需要为一台服务器上的一项服务完成此操作,我会研究一个简单的 SSL 实现。更好的是,考虑使用 HTTPS。

如果您需要访问给定专用网络上可能不同服务器上的许多不同服务,我会考虑代理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 2012-06-20
    • 2017-04-04
    • 2016-07-15
    • 2013-06-14
    相关资源
    最近更新 更多