Linux中KVM橋接的配置


Linux中KVM橋接的配置

 

1. 原理

1.1 說明

在安裝一個擁有虛擬化功能的Linux操作系統(此處以CentOS為例),一般我們有兩種方法:

1.在光盤安裝的時候安裝好虛擬化包或者PXE服務器上配置好虛擬化包

2.手動在沒有安裝虛擬化組件的系統中安裝虛擬化組件

1.2 目的 

如果我們搭建的環境是必須使用虛擬化的,或者說虛擬化是我們搭建這套環境的主要目的之一,那么我們在進行系統安裝的時候將所有的虛擬化組件全部安裝上,避免后期出現安裝不全或者某些服務依賴關系沒有解決好,這樣排錯的時間遠遠高於安裝時候多裝幾個包的時間。

  在我們安裝好虛擬化組件(RHEL6.0之后,系統自帶的均是KVM,已經沒有XEN虛擬化的支持了),會自動生成一個virbr0這樣的橋接設備

1.3 查看橋接情況

[root@clovemzone ~]# brctl  show

bridge name    bridge id        STP enabled    interfaces

virbr0      8000.5254007543ce    yes          virbr0-nic
按照這篇文中所說:http://www.linuxidc.com/Linux/2013-08/88720.htm ,virbr0默認使用的是NAT方式跟虛擬機網卡進行通訊,在實際生產環境中我們多數情況下面使用橋接Bridge的方式進行物理機跟虛擬機的通訊,刪除這個virbr0的方法在上面給出的鏈接中已經說明,這篇文章主要講述Bridge的簡單實現原理以及實際配置方法。

2. 相關閱讀:

RHEL6 KVM虛擬化創建橋接網卡-網橋 http://www.linuxidc.com/Linux/2013-08/88517.htm

RedHat Linux KVM虛擬機橋接 http://www.linuxidc.com/Linux/2013-02/79934.htm

CentOS 5.6下KVM的安裝/橋接設置/虛擬機創建及運行 http://www.linuxidc.com/Linux/2012-12/76883.htm

3. 網橋

假設我們的物理機上有一塊有線網卡,在系統中顯示為eth0,我們搭建將其配置成橋接設備br0

  我們經常所說的Bridge設備其實就是網橋設備,也就相當於想在的二層交換機,用於連接同一網段內的所有機器,所以我們的目的就是將網絡設備eth0配置成br0,此時br0就成為了所謂的交換機設備,我們物理機的eth0也是連接在上面的。

[root@clovemzone ~]# brctl  show

bridge name      bridge id    STP enabled  interfaces

br0          8000.0025903afe42    no      eth0

4. 查看橋接設備

我們創建兩個虛擬機之后,所有的虛擬機網卡均連接br0,此時查看br0上面連接的設備

[root@clovemzone ~]# brctl  show

bridge name      bridge id    STP enabled  interfaces

br0          8000.0025903afe42    no      eth0

                                            vnet0

                                            vnet1

為了讓大家了解的更加透徹,可以通過下圖並結合實際操作進行簡單分析

5. 查看物理機網卡設備信息 圖1所示

[root@master ~]# ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff

    inet 192.168.3.176/24 brd 192.168.3.255 scope global eth0

    inet6 fe80::5054:ff:fea7:b756/64 scope link

      valid_lft forever preferred_lft forever

6. 配置橋接設備br0

[root@master ~]# rpm -q bridge-utils    //查看橋接軟件是否安裝

bridge-utils-1.2-9.el6.x86_64

[root@master ~]# brctl  show

bridge name    bridge id    STP enabled    interfaces

6.1 手動添加

[root@master ~]# brctl  addbr br0

[root@master ~]# brctl  show

bridge name    bridge id    STP enabled    interfaces

br0            8000.000000000000        no

[root@master ~]# brctl  addif br0 eth0

[root@master ~]# brctl  show

bridge name  bridge id        STP enabled  interfaces

br0        8000.000000000000        no        eth0

刪除eth0上面的ip地址,將br0上面添加上固定ip地址

[root@master ~]# ip addr del dev eth0 192.168.3.176/24        //刪除eth0上的IP地址

[root@master ~]# ifconfig  br0 192.168.3.176/24 up              //配置br0的IP地址並啟動設備

[root@master ~]# route add default gw 192.168.3.1              //重新加入默認網關

6.1 查看配置是否生效

[root@master ~]# route      //查看默認網關

Kernel IP routing table

Destination    Gateway        Genmask        Flags Metric Ref    Use Iface

192.168.3.0    *              255.255.255.0  U    0      0        0 br0

default        192.168.3.1    0.0.0.0        UG    0      0        0 br0

 

6.3 查看網卡信息

[root@master ~]# ip addr show    //查看eth0跟br0的IP信息

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff

    inet6 fe80::5054:ff:fea7:b756/64 scope link

      valid_lft forever preferred_lft forever

3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN

    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff

    inet 192.168.3.176/24 brd 192.168.3.255 scope global br0

    inet6 fe80::5054:ff:fea7:b756/64 scope link

      valid_lft forever preferred_lft forever

 

6.4 測試同一網段連接是否成功

[root@master ~]# ping 192.168.3.1 -w2        //測試同一網段連接是否成功,判斷網卡IP是否綁定正確

PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.

64 bytes from 192.168.3.1: icmp_seq=1 ttl=255 time=3.45 ms

64 bytes from 192.168.3.1: icmp_seq=2 ttl=255 time=4.20 ms

--- 192.168.3.1 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 2000ms

rtt min/avg/max/mdev = 3.457/3.832/4.208/0.380 ms

 

6.5 測試不同網段連接是否成功

[root@master ~]# ping 192.168.1.1 -w2  //測試不同網段連接是否成功,判斷網關是否添加成功

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.

64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=2.38 ms

64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=7.64 ms

--- 192.168.1.1 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 2000ms

rtt min/avg/max/mdev = 2.381/5.011/7.642/2.631 ms

上面是通過命令進行的手動配置方法,但是大家都清楚,這些命令配置的結果在服務器重啟之后就不能生效了,要想使得所有配置永久生效,我們還是需要通過配置文件進行配置,然后重啟網卡設備,讓系統幫我們配置,然后重啟之后也是生效的。

通過上面的手動配置方法,大家可以清楚得看到一個橋接設備的配置流程,這個在你寫到配置文件里面,然后讓系統幫你配置的時候是看不到的 :) ,那么下面我們將所有的配置還原,通過配置文件進行相關自動化配置吧。

7. 還原原始配置

7.1 刪除網關

[root@master ~]# route delete default            //刪除默認網關

[root@master ~]# route -n

Kernel IP routing table

Destination    Gateway        Genmask        Flags Metric Ref    Use Iface

192.168.3.0    0.0.0.0        255.255.255.0  U    0      0        0 br0

 

7.2 查看橋接情況

[root@master ~]# brctl show

bridge name        bridge id                STP enabled        interfaces

br0                8000.525400a7b756        no                            eth0

 

7.3 刪除br0上的eth0設備

[root@master ~]# brctl  delif  br0    eth0    //斷開/刪除br0上的eth0設備

 

7.4 讓br0停止活動

[root@master ~]#ifconfig br0 down        //讓br0設備停止活動

 

7.5 刪除br0

[root@master ~]#brctl delbr  br0          //刪除br0

 

7.6 查看br0是否依然存在

root@master ~]# brctl show                    //查看br0是否依然存在

bridge name        bridge id                STP enabled        interfaces

 

7.7 重新給eth0分配IP地址

[root@master ~]# ifconfig  eth0 192.168.3.176/24    //重新給eth0分配IP地址

 

7.8 重新加入默認網關

[root@master ~]# route add default gw 192.168.3.1  //重新加入默認網關

 

7.9 查看網卡

1234567891011 [root@master ~]# ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff

    inet 192.168.3.176/24 brd 192.168.3.255 scope global eth0

    inet6 fe80::5054:ff:fea7:b756/64 scope link

      valid_lft forever preferred_lft forever

--------------------------------------------------------------------------------

8. 通過配置文件配置橋接設備

配置文件請自行備份

8.1 查看eth0文件

[root@master ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

BRIDGE=br0

 

8.2 查看br0文件

[root@master ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0

TYPE=Bridge

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.3.176

NETMASK=255.255.255.0

GATEWAY=192.168.3.1

 

9. 網卡文件參數詳解:

9.1 ifcfg-eth0

Device              指定網卡設備名

TYPE                指定網卡的類型為以太網卡

ONBOOT        指定網卡是否開機啟動,切記要設置為yes

BRIDGE            指定橋接設備,此處指定為br0設備

建議:以上變量(非變量值)均為大寫。

 

9.2 ifcfg-br0

Device              指定網卡設備名

TYPE                指定網卡的類型為橋接

ONBOOT        指定網卡是否開機啟動,切記要設置為yes

BOOTPROTO 指定網卡啟動如何獲取IP地址,設置靜態

IPADDR          設置br0綁定的IP地址

NETMASK      設置子網掩碼地址

GATEWAY      設置網關

建議: TYPE變量的變量值按照第一個字母大寫,其余字母小寫的原則,如Ethernet,Bridge

配置完成之后,重啟網絡服務

如擔心干擾,建議停止NetworkManager 服務,這個服務挺討厭

9.3 停止NetworkManager

[root@master ~]# service    NetworkManager stop

[root@master ~]#chkconfig NetworkManager off

[root@master ~]# service network restart

 

9.4 查看網卡

[root@master ~]# ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff

4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN

    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff

    inet 192.168.3.176/24 brd 192.168.3.255 scope global br0

    inet6 fe80::5054:ff:fea7:b756/64 scope link

      valid_lft forever preferred_lft forever

 

10. 查看橋接設備信息

[root@master ~]# brctl  show

bridge name  bridge id    STP enabled  interfaces

br0        8000.525400a7b756    no        eth0

 

11. 查看路由

[root@master ~]# route

Kernel IP routing table

Destination    Gateway        Genmask        Flags Metric Ref    Use Iface

192.168.3.0    *              255.255.255.0  U    0      0        0 br0

link-local      *              255.255.0.0    U    1004  0        0 br0

default        192.168.3.1    0.0.0.0        UG    0      0        0 br0
  1. 由此,橋接設備br0已經配置成功,當創建虛擬機的時候選擇虛擬網卡接口的時候選擇br0即可

 

12. 進行虛擬機安裝

開始安裝虛擬機,此時查看橋接設備br0上面的網卡連接情況:

[root@master ~]# brctl  show

bridge name      bridge id    STP enabled  interfaces

br0          8000.0025903afe42    no      eth0

                                            vnet0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM