自学内容网 自学内容网

QEMU 用户网络与桥接网络设置总结

1. 用户网络(User-mode Networking)

特点

  • QEMU 虚拟机通过 NAT 访问外部网络。
  • 不需要额外的网络配置,简单易用。
  • 主机和虚拟机之间可以通过特定的 IP 地址(通常是 10.0.2.2)进行通信。

设置示例

qemu-system-x86_64 -hda your_image.img -net nic -net user

与主机通信

  • 虚拟机的 IP 通常为 10.0.2.15
  • 主机通过IP 10.0.2.2 与虚拟机通信。

在虚拟机上,可以主动访问10.0.2.2与主机通信:

ssh 10.0.2.2

scp file 10.0.2.2:/root

在主机上,不能直接访问10.0.2.15与虚拟机通信:

  • 用户网络模式通过 NAT 将虚拟机的 IP 地址映射到主机的 IP 地址。主机的网络栈并不知道如何直接与虚拟机的私有 IP 地址交互,因此无法 ping 通。
  • 解决方法:使用端口转发,通过设置端口转发将虚拟机的特定端口映射到主机的端口,以实现通信。

 端口转发示例(将虚拟机的 SSH 端口转发到主机的 2222 端口):

qemu-system-x86_64 -hda your_image.img -net nic -net user,hostfwd=tcp::2222-:22

在主机上,可以使用以下命令访问虚拟机:

ssh -p 2222 user@localhost

scp -P 2222 file user@localhost:/home/user

2. 桥接网络(Bridged Networking)

特点

  • 虚拟机直接连接到物理网络,获得与主机相同网段的 IP 地址。
  • 适合需要与局域网中的其他设备直接通信的场景。

设置步骤

  • 1 创建桥接接口br0(Linux):
sudo ip link add name br0 type bridge
sudo ip addr add 192.168.1.1/24 dev br0  # 主机的桥接 IP
sudo ip link set br0 up
  • 2 将物理网络接口添加到br0(假设物理接口为 eth0):
sudo ip link set eth0 master br0
  • 3 创建TAP 接口添加到br0

TAP接口是一种虚拟网络设备,虚拟机QEMU通过这个接口发送和接收网络数据包。

第一条命令创建一个名为 tap0 的 TAP 接口,并将其模式设置为 tap,允许当前用户访问。

第二条命令将 tap0 接口激活,使其准备好传输数据。

第三条命令将 TAP 接口连接到桥接接口。

sudo ip tuntap add dev tap0 mode tap user $(whoami)

sudo ip link set tap0 up

sudo ip link set tap0 master br0
  • 4 启动 QEMU 并通过tap0连接到br0

QEMU通过tap0接口连接到网桥br0,br0完成tap0和物理网口eth0直接的网络包转发。

qemu-system-x86_64 -hda your_image.img -netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no -device virtio-net-pci,netdev=mynet0

欢迎点赞关注收藏,共同学习进步!

 


原文地址:https://blog.csdn.net/aspirestro/article/details/142620759

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!