无法在 Hetzner VPS 上使用外部 IP

无法在 Hetzner VPS 上使用外部 IP

我最近更改了 Hetzner 上的虚拟服务器模型。新模型有一个外部 IPv4 地址,可以通过互联网访问(应该如此)。但我无法在配置中使用此外部 IP:iptables规则无效,openvpn服务器无法使用此 IP 在任何端口上绑定侦听器等。我在输出中找到了一个“本地”IP 地址 ( 172.31.x.x) ifconfig,如果我在配置中使用它,一切都会顺利进行。

在我的旧服务器上,我可以在任何位置使用它。所以我只是想知道:为什么外部 IP 不能用于我的新服务器?操作系统是Ubuntu 15.04

答案1

Hetzner 已停止为虚拟服务器分配公共 IPv4 地址。据我所知,这一变化发生在他们将产品名称从 VQ 更改为 CX 时。不过产品描述中并未提及 NAT 的使用。

最终,Hetzner 推出了一个更新的云平台,其中虚拟机获得真正的公共 IPv4 地址和路由的 /64 IPv6 前缀。两个版本都共享 CX 名称。

2012 年和 2013 年订购的虚拟服务器将保留其公共 IPv4 地址,直到 2019 年 VQ 线路停用。但 2016 年订购的虚拟服务器只有一个 RFC1918 地址,而 Hetzner 不会将公共 IPv4 地址路由到这样的虚拟服务器。

他们仍然为每个虚拟服务器分配一个专用的公共 IPv4 地址,然后通过 NAT 将其转换为指定的 RFC1918 地址。Hetzner 认为这不是问题,因为这是 1:1 NAT。

正如您所发现的,在配置服务器时,这很容易出错。您必须了解此 NAT。并且,每当您配置某些内容时,您都必须查找映射。对于我们采用这种配置的第一个虚拟服务器,由于这个原因,它在最初几天内配置错误了两次。

任何依赖于了解公共 IPv4 地址的软件要么会出问题,要么需要特殊配置。此外,一些 VPN 和 IP 隧道可能会出现问题,因为隧道数据包不会被 NAT。

如果您确定这些潜在问题不会影响您的预期用途,并且您愿意在进行配置更改时考虑公有地址和私有地址之间的映射,那么您可以接受这种情况。

但请注意,大多数 NAT 实现都是有状态的。如果 NAT 确实是有状态的,则当状态丢失时,您可能会遇到 TCP 连接停滞的情况。

我不知道 Hetzner 使用的 NAT 是有状态的还是无状态的。我能想到的测试有状态性的最明显方法是建立隧道连接,并在建立 TCP 连接后禁用隧道。可惜这种隧道连接根本行不通,所以为了进行这个实验,人们必须先复制他们的 1:1 NAT 配置。我没有尝试这个相当复杂的实验。

您有以下选择:

  • 升级到较新的 CX 线路,Hetzner 将为您提供一个真实的 IPv4 地址和一个路由的 /64 IPv6 前缀。
  • 接受您的流量将经过 1:1 NAT 以及由此带来的缺点。
  • 将所有重要的流量都放在 IPv6 上 - 因为 Hetzner 无需 NAT 就能正确路由 IPv6 流量。
  • 切换到专用服务器(假设这些服务器仍然获得公共 IPv4 地址,这很难弄清楚,因为产品描述中没有任何地方提到 NAT 的使用)。
  • 切换到其他提供商。

答案2

由于您是从 Hetzner 租的,我猜您是说德语的,所以以下是直接来自Hetzner 的支持 wiki

我的虚拟机的 IP 是 172.31.1.100 吗?

或同样:

我的 VM 是否将其他 IP 作为机器人使用?

我的 VM 有私有 IP 吗?

在 CX 模型中,vServer 中的 IPv4 地址是一个私有 IP,与公共 IPv4 地址的 NAT 为 1:1。目前所有的私有 IP 都是:172.31.1.100。公共 IP 将在 Hetzner Robot 显示。

用英语

为什么我的虚拟机的 IP 是 172.31.1.100?

或者:

为什么我的虚拟机的 IP 与机器人中显示的 IP 不同?

为什么我的虚拟机有一个私有 IP?

对于 CX 型号,虚拟服务器的 IPv4 地址是私有 IP,通过 NAT 在公共 IP 上进行 1:1 配置。目前,所有设备的私有 IP 都相同:172.31.1.100。公共 IP 显示在机器人中。

相关内容