可抢占虚拟机下的 Tor 中继/出口节点

可抢占虚拟机下的 Tor 中继/出口节点

我有 Google Cloud Platform 的付费订阅,我想运行 Tor 中继和出口节点。我使用 Docker 镜像量子对象/docker-tor-退出-中继,即插即用。

简而言之,根据收到的答案:

  • g1-micro VM 配置是最便宜的替代方案,但可能没有我想要提供的高性能。
  • 定制虚拟机配备 1 个 vCPU 和 1GB RAM,承诺使用 3 年,似乎是最方便且最实惠的。
  • 可抢占虚拟机类是无用的。
  • 负载均衡器后面的几个实例是一个坏主意。

我最初的理由

由于抢占式虚拟机便宜得多,我想使用具有抢占式虚拟机的实例组。然后,为了拥有高可用性节点,我计划使用 GCP 负载均衡器,以便随时只保持一个 IP 地址和至少一个虚拟机在运行。

另外,我最初计划使用 g1-small VM 类型(1/2 共享 vCPU 和 1.7 GB RAM)来降低成本,并且我正在与其他替代方案进行比较,例如具有“承诺使用”(应用折扣)的常规类 VM。

投资

以下是虚拟机的估算成本(根据计算器):

Config.     | Class       | vCPU | RAM    | C. usage | Price/Mo
----------------------------------------------------------------
g1-micro    | Regular     | 0.2  | 600MB  | Not set  | US$3.88
g1-small    | Preemptible | 0.5  | 1.70GB | Not set  | US$5.11
g1-small    | Regular     | 0.5  | 1.70GB | Not set  | US$13.80
n1-standard | Regular     | 1    | 3.75GB | 3 years  | US$15.60
Custom      | Regular     | 1    | 1GB    | 3 years  | US$11.78
Custom      | Regular     | 1    | 2GB    | 3 years  | US$13.17

vCPU 是 Intel Xeon @ 2.3 GHz,Haswell 微架构。

此外,我们还需要估算出站流量(每月消耗的带宽)成本(对于组而不是单个虚拟机有用):

BW    | Zone 1 | Zone 2 | Zone 3 | Zone 4 | Price
-----------------------------------------------------
70GB  | 40GB   | 15GB   | 5GB    | 10GB   | US$9.42
80GB  | 80GB   | 30GB   | 10GB   | 20 GB  | US$19.27
350GB | 200GB  | 75GB   | 25GB   | 50 GB  | US$48.82
700GB | 400GB  | 150GB  | 50GB   | 100 GB | US$98.07

Zone 1: Americas/EMEA
Zone 2: Asia/Pacific
Zone 3: Australia
Zone 4: China

VM 规格

目前,我正在测试具有以下配置的虚拟机:

  • 1 vCPU Inten Xeon @ 2.30GHz (Haswell)
  • 1GB 内存
  • 操作系统映像:cos-stable-71-11151-71-0
    • 内核:ChromiumOS-4.14.74
    • Kubernetes:1.11.5
    • Docker:18.06.1
    • 家族: cos-stable
  • Docker 映像: quantumobject/docker-tor-exit-relay
  • 启动脚本:run -d -p 2222:22 -p 80:80 -p 9050:9050 -p 9001:9001 quantumobject/docker-tor-exit-relay
  • VM 等级:常规
  • 区域: us-central1

提示:VPC 网络>防火墙并创建一个名为“allow-tor”的规则,并设置:

  • 优先级:500(低于默认值 1000)
  • Targets:指定目标标签
  • 目标标签:allow-tor
  • 协议和端口:指定协议和端口:“tcp:22,80,443,9001,9050”

创建虚拟机/模板时,请转到管理、安全、磁盘、网络、单独租赁, 选择联网,并设置标签您在防火墙设置中设置。

基准

另外,我在 g1-small 和自定义 1 GB RAM 1 vCPU 实例中运行了 openssl 基准测试(openssl speed aes每个 cbc 持续 3 秒),得到了以下结果:

g1-小:

type         16 bytes    64 bytes    256 bytes   1024 bytes  8192 bytes  16384 bytes
aes-128 cbc  102714.85k  114937.26k  118729.12k  119713.45k  120548.01k  120684.54k
aes-192 cbc  87781.72k   96917.15k   99274.67k   100145.83k  100463.96k  100515.84k
aes-256 cbc  76597.38k   83198.89k   84709.38k   85080.02k   85516.29k   85859.83k

风俗:

aes-128 cbc  100811.34k  114144.42k  116054.50k  117985.42k  119586.42k
aes-192 cbc  85914.78k   95220.79k   98367.39k   98994.68k   99095.15k
aes-256 cbc  76171.38k   82969.05k   84497.50k   85145.08k   84728.69k

性能几乎相同,可能是因为与专用的 1 vCPU 相比,共享 vCPU 在需要的某些时刻会获得全部功率,但并非总是如此。

我的问题:

  • 建议每个实例使用多少带宽?

  • 在 GCP 中的一个负载均衡器后面运行一个或多个 Tor 中继/出口节点是否安全?不安全。

  • 运行在 24 小时或更短时间内关闭的可抢占节点是否安全/有用?(IP 地址分配是动态的,不能保证新节点使用相同的 IP)安全但无用。

  • g1-micro或者g1-小VM 规格足以运行性能不错的节点吗?定制的 1GB RAM VM 更便宜,功能更强大。

提前致谢。

答案1

运行多个可抢占节点以实现冗余并不是一个好计划。如果可抢占节点在同一个区域运行,则它们很可能会由于该区域需求的增加而同时关闭。

不同地区的可抢占节点不太可能同时关闭,但风险仍然存在,并且可能取决于其他 GCE 客户的行为,这完全超出了您的控制范围。

如果您关心可用性,请不要使用可抢占节点。它们适用于批处理,其中抢占不是什么大问题,您可以稍后再进行处理。

答案2

运行在 24 小时或更短时间内关闭的可抢占节点是否安全?(IP 地址分配是动态的,不能保证新节点使用相同的 IP)

安全吗?当然。但你永远不会看到任何到它们的流量。这里有一篇关于 Tor 如何审查新中继和出口节点的精彩文章:新中继的生命周期

基本上,任何新的中继在看到任何实际流量之前都要经过 60 多天的“测试”。我可以保证这是准确的,因为我已经运行 Tor 中继大约 2 年了。除非您的节点每次重新启动时都保留相同的 ID,否则您不太可能看到任何实际流量,如果您的节点无法证明其可靠性,它很可能会被置于食物链的较低位置。

此外,如果节点长时间离线,您可能必须重新等待这些时间。由于我搬家了,我的中继离线了 3 个月,我还没有看到流量恢复到以前的水平。

你可以通过查阅 Tor 的指标页面来了解 Tor 对你的中继的看法。例如,这是我的

g1-small VM 规格足以运行高性能节点吗?

Tor 对高性能的理解与整个互联网不同。例如,我在一台相当老旧的 Intel NUC 上运行我的 Tor,该 NUC 配备了相当老旧的 Intel Celeron 处理器和可怜的 RAM,最高速度约为 70Mbps - 因为这就是 OpenSSL 能够通过 CPU 传输的全部速度。对于 Tor 中继(可能不是出口节点)来说,70Mbps 非常高。我想即使是基本的半现代小型 VM 也能超越它。

相关内容