debian下的qemu用tap上网

本文介绍了如何在 Debian 系统中配置 QEMU 通过 TAP 接口实现虚拟机上网。首先安装 kqemu 和必要的工具,然后设置 TAP 虚拟网卡和桥接网络,确保网桥接口使用手动配置的静态 IP,并调整相关设备的权限和模式。最后通过 qemu 启动虚拟机,并提供 kgdb 调试选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考网址:
1 http://wiki.debian.org.tw/index.php/QEMU
2 http://wiki.debian.org/QEMU


1,qemu的安装这里就不赘述,下面就简单介绍安装kqemu。
#aptitude install module-assistant
# m-a a-i kqemu
# echo kqemu >> /etc/modules //这句是把keqmu模块加入开机自动加载
# modprobe kqemu
2,kqemu安装完后,安装tap,tap是虚拟网卡接口,连接虚拟机和host机的桥梁,安装 bridge-utils和uml-utilities.(bridge-utils是将tap/tun和实体网络连接在一起的,如果tap/tun没有和实体网络连接在一起,guest os 就只能放我host os,参考网址1)
#aptitude install bridge-utils uml-utilities
可以把一下四个命令放在你的bash.bashrc里面,不然每次重启机器,都要执行这几个命令。
#modprobe tun
#mknod /dev/kqemu c 250 0
#chmod 766 /dev/kqemu
#tunctl -u root -t tap0

保证/dev/net/tun的权限是666。
3,和bridge连接的网络ip必须是0.0.0.0,并且是promisc模式。
于是可以设置/etc/network/interfaces如下:

# The loopback network interface
auto lo
iface lo inet loopback

#auto eth0
#iface eth0 inet static
#address 192.168.1.244
#gateway 192.168.1.1
#netmask 255.255.255.0

iface br0 inet manual
up brctl addbr br0
up brctl setfd br0 0
up brctl sethello br0 0
up brctl stp br0 off
up brctl addif br0 eth0
up ifconfig eth0 0.0.0.0 promisc up
up dhclient br0
down ifconfig br0 down
down brctl delif br0 eth0
down brctl delbr br0
down dhclient eth0

上面是手动设置网桥,下面是设置静态ip给网桥,下面是我的/etc/network/interface内容:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).


# The loopback network interface
auto lo
iface lo inet loopback


#auto eth0
#iface eth0 inet static
#       address 192.168.2.244
#       netmask 255.255.255.0
#       gateway 192.168.2.1


auto br0
iface br0 inet static
        address 192.168.2.244
        netmask 255.255.255.0
        gateway 192.168.2.1
        bridge_ports eth0


这样,要用qemu的时候,就可以通过ifup br0开启bridge ,ifdown br0关闭bridge.当然tap0也需要弄成promisc模式和ip=0。可以通过设置/etc/qemu-ifup来实现。
#!/bin/sh

if test $(/sbin/ifconfig | grep -c $1) -gt 0; then
        /sbin/brctl delif br0 $1
        ifconfig $1 down
fi


/sbin/ifconfig $1 0.0.0.0 promisc up
/sbin/brctl addif br0 $1
/usr/bin/tunctl -u root -t $1
exit 0

3,现在,tap和bridge架构已经成功搭建,可以用qemu启动guest os了。举我的例子来说。
#qemu -s -hda i386.img -kernel linux-2.6.33.2/arch/x86/boot/bzImage -append "root=/dev/hda1 rw console=ttyS0" -net nic,vlan=0  -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup -nographic
NOTE:i386.img是我已经装好的系统,bzImage是我想要调试的内核,加 -s是qemu中的可以用kgdb调试内核的选项。

 

如果还是无法上网,可以试下

echo 1 > /proc/sys/net/ipv4/ip_forward 

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE 

不过按照步骤来的话,几乎肯定是可以能上网的。

### QEMU简介 QEMU是一个开源的硬件虚拟化工具,能够模拟多种计算机体系结构并提供全系统仿真功能[^1]。对于希望在Linux平台上运行不同操作系统环境或测试新内核版本的研究人员和开发者来说非常有用。 ### 安装QEMU 大多数现代Linux发行版都自带了QEMU包管理器可以直接安装: ```bash sudo apt-get install qemu-system-x86_64 # Debian/Ubuntu系 sudo yum install qemu-kvm # RedHat/CentOS/Fedora系 ``` 如果想要获取最新特性,则可以从源码编译安装最新的稳定版本[^2]。 ### 启动简单虚拟机实例 为了启动一个简单的基于硬盘镜像文件(如`example.img`)创建好的Guest OS,在命令行输入如下指令即可: ```bash qemu-system-x86_64 -m 1024 -hda example.img ``` 这里指定了内存大小为1GB(-m参数),并且加载了一个预先准备过的磁盘映射作为主要存储设备(-hda参数)。 ### 使用图形界面管理工具 除了通过CLI方式操作外,还可以借助GUI应用程序来简化配置过程。Virt-manager就是一个很好的例子,它提供了直观易用的操作面板用于管理和监控KVM/QEMU虚拟机的状态变化情况。 ```bash sudo apt-get install virt-manager # Debian/Ubuntu系 sudo yum install virt-manager # RedHat/CentOS/Fedora系 ``` ### 调试与性能分析 当遇到问题时可以启用跟踪机制以便更好地理解内部工作流程以及定位潜在错误所在位置。QEMU支持多个追踪后端选项(nop,dtrace,ftrace等),其中ftrace特别适合于记录函数调用序列从而辅助开发调试活动[^4]。 ### 高级网络设置 利用TAP/TUN接口配合桥接模式实现宿主机与其他guest之间透明通信;或者采用NAT方案让后者访问外部互联网资源变得更为便捷高效。具体做法可参阅官方文档中的联网章节获得更详细的指导说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值