qemu网络设置 ubuntu

主要有两种方法,NAT和桥接

NAT设置

NAT就是虚拟机里的guestOS通过host的物理网卡eth0,连接上网。该方法方便设置,缺点是其他机器难以访问到guest。
要求host机器创建虚拟网卡tap0,guest机器和该网卡tap0设置为统一网段,并以tap0的地址作为网关,host机器上的物理网卡eth0为该tap0做NAT。

因此需要安装Uml-utilites以生成虚拟网卡tap0,tunctl -t tap0

注: 
    1. 首先内核中支持tap/tuns设备,可以通过lsmod |grep tun,查看输出有没有tun,没有的话就得重新编译内核模块加入,这个可以从查找相应资料
    2. qemu中在启动虚拟机时可以自动生成一个虚拟网卡(-net nic -net tap,ifname=tap0,script=/etc/qemu-ipup)
    3. 可以在qemu启动时加上-net user参数,直接让guest上网

步骤:
1. 首先在qemu启动时,通过ipconfig查找到其生成的虚拟网卡tapN,手动设置其ip
    ifconfig tapN 192.168.25.1 netmask 255.255.255.0
     当然也可以在/etc/qemu-ipup脚本中删除其他内容加入
    ifconfig $1 192.168.25.1 netmask 255.255.255.0     ($1 是qemu传递过来的网卡名称,即tap0)
     别忘用 ifconfig tapN 查看设置结果

2. 现在启动qemu,在gusetOS里设置网络,和tapN同一网段,网管为tapN的ip,DNS也和host机器一样
    tapN:
                  ip:                  192.168.25.1
                  broadcast:     192.168.25.255
                  netmask:       255.255.255.0
    guestOS :
                  ip:                  192.168.25.N
                  broadcast:     192.168.25.255
                  netmask:       255.255.255.0
                  getway:         192.168.25.1
                  DNS:               参照host机器eth0的设置
    相关命令 ifconfig eth0 192.168.255.123 netmask 255.255.255.0
                  route add default gw 192.168.25.1

    设置好以后,应该gusetOS就可以和host通讯里,ping以下host的eth0的ip看看。但是guestOS还不能上网,成里host-only了。

3.设置NAT
    这个其实就是在host里双网卡,其中eth0为tapN做NAT。
    首先打开ip转换功能(也可以直接编辑配置文件ip_forward=1)
    echo 1 > /proc/sys/net/ipv4/ip_forward
    然后开启NAT
    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.25.0/24 -j MASQUERADE
    上句的意思为将所有来自192.168.8.0/24网段的数据包,从eth0接口转发出去
   
    这样虚拟机里的guestOS就可以上网喽。
启动虚拟机

qemu -hda /imagepath -net nic -net tap,ifname=tapN


桥接设置

基本思想是host机器上,物理网卡eth0和虚拟网卡tapN建立网桥,guestOS通过tapN连接上网,这样guestOS和host都处于物理局域网内,其他机器也可以访问guestOS。

需要安装以下两个包,bridge-tils和Uml-utilites,前者用于建立桥接,后者用于生成虚拟网卡。

步骤:
1.删除host上eth0的ip,建立网桥,将eth0加入到网桥中
    eth0的ip为192.168.8.123,删除之
    ip addr del 192.168.8.123 dev eth0
    生成网桥br0     
    brctl addbr br0
    将eth0加入网桥
    brctl addif eth0
    将eth0的ip信息配置到br0中
    ifconfig br0 192.168.8.123 。。。
    如果时dhcp则
    dhclient dr0

2.启动qemu虚拟机,之后ifconfig中会出现新的tap设备tapN,将之加入到br0中
    brctl addif br0 tapN

3.虚拟机gusetOS里设置网络参数,和eth0最初的一样,如果时dhcp则将自动获取到局域网的ip,至此就可以上网喽。

以上其实可以写一个脚本,可以参考下面的文章。


参考

KVM虚拟机和QEMU
http://jianlee.ylinux.org/Computer/Software/kvm-qemu.html

VisualBox设置桥接的方法
http://forum.ubuntu.org.cn/viewtopic.php?f=65&t=172790

Qemu使用Bridge模式让虚拟机和主系统互访和上网
http://www.wangchao.net.cn/bbsdetail_1611042.html

Qemu & Networking
http://ubuntuforums.org/showthread.php?t=457405

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值