实验环境 主机:ubuntu 桌面版,虚拟机 ubuntu server
主机其实也是Vmware虚拟机,也就是说我在虚拟机里又创建了虚拟机。在主机的/etc/network/interfaces里不需要任何设置。
1、openvswitch安装
openvswitch下载地址:http://openvswitch.org/download/,下载之后使用 tar -xzvf 解压
openvswitch安装地址:http://docs.openvswitch.org/en/latest/intro/install/general/
其实总结起来,就是下面的脚本,可以直接复制粘贴在openvswitch文件夹里执行:
sudo ./configure --with-linux=/lib/modules/$(uname -r)/build
sudo make
sudo make install
sudo make modules_install
sudo /sbin/modprobe openvswitch
mkdir -p /usr/local/etc/openvswitch
sudo ovsdb-tool create /usr/local/etc/openvswitch/conf.db \
vswitchd/vswitch.ovsschema
mkdir -p /usr/local/var/run/openvswitch
sudo ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,Open_vSwitch,manager_options \
--private-key=db:Open_vSwitch,SSL,private_key \
--certificate=db:Open_vSwitch,SSL,certificate \
--bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
--pidfile --detach --log-file
sudo ovs-vsctl --no-wait init
sudo ovs-vswitchd --pidfile --detach --log-file
假设脚本名为startovs.sh。执行:
chmod +x startovs.sh
sudo ./startovs.sh
2、安装KVM环境
安装地址为:http://www.linuxdiyf.com/linux/28647.html
3、配置openvswitch和kvm。
3.1、安装软件及编写脚本
官方配置地址为:http://docs.openvswitch.org/en/latest/howto/kvm/
主要工作为:
apt-get install uml-utilities
echo << EOF > /etc/ovs-ifup
#!/bin/sh
switch='br0'
/sbin/ifconfig $1 0.0.0.0 up
ovs-vsctl add-port ${switch} $1
EOF
echo << EOF > /etc/ovs-ifdown
#!/bin/sh
switch='br0'
/sbin/ifconfig $1 0.0.0.0 down
ovs-vsctl del-port ${switch} $1
EOF
3.2、删除默认网桥,virbr0是Linux的bridge模块建立的,我们不需要。aptitude需要提前安装。
apt-get install aptitude
sudo virsh net-destroy default
sudo virsh net-autostart --disable default
sudo aptitude purge ebtables
3.2、建立openvswitch网桥
sudo ovs-vsctl add-br br0
sudo ovs-vsctl add-port br0 eth0
不能上网了,删除eth0地址,并将这个地址(可以不是同一个)给br0
sudo ifconfig eth0 0
sudo ifconfig br0 192.168.82.130/24 up
这个时候还不能上网,修改默认路由。
sudo route add default gw 192.168.82.2
(或者 sudo route add default gw 192.168.82.2 dev br0)这个样子可以指定网卡,在有多个网卡时很有用
这个时候可以上网了,ping www.baidu.com验证。路由表如下:
4、安装虚拟机
准备好镜像和iso文件。
在合适的位置(主要是文件夹够大)创建镜像:
qemu-img create vm1.img 6G
启动虚拟机:
kvm -m 512 -net nic -net \
tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown -drive \
file=/path/to/disk-image -cdrom /path/to/isofile
创建虚拟机后,下次启动虚拟机只需要镜像就可以了,命令如下:
kvm -m 512 -net nic -net \
tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown -drive \
file=/path/to/disk-image
创建虚拟机时,ip地址不能通过dhcp获取到,改用手动设置,设置为192.168.82.135,网关设置为br0的地址,即192.168.82.130。
虚拟机创建成功后不能上网,但是能ping通br0地址。此时,虚拟机的/etc/network/interfaces设置为:
5、在主机上设置nat。
开启ip转发,两种方式:
临时:echo "1">/proc/sys/net/ipv4/ip_forward
固定:修改/etc/sysctl.conf,取消这一行的注释:
net.ipv4.ip_forward= 1
然后使之立即生效
sudo sysctl -p
在主机上设置nat(nat 后面跟的是大写的i)
sudo iptables -t nat -I POSTROUTING -s 192.168.82.135 -J SNAT --to-source 192.168.82.130
查看nat规则
sudo iptables -t nat -nL
重启虚拟机,ping www.baidu.com测试。上网成功。
附:
修改域名服务器的方式为:
sudo vi /etc/resolv.conf
添加
nameserver 8.8.8.8