如何通过无线将 KVM 访客连接到互联网

Dav*_* S. 4 networking wifi kvm ubuntu

因为我的无线网络适配器不支持桥接,所以让来宾 VM 连接到开放的互联网并在与主机相同的网络中拥有 IP 地址真的很困难。我用的是Ubuntu 10.10,KVM版本不支持vde,所以更难。我该如何解决?

@stribika 的想法很棒,但我更愿意让我的 VM 连接到与我的主机相同的网络。例如,我的主机网络是 192.168.1.0,我希望我的 VM 网络是相同的。

str*_*ika 7

您应该能够使用用户模式网络堆栈。像这样启动 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
Run Code Online (Sandbox Code Playgroud)

重要选项:

  • -net nic: 给guest显示一张虚拟网卡
  • -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
Run Code Online (Sandbox Code Playgroud)

测试从主机到访客的 SSH

ssh 127.0.0.1 -p 2222
Run Code Online (Sandbox Code Playgroud)

从客人到主人

ssh 10.0.0.1
Run Code Online (Sandbox Code Playgroud)

测试客人的互联网可达性

wget google.com
Run Code Online (Sandbox Code Playgroud)

主机进程的工作方式类似于 NAT 路由器。只有 TCP 和 UDP 流量将起作用。特别是 ping 只能在来宾和主机之间运行,您无法 ping google.com(我常用的网络测试方法)。这种方法的优点是您甚至不需要 root 权限。