LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

QEMU和主机之间网络通信:使用用户网络模式+端口转发建立主机和虚拟机之间通信

QEMU使用主机网络主要有以下几种方式,每种方式依赖的技术以及它们是否可以互相访问如下:

1.桥接网络(BridgedNetworking):
-依赖技术:桥接网络依赖于在宿主机上创建一个网络桥接接口,将物理网络接口(如eth0)和虚拟机网络接口连接到这个桥接接口上。这样,虚拟机就可以直接与宿主机所在的物理网络通信,获得与宿主机相同网段的IP地址。
-是否可以互相访问:是的,虚拟机和宿主机在同一网络中,可以直接通信。

2.TAP/TUN接口:
-依赖技术:TAP/TUN是Linux内核支持的虚拟网络设备,TAP工作在数据链路层,常用于网络桥接。TUN工作在网络层,负责与应用程序交换IP数据包。它们完全由软件模拟实现,负责在内核协议栈和用户进程之间传送协议数据单元。
-是否可以互相访问:是的,通过TAP/TUN接口,虚拟机可以直接与宿主机网络通信,宿主机和虚拟机可以互相访问。

3.用户模式栈(Usermodestack):
-依赖技术:这种方式在QEMU进程中实现一个协议栈,这个协议栈可以被视为一个主机与虚拟机之间的NAT服务器,负责将QEMU所模拟的系统网络请求转发到外部网卡上面
-是否可以互相访问:这种方式下,虚拟机不能将外面的请求转发到虚拟机内部,外部网络不能主动与虚拟机通信,但虚拟机可以访问外部网络

4.socket方式:
-依赖技术:为VLAN创建套接字,并把多个VLAN连接起来。这种方式又分为TCP和UDP两种类型,通过套接字在VLAN之间建立连接。
-是否可以互相访问:是的,通过socket连接,不同的VLAN可以相互通信。

5.VDE:
-依赖技术:VDE也是用于连接VLAN的,如果没有VLAN连接需求基本用不到。
-是否可以互相访问:VDE主要用于VLAN之间的连接,如果配置正确,VLAN内的虚拟机可以互相访问。

总结来说,桥接网络和TAP/TUN接口方式允许虚拟机与宿主机以及其他网络设备在同一网络中直接通信,而用户模式栈和socket方式主要用于虚拟机与外部网络的通信,VDE则用于VLAN之间的连接。

1 通过用户模式网络建立虚拟机到主机网络连接

建立用户网络模式网络:

qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic -smp 1 -kernel Image -append "rootwait root=/dev/vda console=ttyAMA0" \
-netdev user,id=eth0 \
-device virtio-net-device,netdev=eth0
\
-drive file=rootfs.ext4,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 \
-nographic

 虚拟机通过ssh访问主机:

ssh user@10.0.0.2

2 通过用户模式网络+端口转发建立虚拟机和主机网络连接

给用户网络添加端口转发,建立双向连接:

qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic -smp 1 -kernel Image -append "rootwait root=/dev/vda console=ttyAMA0" \
-netdev user,id=eth0,net=192.168.1.0/24,hostfwd=tcp::10022-:22 \
-device virtio-net-device,netdev=eth0 \
-drive file=rootfs.ext4,if=none,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0 \
-nographic

2.1 修改虚拟机配置

修改/etc/ssh/sshd_config的选项:

PermitRootLogin yes

修改root密码:

passwd root

 通过/etc/init.d/S50sshd restart重启sshd服务。

2.2 ssh互登录

在虚拟机通过ssh访问主机:

ssh user@192.168.1.2

在主机通过端口转发访问虚拟机ssh服务:

ssh -p 10022 root@localhost

 

posted on   ArnoldLu  阅读(975)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2017-12-07 如何展开Linux Memory Management学习?
2017-12-07 《Systems Performance》阅读笔记及收获

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示