由于我的无线网络适配器不支持桥接,因此让来宾虚拟机连接到开放互联网并拥有与主机位于同一网络中的 IP 地址确实很困难。我使用的是Ubuntu 10.10,KVM版本不支持vde,所以变得更加困难。我该如何解决这个问题?
@stribika 的想法很棒,但我更愿意让我的虚拟机连接到与我的主机相同的网络。例如,我的主机网络是 192.168.1.0,我希望我的虚拟机网络是相同的。
答案1
您应该能够使用用户模式网络堆栈。像这样启动 qemu:
qemu-system-x86_64 \
-smp 1 -m 1024 \
-net user,net=10.0.0.0/8,host=10.0.0.1,hostfwd=tcp:127.0.0.1:2222-10.0.0.2:22 \
-net nic \
-cdrom systemrescuecd-x86-2.0.1.iso -boot d
重要选项:
-net nic
:显示访客的虚拟网卡-net user
:让主机上的qemu进程像其他进程一样通过真实网络进行通信net=10.0.0.0/8
:虚拟网络上的子网host=10.0.0.1
:虚拟网络上的主机IP地址hostfwd=tcp:127.0.0.1:2222-10.0.0.2:22
:主机上的 qemu 进程在端口 2222 上侦听来自 localhost 的 TCP 连接,并将它们转发到虚拟网络 10.0.0.2:22 (以便您可以 ssh 到新虚拟机)
来宾运行
ifconfig eth0 10.0.0.2 up
ip route add default via 10.0.0.1 dev eth0
测试从主机到访客的 SSH
ssh 127.0.0.1 -p 2222
从客人到主人
ssh 10.0.0.1
测试访客的互联网可达性
wget google.com
主机进程的工作方式类似于 NAT 路由器。只有 TCP 和 UDP 流量才有效。特别是 ping 仅适用于访客和主机之间,您无法 ping google.com(我常用的网络测试方法)。这种方法的优点是您甚至不需要 root 权限。
答案2
Catch-22:当连接到 Internet 的全部目的是在 guest 虚拟机上安装 openssh-server 时,主机无法 ssh 到 guest 虚拟机。