Windows 7 上的 OpenVPN 服务器-如何将特定 IP 地址路由到客户端?

Windows 7 上的 OpenVPN 服务器-如何将特定 IP 地址路由到客户端?

好吧,我本身没有很强的计算背景,也没有网络背景,而且我现在才刚刚开始学习这些东西,因为我们的家族企业规模相对较小。这相当令人着迷,我还有很多东西要学。但是,我最近一直在研究 OpenVPN 服务器配置,并在桥接方面取得了一些成功。我现在正在研究路由配置。我花了好几个小时研究的一件事是,能够让一个客户端分配一个 IP 地址:(10.8.0.6),而 OpenVPN 服务器:(10.8.0.1),只能访问一个内部 LAN IP 地址,用于 Web 应用程序。

请允许我进一步解释一下。在 LAN 上,有一个服务器:192.168.50.100,它是一台 Apache 服务器,托管一个供内部使用的 Web 应用程序。对于在本地工作的个人来说,一切都是可以访问的,正如人们所期望的那样。端口 80 HTTP。打开浏览器并输入 http://192.168.50.100,然后就出现了。

但是,随着我们业务的扩大,个人远程工作也越来越多,我们希望让他们也能访问这个 Web 应用程序(http://192.168.50.100)。在桥接模式下,这可以正常工作,但是,他们也可以访问所有其他联网资源/计算机等等。当然,好的防火墙会有所帮助(我们最近安装了 WatchGuard 防火墙,尽管只针对其他几台服务器,Web 应用程序服务器还没有安装。)这似乎是可以做到的。但是,当我摸索着解决这个问题时,我需要一些建议,因为目前通过路由连接无法访问它。

顺便说一句 - 我的问题与这里提出的问题非常熟悉:

通过 Windows 7 客户端网关将 LAN 连接到 OpenVPN 服务器

唯一的区别是……两台计算机(包括 Web 应用程序的服务器)都是 Windows。是的,我已禁用所有适配器(OpenVPN 适配器也是)的所有防火墙(仅在测试/试验期间),包括网关计算机和 Apache 服务器上的 Windows 防火墙。在上面链接的问题中,个人发现他的解决方案是 IPTABLES,但是,我很确定这只是 Linux 的问题。(我以前从未听说过)。

尽管如此,这些是我迄今为止采取的措施。

  1. 通过前面的链接中记录的注册表编辑在网关(OpenVPN 服务器)上启用 IP 转发。

  2. 在 server.conf 中添加(推送“路由 192.168.50.0 255.255.255.0”)

  3. 我在属于私有子网 (192.168.50.*) 的网关计算机上尝试了各种命令行“route ADD 10.8.0.0 MASK ... ”等等。我非持续性地执行了这些操作,并在测试它们不起作用后将其清除。

因此,如有任何进一步的指导,我将不胜感激。抱歉,我写的文章形式是这样的,我只是想提前提供尽可能多的信息。

谢谢!

约翰

编辑并附加了以下 TESSELATINGHECKLERS 的回答/问题的答案。(顺便说一句 - 感谢 TH 抽出时间)。

(VPN 客户端 <-> VPN 服务器):暂时不考虑 Apache 服务器,OpenVPN 隧道本身进展如何?它连接了吗?它能通过它接收任何流量吗?您知道它正常工作吗?在 VPN 客户端上使用 ping 并尝试 ping 服务器 10.8.0.1 并证明您已建立连接。

是的,客户端可以使用客户端特定证书和授权(用户名/密码)的组合成功连接到服务器。此时,是的,流量正在通过它并且它正在工作。即使客户端的所有流量都被强制通过(我只是为了测试而尝试了此设置),因此,Web 浏览器流量也会通过它 - 它工作得很好。至于从 VPN 客户端 ping 到服务器 10.8.0.1,它工作得很好……所有四个数据包都按预期返回。

(VPN <-> VPN 服务器上的 LAN):您已在注册表中启用路由,但它能正常工作吗?OpenVPN 服务器需要 192.168.50.x 网络上的 IP 地址。

是的,我在注册表中启用了路由,但它能正常工作吗?我不知道。我不知道如何检查 OpenVPN 服务器是否在 192.168.50 上有一个 IP 地址。在打开 OpenVPN 服务器之前,如果我在命令行中输入“ipconfig /all”,我会看到局域网适配器的 IP 地址为 192.168.50.10(静态 LAN IP)。一旦 OpenVPN 服务器/服务启动,新适配器现在将采用 10.8.0.1 的地址……当然,如果我输入“ipconfig /all”,那么我会看到两个不同的适配器 - 刚刚分别列出的两个不同的 IP 地址。我可以从服务器 ping 通 192.168.50.100 和 192.168.50.100(并且 192.168.50.x 网络上的所有其他服务器/计算机都可以 ping 通 192.168.50.10)...但是,192.168.50.x 网络上的其他服务器/计算机无法 ping 通新连接的 10.8.0.1 服务器,也无法 ping 通连接的 VPN 客户端(第一个客户端),地址为 10.8.0.6(仅举一例)。

那么,是否需要配置 IP 地址为 10.8.0.1 的适配器以便能够与 192.168.50.x 地址通信?

我需要做什么才能使“OpenVPN 服务器需要 192.168.50.x 网络上的 IP 地址。”正常工作?这与实际计算机在其默认 LAN 适配器上已有的 IP 地址不同吗?这是令人困惑的一部分。

如果您查看客户端的路由表(命令行中的“route print”)和/或 OpenVPN 连接日志,它是否会拾取您在服务器配置中输入的 192.168.50.x 网络的路由?如果是,路由网关是否设置为 OpenVPN 服务器的 10.0.8.1 地址?从客户端,您可以 ping 192.168.50.x 地址上的 OpenVPN 服务器吗?

这部分我需要再做一次。自从昨天在这里发布我的问题以来,我花了一些时间弄乱,没有推送默认路由。我很快就会这样做,并在那时修改这篇文章。然而,我可以说的是,当我推送路由 192.168.50.x.. 时,我绝对无法从客户端 ping 192.168.50.10 地址或任何其他 192.168.50.x 地址。

答案1

您已经说了很多关于您想要什么以及您如何尝试使它发挥作用(听起来您的高层计划会起作用),但没有提到您已经取得了多大进展以及什么有效/无效。

将连接视为由几个部分组成的旅程,并使用基本 ping 测试按顺序测试每个部分。

(VPN 客户端 <-> VPN 服务器):暂时不考虑 Apache 服务器,OpenVPN 隧道本身进展如何?它能连接吗?它能通过任何流量吗?您知道它能正常工作吗?在 VPN 客户端上使用 ping 并尝试 ping 服务器 10.8.0.1 并证明您能建立连接。

(VPN <-> VPN 服务器上的 LAN):您已在注册表中启用路由,但它能正常工作吗?OpenVPN 服务器需要 192.168.50.x 网络上的 IP 地址。

如果您查看客户端的路由表(命令行中的“route print”)和/或 OpenVPN 连接日志,它是否会拾取您在服务器配置中设置的 192.168.50.x 网络的路由?如果是,路由网关是否设置为 OpenVPN 服务器的 10.0.8.1 地址?从客户端,您是否可以在 192.168.50.x 地址上 ping OpenVPN 服务器?

(Apache <-> 网关):检查路由。当您说“网关计算机”时,它是 Apache 服务器的默认网关吗?如果是这样,则在网关计算机上您是正确的,您将需要“route add 10.8.0.0 mask 255.255.255.0 192.168.50.x”,其中 x 是 OpenVPN 服务器的地址。

您能从 192.168.50.x 地址上的 Apache 服务器 ping 通 OpenVPN 服务器吗?您能从 10.8.0.1 地址 ping 通它吗?

(Apache <-> VPN 客户端):您能从 Apache 服务器 ping OpenVPN 客户端 10.8.0.6 吗?

假设其中一个步骤会失败,它将告诉您下一步该去哪里查找。

(顺便说一句,我认为 Watchguards 附带了一些针对移动用户 VPN 的许可证)。

答案2

如果没有管理员权限,客户端上的 OpenVPN 就无法更改系统路由表。客户端可以协商连接,但服务器推送的任何路由都将无法在客户端上创建。因此,只有当用户以管理员用户身份运行 OpenVPN 时,推送的路由才有效。

你应该能够通过使用来判断wireshark或者tcpdump在 VPN 客户端上,查看发往 192.168.50.100 的数据包是否从所需的网络接口发出。如果没有,则表示您的路由尚未设置,或者不正确。您可以使用route print客户端上的 来验证这一点。

如果路由已推送到客户端,但 OpenVPN 无法创建路由,OpenVPN 调试输出应显示失败。通过verb 4在配置中添加(数字越大表示详细程度越高)或--verb 4在命令行上调用 openvpn 时指定来增加详细程度。

相关内容