如何配置 Ubuntu 客户端以使用 OS X 主机可见的静态 IP,并确保静态 IP 独立于主机的网络配置?我以前为客户端使用桥接网络,但我经常在网络之间移动主机,因此客户端 IP 总是不同的。
首先,我尝试将客户网络配置设置为 NAT,并将主机端口 1022 转发到客户端口 22,这样我至少可以通过 ssh 连接到一个固定地址(localhost:1022):
$ VBoxManage setextradata "Ubuntu Server" "VBoxInternal/Devices/e1000/0/LUN#0/Config/SSH/Protocol" "TCP"
$ VBoxManage setextradata "Ubuntu Server" "VBoxInternal/Devices/e1000/0/LUN#0/Config/SSH/GuestPort" 22
$ VBoxManage setextradata "Ubuntu Server" "VBoxInternal/Devices/e1000/0/LUN#0/Config/SSH/HostPort" 1022
然后,
$ ssh localhost -p 1022
ssh: connect to host localhost port 1022: Connection refused
但这不起作用(如您所见,客户机无法通过 NAT 访问网络,并且 OS X 拒绝连接)。
我想要一个通用的解决方案,让我可以通过固定 IP 与我的客人进行交流。
答案1
首先,localhost 指向 127.0.0.1。该虚拟机可能正在您的计算机上运行,但它的地址与计算机是分开的。
当您在 VirtualBox 中打开 NAT 桥接时,它会创建一个单独的虚拟接口,作为您放置在其后面的 NAT 客户端的“路由器”。您无法连接到 localhost 来访问 VM,因为 localhost 是您的 Mac,而不是 VM。
将此客户机设置为 NAT,然后从其中检查 VM 的地址。使用该地址(其很可能是私有地址,192.168.something)并尝试从您的主机进行连接。
答案2
从VirtualBox 网络手册。我将其用于 NAT 到远程桌面的 Windows 客户端,效果很好,但我还没有从主机本身尝试过。
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"
在上述示例中,到达任何主机接口的端口 2222 的所有 TCP 流量都将转发到客户机中的端口 22。协议名称 tcp 是一个强制属性,定义应使用哪种协议进行转发(也可以使用 udp)。名称 guestssh 纯粹是描述性的,如果省略,将自动生成。--natpf 后面的数字表示网卡,与 VBoxManage 的其他部分一样。
哦,我刚刚意识到这个问题有多老了,哦,希望它能帮助其他人。