我已经安装了 opennebula 并且已经关注这教程。不幸的是,我无法通过 ssh 连接到似乎处于运行状态且已经拥有 IP 的虚拟机。问题可能是我只有一个 NIC,虽然我读到我应该使用桥接,但我不确定这是否可行以及如何使用。
brctl show 命令输出是
bridge name bridge id STP enabled interfaces
br0 8000.50e549b5e2aa no eth0
vnet0
virbr0 8000.000000000000 yes
vnet0 是虚拟机的接口。如果我构建一个虚拟机来使用虚拟网桥 virbr0,我也会遇到同样的问题。
我的接口文件是
iface br0 inet static
address X.X.X.172
netmask 255.255.255.0
gateway X.X.X.200
pre-up ifconfig eth0 down
pre-up brctl addbr br0
pre-up brctl addif br0 eth0
pre-up ifconfig eth0 up
post-down ifconfig eth0 down
post-down brctl delif br0 eth0
iface eth0 inet manual
在 ifconfig 中,br0 被分配了在接口中定义的 IP(公共 IP),而 vnet0 似乎发送了数据(TX 字节 > 0),但从未接收(RX 字节 = 0)。我遗漏了什么吗?是否可以通过 ssh 连接到具有一个 NIC 的虚拟机,或者我需要第二个 NIC?
答案1
OpenNebula 在其文档中假设的内容这里主机使用两个物理接口,一个用于专用网络,一个用于互联网连接。当然,如果主机只有一个接口,它只能连接到其中一个网络。为了不丢失互联网连接,我尝试的解决方案是更改接口文件,以便 br0 接口由 DHCP 自动分配 IP
iface br0 inet dhcp
我还更改了网络定义文件,使其包含未由 dhcp 分配的公共 IP 地址租约。我实例化的虚拟机已成功分配公共 IP。虽然我能够通过 ssh 连接到该虚拟机,但互联网上的任何人都可以,所以我不会保留此配置。