我有一个家庭服务器,上面部署了 OpenStack 和一些我使用的很酷的服务,一切都在我的家庭网络内。我想在家庭网络之外使用这项服务。我开始使用 hamachi,它运行得很好,但 hamachi 不是开源的,而且限制很少。所以我决定使用一些开源的、可以提供与 hamachi 相同功能的东西。
我正在考虑 openVPN,但是因为我没有公共 IP,所以我需要一些可以为我提供 NAT 后面的设备之间的连接的东西。
现在我的问题是:是否可以使用 TOR 或其他基础设施在内部创建 VPN 并连接 NAT 后面的设备(即家庭服务器)?
答案1
如果您使用“动态 DNS”提供商,则可以在没有静态 IP 的家庭网络上使用 OpenVPN。
这些服务的工作原理是为您提供 DNS(通常让您在几个域之间进行选择),并要求您在家庭网络的某个地方运行更新客户端。当您的 IP 发生变化时,更新客户端会自动告知 DNS 提供商您的新 IP。
DynDNS 过去免费提供这项服务,No-IP 可能仍会这样做。搜索会显示其他提供商。
VPN 与代理人就像 Tor 一样,它也是身份验证。OpenVPN 要求您设置服务器证书,并为每个连接的客户端设置证书(可选)。这样就可以验证客户端和服务器。此外,VPN 会在主机之间的流量离开主机之前对其进行加密。
Tor 不进行身份验证,也不进行大多数人需要的加密 - 它是一种传输技术,使从你到目的地的路径随机化,并将流量包装在加密中,这样中间跳跃就无法查看对话 - 但终端跳跃或出口节点能阅读所有流量 -除非单独加密!。
如果您想要确定与 Tor 另一端的人交谈,您仍然需要证书(如果您关心的话)- 如果您不希望出口节点具有访问权限,则需要额外的加密层。
此外,由于 Tor 旨在混淆流量,并依靠志愿者系统来实现这一点,因此性能会比没有它时更慢,而且不稳定。
尽管如此,您可以设置 Tor 隐藏服务,它可以很好地允许网络外的主机访问,但有两个例外:A) 由于 Tor 的工作方式,您将不知道用户的传入 IP,传入 IP 将是出口节点的 IP,B) Tor 客户端会每隔一段时间(10 分钟 IIRC)切换电路,这意味着每 10 分钟用户的 IP 可能会发生变化。因此,如果您的服务无法处理这种情况,它们就会中断。使用 cookie 跟踪会话的基于 HTTPS 的服务应该没问题,但大文件可能会成为问题。
最简单的做法是为每个在端口上监听的服务器设置 1 个隐藏服务,理想情况下,如果您有多个基于 HTTPS 的服务,您应该尝试对它们进行反向代理,以便它们都在单个端口上工作。
请注意我说的是 HTTPS - 因为如果您没有使用 HTTPS 而是使用普通的未加密的 HTTP,那么出口节点可以收集有关您正在做的一切的信息,就像任何代理一样。