我们正在公共数据中心内租用许多主机。数据中心不提供专用VLAN。所有主机都接收一个(或多个)公共IPv4 / IPv6地址。主机配备了非常现代的CPU(Haswell四核,3.4GHz),并具有Gbit上行链路。数据中心的不同区域(房间,楼层或建筑物?)通过Gbit或500Mbit链接相互连接。我们的房东正在运行debian wheezy。目前,我们正在运行10台以上的主机,并希望在不久的将来实现增长。
我正在寻找一种方法,以使所有主机之间可以安全保密地进行通信。第3层很好,第2层还可以(但不是必需的)。由于我无权访问VLAN,因此它必须是某种类型的VPN。
对我来说重要的是:
- 高产量,理想情况下接近线速
- 分散的,网格化的体系结构-这是为了确保吞吐量不会因中央元素(例如VPN集中器)而减慢
- CPU占用空间不会过多(考虑到AESNI和GCM密码套件,我希望这不是一个荒谬的要求)
- 操作的易用性;设置不太复杂;网络可以增长而不会失去已建立的连接
我们目前正在使用tinc。它会打勾[2]和[4],但是我只能达到960Mbit / s线速的大约600Mbit / s(单工),并且我完全松开了一个内核。另外,tinc 1.1(目前正在开发中)尚未使用多线程,因此我只能使用单核性能。
传统的IPSec是不可能的,因为它需要一个中央元素或要配置的隧道的一小部分(以实现[2])。带有机会主义加密的IPsec将是一个解决方案,但是我不确定它是否能使其成为稳定的生产代码。
我今天偶然发现了tcpcrypt。除了缺少身份验证,它看起来像我想要的。用户空间的实现闻起来很慢,但其他所有VPN也是如此。他们谈到了内核实现。我还没有尝试过,并且对它在[1]和[3]中的表现感兴趣。
还有什么其他选择?人们在做什么,谁不在 AWS上?
附加信息
我对GCM感兴趣,希望它可以减少CPU占用空间。请参阅有关该主题的英特尔论文。当与一位小型开发人员交谈时,他解释说,即使使用AESNI进行加密,HMAC(例如SHA-1)在Gbit速度下仍然非常昂贵。
最终更新
传输模式下的IPsec可以完美工作,并且完全符合我的要求。经过大量评估之后,我选择了Openswan而不是ipsec-tools,这仅仅是因为它支持AES-GCM。在Haswell CPU上,我测量约910-920Mbit / sec的单工吞吐量,其中CPU负载约为8-9%kworkerd
。