Ste*_*ler 44 performance openvpn embedded
我正在评估一个客户端系统,其中许多 OpenVPN 客户端连接到 OpenVPN 服务器。“许多”是指 50000 - 1000000。
我为什么要这样做?客户端是分布式嵌入式系统,每个都位于系统所有者 dsl 路由器后面。服务器需要能够向客户端发送命令。我的第一个天真的方法是让客户端通过 openvpn 网络连接到服务器。这样,可以在两个方向上使用安全通信隧道。
这意味着所有客户端始终连接到服务器。多年来,有许多客户在总结。
问题是:当达到一定数量的客户端时,OpenVPN 服务器会爆炸吗?我已经知道最大 TCP 连接数限制,因此(以及其他原因)VPN 必须使用 UDP 传输。
OpenVPN 专家,您有什么看法?
the*_*bit 28
我怀疑以前是否曾尝试过这么大的设置,因此您在尝试时可能会突破极限。我可以找到一篇关于400 个客户端的VPN 部署的文章,但从文本来看,作者只是依赖于对每个 CPU 可以运行多少个客户端的粗略估计,并且对他的设置将如何执行缺乏了解。
您主要需要考虑以下两点:
您的数据传输将要使用的带宽需要在 VPN 服务器端进行加密/解密,从而消耗 CPU 资源
即使没有数据传输,OpenVPN 客户端连接也会消耗服务器上的内存和 CPU 资源
当今可用的任何体面的 PC 硬件都应该很容易使带有 Blowfish 或 AES-128 的千兆链路饱和,即使 100 美元的嵌入式设备也能够达到接近 100 Mbps 的速率,因此不应担心由于带宽强度导致的 CPU 瓶颈。
给定 3600 秒的默认密钥更新间隔,1,000,000 个客户端的数量意味着服务器需要能够平均每秒完成 278 次密钥交换。虽然密钥交换是一项 CPU 密集型任务,但如果需要,您可以将其卸载到专用硬件 - 可用的加密加速卡很容易满足并超过此数量的 TLS 握手。并且内存限制也不应该太麻烦 - 64 位二进制文件应该处理您可能会遇到的任何虚拟内存限制。
但是 OpenVPN 的真正美妙之处在于您可以非常轻松地扩展它——只需设置任意数量的 OpenVPN 服务器并确保您的客户端正在使用它们(例如通过 DNS 循环),配置您选择的动态路由协议(通常这将是 RIP,因为它很简单)并且只要您有足够的硬件,您的基础设施就能够支持任意数量的客户端。
Ait*_*tch 27
我实际上已经这样做了,尽管在 DSL 路由器后面“只有”几百个类似的远程连接。我不能对重新生成密钥的问题发表太多评论,但我在此过程中学到了一些实用的东西:
1)在部署客户端的时候,一定要在客户端conf里指定多个VPN服务器,vpn1.example.com, vpn2.example.com, vpn3..... 即使你现在只提供一两个,你给自己的净空。正确配置后,客户端将继续随机重试,直到找到有效的方法。
2) 我们使用自定义 AWS VPN 服务器映像,并且可以按需启动额外容量,Amazon DNS (R53) 处理 DNS 方面的事情。它与我们的其他基础设施完全分离。
3) 在服务器端,小心使用网络掩码来限制潜在客户端的数量。这应该会强制客户端使用替代服务器,从而缓解 CPU 问题。我认为我们将服务器限制在 300 个左右的客户端。这个选择对我们来说有点武断——如果你喜欢“直觉”。
4) 同样在服务器端,您应该谨慎使用防火墙。简而言之,我们的配置使客户端可以通过 VPN 连接,但服务器严格禁止除已知 IP 地址外的所有 ssh 连接入站。如果我们偶尔需要,我们可以 SSH 到客户端,他们不能 SSH 到我们。
5) 不要依赖 OpenVPN 在客户端为您重新连接。10 次中有 9 次会,但有时会卡住。有一个单独的过程来定期在客户端重置/重启 openVPN。
6) 您需要一种为客户端生成唯一密钥的方法,以便您有时可以拒绝它们。我们使用我们的服务器构建 (PXEboot) 过程在内部生成这些。从来没有发生在我们身上,但我们知道我们可以做到。
7) 您需要一些管理工具、脚本来有效地监控您的 VPN 服务器连接。
不幸的是,关于如何做到这一点的材料并不多,但通过仔细配置,这是可能的。
归档时间: |
|
查看次数: |
55592 次 |
最近记录: |