似乎 OpenStack 实例的默认运作方式是通过 DHCP 分配一个私有 IP,并将一个浮动 IP 与该实例/私有 IP 关联,此时该实例可通过互联网访问。
OpenStack 似乎在这两者之间做了 NAT。
现在,这应该是每个服务(在实例内运行)的一大难题,因为服务需要知道自己的全局 IP,因为它将其作为某些协议数据的一部分发送。
例如,考虑当 HTTP 与 IP 地址而不是域名一起使用时,实例内部运行的 HTTP 服务器会想要使用实例的 IP 地址发送重定向。
当然,这个例子有点虚构,但它只是为了说明这一点。
有没有办法让实例的 iface 直接监听(公共)浮动 IP?就像 Debian 一样/etc/network/interfaces
:
iface eth0 inet static
address 1.2.3.4
netmask 255.255.255.0
gateway 1.2.3.254
谢谢 :-)
答案1
现在,这应该是每个服务(在实例内运行)的一大难题,因为服务需要知道自己的全局 IP,因为它将其作为某些协议数据的一部分发送。
我能想到的符合这些标准的服务非常少。我能想到的唯一需要直接连接到外部网络的服务是:
- 需要第 2 层邻接的网络级服务(例如 DHCP),以及
- 高性能存储应用程序需要尽可能直接的网络连接存储路径
否则,仅使用 IP 地址提供面向“公众”的服务并不常见。
如果你确实发现自己处于必须将实例直接连接到现有第 2 层网络的有限情况之一,你可以通过创建提供商网络.来自文档:
提供商网络为实例提供第 2 层连接,并可选择支持 DHCP 和元数据服务。这些网络连接或映射到数据中心现有的第 2 层网络,通常使用 VLAN (802.1q) 标记来识别和分离它们。
所以如果您确实需要的话,这个功能是存在的,但是我认为您会发现在几乎所有情况下使用浮动 IP 模型更为合适。