我正在使用 Virtualbox 运行 CentOs,我想知道用于连接我的虚拟机 (CentOs) 和本地计算机 (Windows) 的 IP。
当我ifconfig
在 CentOs 上运行时,得到以下结果:
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255
inet6 fe80::5048:63:3271:b7d4 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:46:b8:4f txqueuelen 1000 (Ethernet)
RX packets 214900 bytes 249355246 (237.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 29228 bytes 1764854 (1.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 655 bytes 167014 (163.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 655 bytes 167014 (163.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:53:37:45 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
我如何知道 3 个 IP(10.0.2.15
、127.0.0.1
或192.168.122.1
)中的哪一个正在将我的虚拟机 CentOs 与我的本地计算机 (Windows) 连接?
答案1
这取决于您的来宾操作系统网络设置。看起来它使用 10.0.2.15 使用 NAT 模式与您的主机进行通信(可通过 IP 10.0.2.15/24 进行识别,因为它是 NAT 模式的默认网络)。除非您的主机连接到(真实)10.0.2.0/24 网络,否则它可能会以桥接模式连接到您的主网络接口。
我假设您想要进行嵌套虚拟化。因为它是 KVM 的默认桥接接口,并且 IP (192.168.122.1/24) 也是它的默认值。因此,你到了virbr0
那里。
结论,它使用 10.0.2.15 与您的 Windows 计算机进行通信。请参阅下表以更好地理解:
+------------+---------+--------------+---------+------------+--------------+
| Mode | VM→Host | VM←Host | VM1↔VM2 | VM→Net/LAN | VM←Net/LAN |
+------------+---------+--------------+---------+------------+--------------+
| Host-only | + | + | + | – | – |
+------------+---------+--------------+---------+------------+--------------+
| Internal | – | – | + | – | – |
+------------+---------+--------------+---------+------------+--------------+
| Bridged | + | + | + | + | + |
+------------+---------+--------------+---------+------------+--------------+
| NAT | + | Port forward | – | + | Port forward |
+------------+---------+--------------+---------+------------+--------------+
| NATservice | + | Port forward | + | + | Port forward |
+------------+---------+--------------+---------+------------+--------------+
有关 Virtualbox 网络的更多详细信息:https://www.virtualbox.org/manual/ch06.html
答案2
它不是 127.0.0.1 - 这是环回地址。它是 enp0s3 或 virbr0。
根据这篇文章,虚拟机使用 virbr0 连接到外部环境:https://askubuntu.com/questions/246343/what-is-the-virbr0-interface-used-for
我希望 virbr0 用于 Linux 主机连接到来宾。
我认为这排除了环回和 virbr0。我猜答案是 enp0s3。
你也许可以使用来测试这个ip route get <some external address>
答案3
所以几周前我也有类似的问题。我确实创建了这个帐户来回应,因为我的错误对我来说非常有启发。
您的虚拟机有自己的网络,您可以拥有 NAT 或桥接网络。因此,当您运行 ifconfig 并看到 vibr0 时,给出的 IP 地址实际上是虚拟机网络接口的网关地址。如果这是裸机安装,您将看不到 vibr0,因为没有支持该操作系统的虚拟机。
如果您的虚拟机是 NAT(我记得这是网络连接,但这不是缩写词的意思),它将有一个来自虚拟机网关的分支,因此您的 IP 地址看起来更像是 192.168.122.X。使用 Annahri 在 6.3 NAT 下发布的链接:
启用 NAT 的虚拟机的行为非常类似于通过路由器连接到 Internet 的真实计算机。在本例中,路由器是 Oracle VM VirtualBox 网络引擎,它透明地映射进出虚拟机的流量。在 Oracle VM VirtualBox 中,此路由器放置在每个虚拟机和主机之间。
如果启用了 NAT,他将通过虚拟机“路由器”vibr0,它具有不同的网关地址。
在我看来,它就像是桥接的。这意味着您已将网络从虚拟机桥接到主机网络。我向你保证,如果你在 Windows 中打开命令提示符并运行 ipconfig,你的主机的 IP 地址类似于 10.0.0.X。当您从命令提示符运行 ipconfig 时,它还会为您提供网关地址,该地址应为 10.0.0.1。
我的 IP 地址与您的类似,当我将虚拟机从 NAT 更改为桥接时,重新启动时 IP 地址从 192 变为 10。
根据我的经验,还有一点是,任何以 .1 结尾的 IP 地址都是网关地址。所以你的问题深入探讨了网络,如果你了解不多,它会迫使你学习。您的虚拟机应允许您在设置期间在两者(NAT 或桥接)之间进行选择,并允许您在设置后在虚拟机首选项中从一种更改为另一种。请记住,如果您将其从一个更改为另一个,您将获得一个新的 IP 地址,但如果您改回原来的 IP 地址,则应保留旧的 IP 地址。
Annahri 发布了一个更深入的链接,因为除了 NAT 或桥接之外还有更多选项。