實驗名稱:
kvm環境下使用qemu-kvm創建虛擬機之間的網絡配置
實驗環境:
保證kvm環境正常即可,擁有qemu-kvm管理工具;
同時,我們這里離需要擁有bridge-utils橋工具
實驗需求:
1、保證kvm環境的正常運行;
2、安裝qemu-kvm管理工具,以及bridge-utils橋管理工具;
3、安裝虛擬機;
4、配置網絡,包括隧道模式、路由模式、nat模式、以及僅主機模式四種;
實驗配置:
1、配置啟動腳本程序
配置一個腳本,到時候需要引用到虛擬機啟動參數中;
vim /etc/qemu-ifup #!/bin/bash # bridge=br0 if [ -n '$1' ] then ip link set $1 up
brctl addbr $bridge brctl addif $bridge $1 [ $? -eq 0 ] && exit 0 || exit 1 else echo "Error: no interface specified" exit 1 fi
賦予腳本程序執行權限
chmod +x /etc/qemu-ifup
2、創建虛擬機
cd /images/kvm/ qemu-kvm -m 256 -cpu host -smp 2 -name 'test1' -drive file=cirros-0.3.0-i386-disk.img,if=virtio,media=disk,format=qcow2,cache=writeback -nographic -net nic -net tap,ifname=vif0.0,script=/etc/qemu-ifup
其中,nic指定的是前端虛擬機上面的io驅動;而tap則指定是物理機上面的前端驅動程序;
【這里需要注意的是,-cpu 的參數在hypervisor為虛擬機的時候,可能導致系統無法啟動,可以刪除這個選項】
啟動第二台虛擬機:
qemu-kvm -m 256 -cpu host -smp 2 -name 'test2' -drive file=cirros-0.3.0-i386-disk.img,if=virtio,media=disk,format=qcow2,cache=writeback -nographic -net nic -net tap,ifname=vif1.0,script=/etc/qemu-ifup
3、配置網絡,實現隧道模式
此時,兩台虛擬機正常啟動,且都通過腳本程序自動橋接到了br0橋上;
此時,需要將兩台虛擬機配置到同一個網絡即可:
#第一台虛擬機 ifconfig eth0 192.168.100.1/24 up #第二台虛擬機 ifconfig eth0 192.168.100.2/24 up
相互ping通,則隧道模式測試成功;
【這時候注意一個問題,我們的虛擬機的mac地址的獲取是自動的,會出現mac地址沖突】 所以,我們需要手動去指定MAC地址;
-net nic,macaddr=52:54:00:12:34:57 -net tap,ifname=vif1.0,script=/etc/qemu-ifup
#如果不存在mac地址沖突的問題,則可以不用使用這個命令
4、配置網絡,實現路由模式
此時,我們需要使虛擬機能夠通過我們的centos7能訪問外網,通過配置路由模式來實現
#虛擬機配置網關 route add default gw 192.168.100.254
虛擬機有了網關以后,還需要在真實機器上配置網關地址,同時需要開啟路由轉發功能;
#centos7 ifconfig br0 192.168.100.254 up echo 1 > /proc/sys/net/ipv4/ip_forword
測試:
這時候數據包能到達192.168.238.129,卻無法到達192.168.238.1,是因為192.168.238.1沒有回去192.168.100.0/24網段的路由,所以這是需要在192.168.238.1上面配置明晰路由
#在192.168.238.1上面添加回指路由 route -p add 192.168.100.0 mask 255.255.255.0 192.168.238.129
再在cirros上面來ping就可以通了
5、配置網絡,nat模式配置
首先我們的nat模式屬於三層功能,所以centos7也必須支持路由轉發才行:
echo 1 > /proc/sys/net/ipv4/ip_forword
去掉192.168.238.1機器上面的路由配置:
route delete 192.168.100.0
此時,cirros到192.168.238.1的網絡又不通了;則需要我們來指定nat方式來實現:
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j SNAT --to-source 192.168.238.0/24
iptables -t nat -L -n
此時虛擬機cirros依然能夠正常通訊,ping 192.168.238.1;
同時可以抓包查看;
tcpdump -i br0 -nn icmp
tcpdump -i eno16777736 -nn icmp
6、網絡配置,橋接模式
在橋接模式下面,我們需要將物理網卡橋接到橋交換機上面來;
首先我需要去掉br0上面地址
ifconfig br0 0 up
再把eno16777736的網卡添加到br0上面來;
brctl addif br0 eno16777736; ifconfig br0 192.168.238.129/24 up
brctl show
ifconfig
route #查看本機路由,看清楚網關地址
把虛擬機cirros的地址也配置到同一個網段中,同時制定網關地址;
ifcongfig eth0 192.168.238.100/24 up route add default gw 192.168.238.2
此時,虛擬機去ping公網就能ping通,這就是橋接模式:
實驗結果: