如何在 VirtualBox 中运行的服务器上访问地址 127.0.0.1-127.0.0.10

如何在 VirtualBox 中运行的服务器上访问地址 127.0.0.1-127.0.0.10

我需要从主机查询VirtualBox虚拟机(安装了Windows 10)中的特定IP地址127.0.0.1-127.0.0.10。

例子:

主机 IP:192.168.1.1

虚拟机IP:192.168.1.2

重点是,当我向本地地址(例如主机上的 127.0.0.5)发出查询时,位于本地地址 127.0.0.5 的虚拟机上的服务应该响应我。如果我在主机的地址 127.0.0.4 上进行查询,我应该从虚拟机上的地址 127.0.0.4 获得响应。

ETC

通信将在端口 161 (SNMP) 上进行。

这可能吗?

答案1

恕我直言,不是。

查看RFC 5735 (特别是最后一句)

127.0.0.0/8 - 此地址块被指定为 Internet 主机环回地址。由高级协议发送到此地址块内任意地址的数据报都会在主机内环回。这通常仅使用 127.0.0.1/32 进行环回。如 [RFC1122] 第 3.2.1.3 节所述,整个 127.0.0.0/8 地址块内的地址不会合法地出现在任何网络上。

至于为什么需要本地主机 IP,您可以使用分配给 VM 的“普通”IP。或者将虚拟 IP 添加到 NIC,或者添加另一个虚拟 NIC。

答案2

您不能这样做。块 127.0.0.0/8 是为本地主机保留的,无法在该主机之外访问(请参阅RFC3330RFC5735RFC6890)。

如果你确实需要访问 127.0.0.10 上的服务,那么从主机外部访问该服务的唯一方法是在该机器上创建一个数据包转发器,该转发器侦听其公共 IP 地址(示例中为 192.168.1.2)并将数据包转发到 128.0.0.10。类似socat可以为您做到这一点。

例如(仅经过轻微测试):

sudo socat UDP4-RECVFROM:161,fork,reuseaddr UDP4-SENDTO:127.0.0.5:161,reuseaddr

然而,什么会更好是修改仅监听本地端口的服务的配置,并让其监听公共 IP 地址。

答案3

您可以在虚拟机中添加多个网卡,而不是使用环回地址 127.0.0.x(这意味着将流量重定向回同一台机器)。每个网卡都可以在操作系统中分配一个静态 IP,或者使用 DHCP 获取多个租约。

使用其 LAN IP 地址 192.168.1.x 并连接到该地址。

相关内容