国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Web服務器 > 正文

KVM虛擬化技術之virt-manager使用及KVM虛擬化平臺網絡模型介紹

2024-09-01 13:48:15
字體:
來源:轉載
供稿:網友

一.使用virt-manager創建和管理虛擬機

1.使用VNC Viewer連接進入虛擬化平臺主機

 virt-manager,KVM,虛擬化技術

virt-manager,KVM,虛擬化技術

2.打開終端輸入virt-manager命令啟動virt-manager虛擬機管理界面

#virt-manager

virt-manager,KVM,虛擬化技術

3.通過virt-manager安裝CentOS 6.6的虛擬機

點擊如圖所示圖標新建虛擬機:

virt-manager,KVM,虛擬化技術

選擇PXE引導,我的網絡內存在一個系統自動化部署服務器:

virt-manager,KVM,虛擬化技術

選擇操作系統類型和版本:

virt-manager,KVM,虛擬化技術

 

設置內存和CPU個數:

virt-manager,KVM,虛擬化技術

 

設置硬盤大小,這里采用動態擴展磁盤空間方式:

virt-manager,KVM,虛擬化技術

忽略這個錯誤,由于是虛擬磁盤,不用擔心空間,只需要保證系統空間不會超過物理磁盤實際空間:

virt-manager,KVM,虛擬化技術

勾選選項是可以查看配置在安裝前:

virt-manager,KVM,虛擬化技術

我們可以在這個界面進行設置,我這里就不設置了,直接點擊Begin Installation:

virt-manager,KVM,虛擬化技術

我們選擇安裝個基本的系統:

virt-manager,KVM,虛擬化技術

進入安裝了:

virt-manager,KVM,虛擬化技術

可以觀察安裝時Virt-manager界面的情況:

可以知曉虛擬機正在運行,可以查看CPU的使用情況:

virt-manager,KVM,虛擬化技術

安裝完成后如圖;

virt-manager,KVM,虛擬化技術

 關閉虛擬機,在虛擬機輸入關機指令即可將虛擬機關閉;

基于virt-manager創建管理虛擬機就完成了,很簡單的。

 

下面的實驗我們還是使用cirros輕量級的linux系統。

 二.KVM虛擬化平臺的網絡模型

1.網絡模型介紹

一般虛擬機虛擬網絡的設置主要包括三種方式。主要如下:

  NAT模式

   也有人稱此種模式為host模式。在這種模式下虛擬機可以理解成沒有自己的獨立網卡。所有訪問虛擬機的請求其實是直接發送給宿主機,然后通過訪問宿主機轉發到虛擬機上的。相應的虛擬機訪問其他網絡,也是先轉發到宿主機然后在轉發出去。對于宿主機之外的網絡,是不知道該虛擬機存在的。

 Bridge模式

  橋接模式是使用比較多的模式,它是虛擬機擁有自己的獨立網卡和IP,然后通過借用宿主機的網卡對外連接網絡。它把宿主機的網卡當作了一種橋,通過這個橋連接外網的世界。在這種模式下,可以簡單的理解成虛擬機和宿主機是兩個不同的機器,有獨立IP可以相互訪問。對于虛擬機的IP獲取,一般可以直接指定也可以通過DHCP獲取得到。

 Internal模式(host-only)

  這個是把虛擬機之間的網絡和主機的網絡隔離開來。虛擬機是一片網絡,主機也是一片網絡,彼此之間不能相互訪問。

橋接模型我們前面使用的很多例子,我這里就不做介紹了,我重點介紹一下host-only模型和NAT模型。

2.host-only模式實例
1).我們創建一個host-only的橋設備,將虛擬機之間的網絡和KVM虛擬化平臺宿主機隔離開來;

# brctl addbr isolationbr

查看橋設備:

# brctl showbridge name   bridge id        STP enabled   interfacesbr0       8000.000c293e6326    yes       eth0isolationbr       8000.000000000000    novirbr0     8000.525400305441    yes       virbr0-nic

但是這個橋設備是未激活的,我們需要使用ip命令激活橋設備:

# ip link set isolationbr up

激活后查看我們的橋設備:

# ip link show1: lo: <LOOPBACK,UP,LOWER_UP> mtu65536 qdisc noqueue state UNKNOWN  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:002: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000  link/ether 00:0c:29:3e:63:26 brd ff:ff:ff:ff:ff:ff3: br0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN  link/ether 00:0c:29:3e:63:26 brd ff:ff:ff:ff:ff:ff4: virbr0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN  link/ether 52:54:00:30:54:41 brd ff:ff:ff:ff:ff:ff5: virbr0-nic: <BROADCAST,MULTICAST>mtu 1500 qdisc noop state DOWN qlen 500  link/ether 52:54:00:30:54:41 brd ff:ff:ff:ff:ff:ff16: isolationbr:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN  link/ether 6e:5e:8d:39:56:b5 brd ff:ff:ff:ff:ff:ff17: vnet1:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWNqlen 500  link/ether 3a:ce:49:1d:f4:a3 brd ff:ff:ff:ff:ff:ff18: vnet2:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWNqlen 500  link/ether 62:fc:96:5c:1f:7d brd ff:ff:ff:ff:ff:ff

2).啟動兩個虛擬機:
第一臺cirros虛擬機:

 

復制代碼 代碼如下:

# qemu-kvm -m 128 -name cirros1 -drive file=/kvm/images/cirros-0.3.0-x86_64-disk.img,media=disk,format=qcow2,if=ide -net nic -net tap,ifname=vnet1,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown -boot c -daemonize

 

virt-manager,KVM,虛擬化技術

啟動后從vncviewer登錄如圖:

virt-manager,KVM,虛擬化技術

第二臺cirros虛擬機,啟動時需要指定mac地址;

 

復制代碼 代碼如下:

# qemu-kvm -m 128 -name cirros2 -drive file=/kvm/images/cirros-0.3.0-x86_64-disk2.img,media=disk,format=qcow2,if=ide -net nic,macaddr=52:54:00:65:43:21 -net tap,ifname=vnet2,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown -boot c -daemonize

 

virt-manager,KVM,虛擬化技術

啟動后從vncviewer登錄如圖:

virt-manager,KVM,虛擬化技術

 

查看兩臺虛擬機的ip地址:

virt-manager,KVM,虛擬化技術

 

virt-manager,KVM,虛擬化技術

使用ping測試兩臺虛擬機的連通性:

virt-manager,KVM,虛擬化技術

現在是連通的哦!

 

我們啟動兩臺虛擬機后我們的vnet1和vnet2網卡是橋接在br0上的;

# brctl showbridge name   bridge id        STP enabled   interfacesbr0       8000.000c293e6326    yes       eth0                            vnet1                            vnet2isolationbr       8000.000000000000    novirbr0     8000.525400305441    yes       virbr0-nic

3).我們現在將vnet1和vnet2橋接到isolationbr上:
先將vnet1和vnet2從橋接設備br0上移除:

# brctl delif br0 vnet1# brctl delif br0 vnet2

現在查看橋接設備的網卡,兩個虛擬機的網卡未橋接在橋接設備br0上了:

# brctl showbridge name   bridge id        STP enabled   interfacesbr0       8000.000c293e6326    yes       eth0isolationbr       8000.000000000000    novirbr0     8000.525400305441    yes       virbr0-nic

我們再去兩臺虛擬機進行ping連通性測試:

virt-manager,KVM,虛擬化技術

現在虛擬機的連通性是不通的。

下面我們將vnet1和vnet2的網卡橋接到我們剛創建的橋接設備isolationbr上:

# brctl addif isolationbr vnet1# brctl addif isolationbr vnet2

去查看橋接設備的網卡關聯:

# brctl showbridge name   bridge id        STP enabled   interfacesbr0       8000.000c293e6326    yes       eth0isolationbr       8000.3ace491df4a3    no       vnet1                            vnet2virbr0     8000.525400305441    yes       virbr0-nic

我們虛擬機的兩個網卡已經關聯到了isolationbr橋設備上;
我們再去虛擬機上測試連通性:

virt-manager,KVM,虛擬化技術

現在兩臺虛擬機之間是在同一個網絡的,可以實現通信,但是跟宿主機之間是隔離的,我們虛擬機與宿主機之間的聯通性是不能連通的。如果我們需要實現虛擬機與宿主機之間的通信,那么我們就需要開啟NAT模型,下面就介紹NAT模型。

3.NAT模型實例
其實就是配置host-only網絡內的主機同外部主機通信實驗,開啟橋設備的NAT功能。
1).我們虛擬機的地址是經過網絡內的DHCP服務器分配的,我們為了實驗來手動設置兩臺虛擬機的地址和橋接設備isolationbr的地址
兩臺虛擬機的ip設置如圖:

virt-manager,KVM,虛擬化技術

橋設備isolationbr的ip設置如圖:

[root@createOS ~]# ifconfig isolationbr 10.0.0.254/8 up[root@createOS ~]# ifconfig isolationbrisolationbr Link encap:Ethernet HWaddr 3A:CE:49:1D:F4:A3      inet addr:10.0.0.254 Bcast:10.255.255.255 Mask:255.0.0.0     inet6 addr: fe80::6c5e:8dff:fe39:56b5/64 Scope:Link     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1     RX packets:1 errors:0 dropped:0overruns:0 frame:0     TX packets:6 errors:0 dropped:0 overruns:0 carrier:0     collisions:0 txqueuelen:0     RX bytes:28 (28.0 b) TX bytes:468(468.0 b)

設置完成后測試虛擬機之間網絡連通性:

virt-manager,KVM,虛擬化技術

我們將虛擬機的網關指向isolationbr橋設備地址即可與宿主機進行連通:

virt-manager,KVM,虛擬化技術

2).我們還是不能與物理網絡中的真實網關172.16.0.1通信,我們需要將宿主機的路由轉發功能打開:

# sysctl -w net.ipv4.ip_forward=1net.ipv4.ip_forward = 1

我們先來通過虛擬機ping一下網關,如圖:

virt-manager,KVM,虛擬化技術

在進行ping連通性測試的時候我們再在宿主機上打開抓包功能查看數據包:

# tcpdump -i eth0 icmp -nntcpdump: WARNING: eth0: no IPv4 addressassignedtcpdump: verbose output suppressed, use -vor -vv for full protocol decodelistening on eth0, link-type EN10MB(Ethernet), capture size 65535 bytes10:24:52.377558 IP 10.0.0.2 >172.16.0.1: ICMP echo request, id 1793, seq 0, length 6410:24:53.384063 IP 10.0.0.2 >172.16.0.1: ICMP echo request, id 1793, seq 1, length 64

數據報文能夠到達網關設備,但是數據包不能回來了。

我們需要開啟宿主機的路由功能,設置防火墻中的nat模式:

# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 ! -d 10.0.0.0/8 -j MASQUERADE# iptables -t nat -L POSTROUTINGChain POSTROUTING (policy ACCEPT)target  prot opt source       destination    MASQUERADE tcp -- 192.168.122.0/24  !192.168.122.0/24  masq ports: 1024-65535MASQUERADE udp -- 192.168.122.0/24  !192.168.122.0/24  masq ports: 1024-65535MASQUERADE all -- 192.168.122.0/24  !192.168.122.0/24  MASQUERADE all -- 10.0.0.0/8     !10.0.0.0/8

開始從虛擬機ping測試到達真實網關的連通性:

virt-manager,KVM,虛擬化技術

同時開始抓包,我們在宿主機eth0和橋接設備isolationbr上都要抓包:
橋接設備isolationbr的抓包:

# tcpdump -i isolationbr -nntcpdump: verbose output suppressed, use -vor -vv for full protocol decodelistening on isolationbr, link-type EN10MB(Ethernet), capture size 65535 bytes10:35:35.391069 IP 10.0.0.2 >172.16.0.1: ICMP echo request, id 2305, seq 0, length 6410:35:35.393619 ARP, Request who-has10.0.0.2 tell 10.0.0.254, length 2810:35:35.395095 ARP, Reply 10.0.0.2 is-at52:54:00:65:43:21, length 2810:35:35.395137 IP 172.16.0.1 >10.0.0.2: ICMP echo reply, id 2305, seq 0, length 6410:35:36.394760 IP 10.0.0.2 >172.16.0.1: ICMP echo request, id 2305, seq 1, length 6410:35:36.395943 IP 172.16.0.1 >10.0.0.2: ICMP echo reply, id 2305, seq 1, length 6410:35:41.426182 ARP, Request who-has10.0.0.254 tell 10.0.0.2, length 2810:35:41.427695 ARP, Reply 10.0.0.254 is-at3a:ce:49:1d:f4:a3, length 28

可以發現虛擬機的請求到達了網關,網關也回復了;這里的地址轉換未顯示,但是可以猜測是通過nat地址轉換eth0將虛擬機的請求發送給網關。

宿主機的eth0抓包:

# tcpdump -i eth0 icmp -nntcpdump: WARNING: eth0: no IPv4 addressassignedtcpdump: verbose output suppressed, use -vor -vv for full protocol decodelistening on eth0, link-type EN10MB(Ethernet), capture size 65535 bytes10:35:35.392027 IP 172.16.31.7 >172.16.0.1: ICMP echo request, id 2305, seq 0, length 6410:35:35.393361 IP 172.16.0.1 >172.16.31.7: ICMP echo reply, id 2305, seq 0, length 6410:35:36.395052 IP 172.16.31.7 >172.16.0.1: ICMP echo request, id 2305, seq 1, length 6410:35:36.395860 IP 172.16.0.1 >172.16.31.7: ICMP echo reply, id 2305, seq 1, length 64

宿主機的eth0通過nat功能將虛擬機的請求轉換成本機地址向網關請求回復了;

3).上述的步驟可以通過腳本自動化實現哦!

安裝dnsmasq軟件給虛擬機提供DHCP服務自動分配IP地址:

# yum install -y dnsmasq

注意:由于我們的KVM平臺存在一個vibrd0的網卡,它自動啟動了dnsmasq服務,我們在使用NAT模型時如果不是使用的這個網卡,我們就需要將其dnsmasq服務關閉。

 

復制代碼 代碼如下:

# ps -ef | grep "dnsmasq" |grep-v "grep"
nobody   6378    1  0 11:49 ?        00:00:00 /usr/sbin/dnsmasq--strict-order --pid-file=/var/run/libvirt/network/default.pid --conf-file=--except-interface lo --bind-interfaces --listen-address 192.168.122.1--dhcp-range 192.168.122.2,192.168.122.254--dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases --dhcp-lease-max=253--dhcp-no-override --dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile--addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts

 

關閉dnsmasq服務:
#kill 6378

nat模型腳本示例:
開啟nat功能的腳本;

#vim /etc/qemu-natup#!/bin/bashBRIDGE=isolationbrNETWORK=10.0.0.0GATEWAY=10.0.0.254NETMASK=255.0.0.0DHCPRANGE=10.0.0.1,10.0.0.100TFTPROOT=BOOTP=function check_bridge(){if brctl show | grep "^BRIDGE"&> /dev/null;then  return 1else  return 0fi}function create_bridge(){  brctl addbr "BRIDGE"  brctl stp "BRIDGE" on  brctl setfd "BRIDGE" 0  ifconfig "$BRIDGE""GATEWAY" netmask "$NETMASK" up}function enable_ip_forward(){  echo 1 > /proc/sys/net/ipv4/ip_forward}function add_filter_rules(){   iptables -t nat -A POSTROUTING -s"$NETWORK"/"$NETMASK" ! -d"$NETWORK"/"$NETMASK" -j MASQUERADE}function start_dnsmasq(){ps -ef | grep "dnsmasq" |grep -v"grep" &> /dev/nullif [ $? -eq 0 ];then  echo "warning:dnsmasq is already running"  return 1fidnsmasq --strict-order--except-interface=lo --interface=$BRIDGE --listen-address=$GATEWAY--bind-interfaces --dhcp-range=$DHCPRANGE --conf-file=""--pid-file=/var/run/qemu-dhcp-$BRIDGE.pid --dhcp-leasefile=/var/run/qemu-dhcp-$BRIDGE.leases--dhcp-no-override ${TFTPROOT:+"--enable-tftp"}${TFTPROOT:+"--tftp-root=$TFTPROOT"}${BOOTP:+"--dhcp-boot=$BOOTP"}}function setup_bridge_nat(){check_bridge "$BRIDGE"if [ $? -eq 0 ];then  create_bridgefienable_ip_forwardadd_filter_rules "$BRIDGE"start_dnsmasq "$BRIDGE"}if [ -n "$1" ];then  setup_bridge_nat  ifconfig "$1" 0.0.0.0 up  brctl addif "$BRIDGE""$1"  exit 0else  echo "Error:no interfacespecified"  exit 1fi

關閉nat功能及從橋設備移除虛擬網卡腳本:

#vim /etc/qemu-natdown#!/bin/bashBRIDGE="isolotionbr"if [ -n "$1" ];then    ip link set $1 down    brctl delif "$BRIDGE" $1    ip link set "$BRIDGE" down    brctl delbr "$BRIDGE"    iptables -t nat -F    exit 0else    echo "Error: no interface specified"    exit 1fi

設置腳本執行權限:

# chmod +x /etc/qemu-natup# chmod +x /etc/qemu-natdown

啟動第一臺虛擬機:

 

復制代碼 代碼如下:

# qemu-kvm -m 128 -name cirros1 -drive file=/kvm/images/cirros-0.3.0-x86_64-disk.img,media=disk,format=qcow2,if=ide -net nic -net tap,ifname=vnet1,script=/etc/qemu-natup,downscript=/etc/qemu-natdown -boot c -daemonize

 

virt-manager,KVM,虛擬化技術

我們去查看dnsmasq服務啟動與否:

# ps -ef | grep "dnsmasq" |grep-v "grep"nobody 38355   1 0 11:49 ?    00:00:00 dnsmasq --strict-order--except-interface=lo --interface=isolationbr --listen-address=10.0.0.254--bind-interfaces --dhcp-range=10.0.0.1,10.0.0.100 --conf-file=--pid-file=/var/run/qemu-dhcp-isolationbr.pid--dhcp-leasefile=/var/run/qemu-dhcp-isolationbr.leases --dhcp-no-override

查看宿主機上的網卡設備:

# ifconfig |grep -Ei"(vnet1|vnet2)"vnet1  Link encap:Ethernet HWaddr16:85:A7:5C:84:9D vnet2  Link encap:Ethernet HWaddrE6:81:C9:31:4F:78

啟動虛擬機后在vncserver上連接到虛擬機界面操作,我們進行查看IP地址,可以發現我們的dnsmasq已經自動分配IP地址給虛擬機了。

virt-manager,KVM,虛擬化技術

查看一下宿主機的防火墻中的NAT規則:

#iptables -t nat -L POSTROUTINGChain POSTROUTING (policy ACCEPT)target  prot opt source       destination     MASQUERADE all -- 10.0.0.0/8     !10.0.0.0/8

嘿嘿,我把防火墻NAT規則都給清空了,所以這里就只有一條規則了。o(∩_∩)o

在虛擬機上進行網絡連通性測試:

virt-manager,KVM,虛擬化技術

在測試的同時開啟抓包哦!
橋接設備網卡的數據報文如下:

# tcpdump -i isolationbr -nn      tcpdump: verbose output suppressed, use -vor -vv for full protocol decodelistening on isolationbr, link-type EN10MB(Ethernet), capture size 65535 bytes12:05:14.655667 IP 10.0.0.83 >172.16.0.1: ICMP echo request, id 257, seq 0, length 6412:05:14.658466 IP 172.16.0.1 >10.0.0.83: ICMP echo reply, id 257, seq 0, length 6412:05:15.657273 IP 10.0.0.83 >172.16.0.1: ICMP echo request, id 257, seq 1, length 6412:05:15.658252 IP 172.16.0.1 >10.0.0.83: ICMP echo reply, id 257, seq 1, length 6412:05:19.659800 ARP, Request who-has10.0.0.83 tell 10.0.0.254, length 2812:05:19.661522 ARP, Request who-has10.0.0.254 tell 10.0.0.83, length 2812:05:19.661569 ARP, Reply 10.0.0.254 is-at16:85:a7:5c:84:9d, length 2812:05:19.662053 ARP, Reply 10.0.0.83 is-at52:54:00:88:88:88, length 2812:05:47.759101 ARP, Request who-has10.0.0.47 tell 10.0.0.83, length 2812:05:47.760926 ARP, Reply 10.0.0.47 is-at52:54:00:12:34:56, length 2812:05:47.761579 IP 10.0.0.83 >10.0.0.47: ICMP echo request, id 513, seq 0, length 6412:05:47.765075 IP 10.0.0.47 >10.0.0.83: ICMP echo reply, id 513, seq 0, length 6412:05:48.759703 IP 10.0.0.83 >10.0.0.47: ICMP echo request, id 513, seq 1, length 6412:05:48.760848 IP 10.0.0.47 >10.0.0.83: ICMP echo reply, id 513, seq 1, length 6412:05:52.775287 ARP, Request who-has10.0.0.83 tell 10.0.0.47, length 2812:05:52.776601 ARP, Reply 10.0.0.83 is-at52:54:00:88:88:88, length 2812:05:59.376454 IP 10.0.0.83 >172.16.31.7: ICMP echo request, id 769, seq 0, length 6412:05:59.376548 IP 172.16.31.7 >10.0.0.83: ICMP echo reply, id 769, seq 0, length 6412:06:00.482899 IP 10.0.0.83 >172.16.31.7: ICMP echo request, id 769, seq 1, length 6412:06:00.483035 IP 172.16.31.7 >10.0.0.83: ICMP echo reply, id 769, seq 1, length 6412:06:04.376987 ARP, Request who-has10.0.0.83 tell 10.0.0.254, length 2812:06:04.378153 ARP, Reply 10.0.0.83 is-at52:54:00:88:88:88, length 28

物理網卡的數據報文如下:

# tcpdump -i eth0 icmp -nntcpdump: WARNING: eth0: no IPv4 addressassignedtcpdump: verbose output suppressed, use -vor -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet),capture size 65535 bytes12:05:14.657680 IP 172.16.31.7 >172.16.0.1: ICMP echo request, id 257, seq 0, length 6412:05:14.658427 IP 172.16.0.1 >172.16.31.7: ICMP echo reply, id 257, seq 0, length 6412:05:15.657329 IP 172.16.31.7 >172.16.0.1: ICMP echo request, id 257, seq 1, length 6412:05:15.658215 IP 172.16.0.1 >172.16.31.7: ICMP echo reply, id 257, seq 1, length 64

至此,我們的KVM虛擬化平臺的網絡模型就介紹完成了,這些模型對以后的云計算平臺網絡的虛擬化也是很重要的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浙江省| 德保县| 永清县| 陵水| 南陵县| 柳河县| 柞水县| 富裕县| 高淳县| 来宾市| 栾城县| 张家港市| 巧家县| 和平区| 托克托县| 高台县| 都昌县| 禄劝| 渑池县| 金乡县| 秭归县| 泉州市| 昌黎县| 黄冈市| 灵石县| 遂平县| 城市| 高陵县| 文水县| 巴彦淖尔市| 民和| 义乌市| 遵化市| 洪泽县| 开远市| 容城县| 灵武市| 龙胜| 桂东县| 名山县| 霍山县|