QEMU 网络配置

#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org

网络配置

VDE 配置?

内核配置:

Device drivers --->
   Network device support --->
      [M] Universal TUN/TAP device driver support

Networking support --->
   Networking options --->
      Network packet filtering framework (Netfilter) --->
         Core Netfilter Configuration --->
            <*> Netfilter connection tracking support
         IP: Netfilter Confiuration --->
            <*> IPv4 connection tracking support (required for NAT)
            <*> IP tables support (required for filtering/masq/NAT)
            <*> Full NAT
            <*>   MASQUERADE target support

用户空间配置

安装 vde(a virtual switch). NOTE!!! 如果是源代码编译的话, 记得加上 pcap 支持, 不然创建的 VM之间是 不能通信的, pkginstall 是各个平台的包管理工具.

# pkginstall vde

加载 kvm 和 tun 驱动 NOTE!!! 在 gentoo 中只需加载 kvm-intel 驱动.(kvm-intel是支持intel的KVM模块).

# modprobe kvm kvm-intel tun

为 VDE 创建一个 hub.

# vde_switch --numports 4 --mod 777 --group users --tap tap0 -d

设置上面创建的 tap0.

# ifconfig tap0 10.1.1.1 broadcast 10.1.1.255 netmask 255.255.255.0
# ifconfig tap0 up

设置 Iptable 可以转发.

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

对 VM 过来的封包, 自动获取当前IP地址来做NAT

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

如果 Iptable 已经做了设置, 确保 FORWARD 的包和 tap0 的包全部可以通过.

# iptables -A FORWARD -j ACCEPT
# iptables -A INPUT -i tap0 -j ACCEPT

设置 dnsmasq 来做 dhcp 和 dns 服务器.

# pkginstall dnsmasq
# dnsmasq --log-queries --dhcp-range=10.1.1.1,10.1.1.20,255.255.255.0,2h --interface=tap0 --domain=kvm.lan

最后启动虚拟机, 加上上面设置的参数.

# /usr/bin/qemu-system-x86_64 --enable-kvm -net vde -net nic,vlan=0,macaddr=52:54:00:00:EE:03 -m 1024 -net user /var/lib/libvirt/images/Ubuntu-11.10.img

原则上, 需要用 vde_pcapplug eth0 使 VM 可以和外部通信, 不然 VM 只可以和 VM 通信, 但是我在 gentoo 上测试的时候, 编译 vde 的时候加上 pcap 支持后 VM 默认就可以同外部通信了.

# vde_pcapplug eth0

bridge 配置

内核配置

Networking --->
    Networking Options ---->
    <*> 802.1d Ethernet Bridging

用户空间配置

安装用户空间工具(brctl 等包含在 bridge-utils 中)

# pkginstall bridge-utils

加载 kvm 和 tun 驱动 NOTE!!! 在 gentoo 中只需加载 kvm-intel 驱动.(kvm-intel是支持intel的KVM模块).

# modprobe kvm kvm-intel tun
# 如果 bridge 是被编译成内核模块, 则还需要 
# modprobe bridge

新建并配置一个桥

# brctl addbr br0
# ifconfig br0 192.168.1.155 netmask 255.255.255.0 up

安装 tun 的用户空间工具

# pkginstall usermode-utilities # tunctl 等在此.

新建一个 tap 设备

# tunctl -b -u root -t tap0

把这个设备挂接到上面新建的 br0 桥上.

# brctl addif br0 tap0

配置上面新建的 tap 设备

# ifconfig tap0 up 0.0.0.0 promisc

把自己的真实网卡(eth0)也挂接到 br0 上.

# brctl addif br0 eth0
# ifconfig eth0 0.0.0.0 
# ifconfig eth0 up

启动虚拟机

# /usr/bin/qemu-system-x86_64 --enable-kvm -net nic,macaddr=00:00:00:00:00:00 -net tap,ifname=tap0,script=no,downscript=no /var/lib/libvirt/images/Fedora16.img -m 1024

HOWTO

怎样启用共享网络?

# /usr/bin/qemu-system-x86_64 --enable-kvm -net nic,macaddr=00:00:00:00:00:00 -net user /var/lib/libvirt/images/Ubuntu-11.10.img

Debug

Install

# ./configure --prefix=/tmp/qemu --target-list="i386-softmmu x86_64-softmmu"

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦