1. 程式人生 > >配置openvswitch kvm虛擬機器環境

配置openvswitch kvm虛擬機器環境

實驗環境 主機:ubuntu 桌面版,虛擬機器 ubuntu server

主機其實也是Vmware虛擬機器,也就是說我在虛擬機器裡又建立了虛擬機器。在主機的/etc/network/interfaces裡不需要任何設定。

1、openvswitch安裝

其實總結起來,就是下面的指令碼,可以直接複製貼上在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環境

很懶,不寫了

3、配置openvswitch和kvm。

3.1 安裝軟體及編寫指令碼

主要工作為:

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測試。上網成功

其實個人對sdn還不是很熟,如果問題請指教,不勝感激。

參考地址:

Kvm教程

附:

修改域名伺服器的方式為:

sudo vi /etc/resolv.conf

新增

nameserver 8.8.8.8