ubuntu 14.04 qemu 联网

1、确认host的内核支持TAP/TUN设备

ubuntu14.04默认支持tun/tap设备。如果不支持,可以自己编译。TUN模块的内核配置项位于:

Device Driver --> Networking support --> Universal TUN/TAP device driver support

2、编写QEMU的TAP初始化脚本
QEMU的TAP初始化脚本缺省是 /etc/qemu-ifup,它的内容很简单:
#!/bin/sh
/sbin/ifconfig $1 192.168.1.10
/etc/qemu-ifup文件需要增加可执行的权限。

3、虚拟机的网络设置
虚拟机的启动命令行增加网络参数
-net nic -net tap
即可启动TAP网络模式。注意:因为创建TAP网卡需要root权限,所以必须用root用户启动QEMU。
虚拟机启动后,用ifconfig命令设置网络,要求它的IP与host的tap网口的IP(即在上个步骤里qemu-ifup文件中设置的IP)处于同一网段。例如:
ip addr add 192.168.1.110/24 dev eth0

再验证与host的联网:
在虚拟机上执行
ping 192.168.1.10
在host机上执行
ping 192.168.1.110
都应能正确ping通,说明虚拟机与host已正常联网,host机通过192.168.1.110与虚拟机通信。

4、使普通用户能执行
上面的方法美中不足的是必须用root用户启动QEMU虚拟机。要使普通用户能执行,需要写一个执行QEMU的脚本 qemu-tap:
#!/bin/sh
USERID=`whoami`
iface=`sudo tunctl -b -u $USERID`
ranmac=$(echo -n DE:AD:BE:EF ; for i in `seq 1 2`; \
do echo -n `echo ":$RANDOM$RANDOM" | cut -n -c -3` ;done)
qemu $@ -net nic,vlan=0,macaddr=$ranmac -net tap,vlan=0,ifname=$iface
sudo tunctl -d $iface $> /dev/null
脚本中的tunctl命令是user mode linux ,在debian系统要安装uml-utilities软件包。另外,还需要用visudo命令配置普通用户执行tunctl命令的权限。

5、虚拟机通过host连接internet
现在实现了虚拟机和host的联网,如果需要虚拟机连接internet,则要在host设置NAT:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mounter625

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值