首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何建立适当的OpenVPN基础设施,以便与中间的中央OpenVPN服务器进行多个独立的客户端到客户端的通信。

如何建立适当的OpenVPN基础设施,以便与中间的中央OpenVPN服务器进行多个独立的客户端到客户端的通信。
EN

Server Fault用户
提问于 2018-02-02 08:07:28
回答 1查看 1.1K关注 0票数 1

我在设置一个简单的OpenVPN解决方案方面有一点经验,其中有几个客户端连接到一个中心服务器,并在一个虚拟专用网中进行完全通信。

然而,我现在正准备从零开始建立一个OpenVPN-基础设施,我在质疑我自己,我考虑过的方法是否合理。OpenVPN基础结构具有以下特征:

  • 有两种类型的N个位点:
    • 移动站点
    • 固定点

  • 从逻辑上讲,每个移动站点都有一个指定的固定站点。
  • 站点A的固定客户只能与站点A的移动客户交谈,反之亦然
  • 每个站点应该有一个或多个移动客户端(linux)通过移动网络连接到中央服务器(linux),因此没有固定的IP,因为提供商的NAT可以直接到达。
  • 每个站点应该有一个或多个固定客户端(窗口)连接到一个中央服务器。每个客户端都应该有可能连接到一个移动客户端或一个移动客户端的子集。但是,固定客户端一次不能与一个以上的移动客户端通信。
  • 两个连接客户端之间的通信应该与所有其他可能已建立的连接隔离开来。
  • 移动客户端很可能总是试图连接到中央服务器。但是,它们可能被配置为仅根据请求进行连接。
  • 固定客户端可以在任何时候建立到中央服务器的连接,并且必须能够立即与所需的移动客户端(当然,当它也被连接时)通信。
  • 一个移动站点的所有移动客户端之间的通信或一个移动站点的一个子集之间的通信可能是未来的一个需求。然而,即使给出了这一要求,固定客户端仍然只能连接到一个移动客户端。
  • 固定的客户端,即使属于同一个站点,也不需要相互交谈。
  • 一个负责基础设施的管理固定客户端必须能够访问每个移动客户端(每次一个),无论它属于哪个站点。行政客户从来不需要和固定的客户交谈。
  • 整个基础设施将(首先)拥有所有带有OpenVPN 2.1.3的移动客户端,这是非常古老的,并且可能会随着固件更新而改变(我不负责)。固定客户端和服务器将有更多最新版本的OpenVPN。
  • 固定客户端和移动客户端之间定期传输的数据量相当低(我预计它将少于几个KiB/s),但随着时间的推移,这可能会大幅度增加,这取决于我们将来将使用哪些额外的通信技术。

在阅读和思考之后,我想出了一个想法,即所有这些要求都可以通过以下方式来满足:

  • 提供单一的中央OpenVPN服务器(考虑使用https://github.com/kylemanna/docker-openvpn之类的包含坞的解决方案)
  • 提供一个脚本化的基础设施,其中管理当局可以请求一对临时证书/pk和移动cert/pk,并在OpenVPN服务器中执行配置更改,这将根据所使用的公共名称设置一些路由/ip信任。
  • 通过简单地使用特定的cert/pk对连接到服务器,在固定客户端中提供选择要连接到的所需移动目标的可能性。

这听起来像一个符合要求的合理机制吗?如果考虑到可伸缩性和速度的方法,我是应该设置这样的东西,还是应该对替代方案(甚至是OpenVPN以外的其他技术)做一些研究?

谢谢你提前提出意见。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2018-02-02 10:47:48

对不起,我没有时间完全考虑你的回答(尽管我承认,这是对如此精辟的解释的赞扬,但我承认这是罕见的),但下面列出了一些你可能还不熟悉但可能有助于你向前迈进的各种想法:

  • 您可能有多个OpenVPN实例运行在单个服务器上(在不同的端口上);这可能提供了客户机组的粗粒度分离(请参阅下面的Netfilter)。
  • 使用拓扑subnet连接客户端并将它们放到不同的私有子网中;您可能有任意数量的私有网络由OpenVPN服务器实例使用。
  • 在服务器配置中启用client-to-client选项,允许客户端在单个OpenVPN服务器实例的上下文中相互通信。
  • 使用push "route <addr> <netmask>"可以告诉客户端他们可以通过OpenVPN连接到达哪些其他网络(即它们连接时碰巧连接到的“本地”-the连接之外的网络);请注意,您可能需要在OpenVPN配置中具有匹配的iroute指令。
  • 您可以通过client-config-dir参数(称为ccd)使用客户端特定的配置片段;这允许将特定的路由指令推送到特定的客户端,以便不同的客户端能够在需要时连接到不同的网络集。
  • 完成OpenVPN设置后,您可以使用Netfilter (iptables)对其进行细化,因为OpenVPN处理的所有通信量仍然通过FORWARD链的批准表传递,因此在这里您可以控制由OpenVPN处理的哪些网络可以相互通信。
  • 还可以让OpenVPN同时接受呈现具有相同公共名称(CN)的证书的客户端的连接;这可以作为将相同设置应用于不同客户端的最后手段(通常通过上面提到的ccd机制)。我要强调的是,这是最后的解决方案,因为它排除了对单个客户端访问的细粒度撤销。

希望这能有所帮助!

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/895298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档