我在本地计算机和另一台无头服务器上使用相同的 ova 映像,该服务器在某些 vsphere esxi 服务器上虚拟化。
在本地计算机上运行 VM 时,我可以通过 NAT(localhost:2222)以及仅主机网络(192.168.56.111:22)访问客户机的 SSH 服务器。
在无头服务器上运行客户机时,我无法使用仅主机网络 ping 计算机。当我尝试使用 NAT 时,端口 2222 在无头服务器上打开,但 ssh 连接超时,因为没有返回任何内容。
vboxmanage showvminfo 显示客户的网络设置如下(本地机器和无头服务器上的输出相同):
NIC 1: MAC: 080027788420, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
NIC 1 Rule(0): name = Rule 1, protocol = tcp, host ip = , host port = 2222, guest ip = , guest port = 22
NIC 2: MAC: 080027FBC41B, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
vboxmanage list hostonlyifs 显示此信息,与我的本地计算机和无头服务器具有相同的值:
Name: vboxnet0
GUID: 786f6276-656e-4074-8000-0a0027000000
DHCP: Disabled
IPAddress: 192.168.56.1
NetworkMask: 255.255.255.0
IPV6Address: fe80::800:27ff:fe00:0
IPV6NetworkMaskPrefixLength: 64
HardwareAddress: 0a:00:27:00:00:00
MediumType: Ethernet
Wireless: No
Status: Up
VBoxNetworkName: HostInterfaceNetworking-vboxnet0
vboxmanage list natnets 显示此信息,与我的本地机器和无头服务器具有相同的值:
NetworkName: NatNetwork
IP: 10.0.2.1
Network: 10.0.2.0/24
IPv6 Enabled: No
IPv6 Prefix: fd17:625c:f037:2::/64
DHCP Enabled: Yes
Enabled: Yes
loopback mappings (ipv4)
127.0.0.1=2
我本地机器和无头服务器上的 ifconfig 显示具有相同值的 vboxnet0 接口。
我不知道为什么我无法在无头服务器上访问客户的 SSH 服务器,非常感谢您的帮助。
答案1
一般情况下,VirtualBox 中的 NAT 仅用于传出会话。传入会话很麻烦。但是,您可以创建端口转发规则,如下所示:
VBoxManage setextradata VMNameHere "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
VBoxManage setextradata VMNameHere "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
VBoxManage setextradata VMNameHere "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222
主机专用网络,顾名思义,就是主机专用网络。这意味着它只能在主机上使用,但在其他地方不可用。因此,您有两个选择:
- 使用桥接适配器而不是主机专用适配器。桥接适配器可从外部世界使用。
bridge-utils
在Linux上创建桥梁
我会使用桥接适配器。
- 编辑 -
桥接适配器就像将 OVA 放在网络上一样。如果您的网络使用 dhcp,您应该会在 dhcp-server 的日志中看到它。或者,您可能使用它nmap
来查找地址。
或者,使用第二个适配器作为桥接适配器,通过 ssh 进入主机并尝试确定服务器监听哪个端口netstat -an