1. 程式人生 > >Linux下為KVM 配置橋接裝置,給網橋配製ip地址

Linux下為KVM 配置橋接裝置,給網橋配製ip地址

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

1.在光碟安裝的時候安裝好虛擬化包或者PXE伺服器上配置好虛擬化包
2.手動在沒有安裝虛擬化元件的系統中安裝虛擬化元件


  如果我們搭建的環境是必須使用虛擬化的,或者說虛擬化是我們搭建這套環境的主要目的之一,那麼我們在進行系統安裝的時候將所有的虛擬化元件全部安裝上,避免後期出現安裝不全或者某些服務依賴關係沒有解決好,這樣排錯的時間遠遠高於安裝時候多裝幾個包的時間。
  在我們安裝好虛擬化元件(RHEL6.0之後,系統自帶的均是KVM,已經沒有XEN虛擬化的支援了),會自動生成一個virbr0這樣的橋接裝置

[[email protected] ~]# 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的簡單實現原理以及實際配置方法。 

相關閱讀:

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

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

[[email protected] ~]# brctl  show 
bridge name      bridge id    STP enabled  interfaces 
br0          8000.0025903afe42    no      eth0


我們建立兩個虛擬機器之後,所有的虛擬機器網絡卡均連線br0,此時檢視br0上面連線的裝置
[[email protected] ~]# brctl  show 
bridge name      bridge id    STP enabled  interfaces 
br0          8000.0025903afe42    no      eth0 
                                            vnet0 
                                            vnet1

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

1. 檢視物理機網絡卡裝置資訊 圖1所示
[[email protected] ~]# 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

2.配置橋接裝置br0

[[email protected] ~]# rpm -q bridge-utils    //檢視橋接軟體是否安裝 
bridge-utils-1.2-9.el6.x86_64 
[[email protected] ~]# brctl  show 
bridge name    bridge id    STP enabled    interfaces 
[[email protected] ~]#

此時無任何橋接裝置,我們可以手動新增也可以在 檔案中進行新增生效。
(1) 手動新增
[[email protected] ~]# brctl  addbr br0 
[[email protected] ~]# brctl  show 
bridge name    bridge id    STP enabled    interfaces 
br0            8000.000000000000        no 
[[email protected] ~]# brctl  addif br0 eth0 
[[email protected] ~]# brctl  show 
bridge name  bridge id        STP enabled  interfaces 
br0        8000.000000000000        no        eth0

刪除eth0上面的ip地址,將br0上面新增上固定ip地址
[[email protected] ~]# ip addr del dev eth0 192.168.3.176/24        //刪除eth0上的IP地址 
[[email protected] ~]# ifconfig  br0 192.168.3.176/24 up              //配置br0的IP地址並啟動裝置 
[[email protected] ~]# route add default gw 192.168.3.1              //重新加入預設閘道器

檢視配置是否生效
[[email protected] ~]# 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 
[[email protected] ~]# 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 
[[email protected] ~]# 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 
[[email protected] ~]# 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

上面是通過命令進行的手動配置方法,但是大家都清楚,這些命令配置的結果在伺服器重啟之後就不能生效了,要想使得所有配置永久生效,我們還是需要通過配置檔案進行配置,然後重啟網絡卡裝置,讓系統幫我們配置,然後重啟之後也是生效的。
通過上面的手動配置方法,大家可以清楚得看到一個橋接裝置的配置流程,這個在你寫到配置檔案裡面,然後讓系統幫你配置的時候是看不到的 :) ,那麼下面我們將所有的配置還原,通過配置檔案進行相關自動化配置吧。

還原原始配置
[[email protected] ~]# route delete default            //刪除預設閘道器


[[email protected] ~]# 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


[[email protected] ~]# brctl show
bridge name        bridge id                STP enabled        interfaces
br0                8000.525400a7b756        no                            eth0
[[email protected] ~]# brctl  delif  br0    eth0    //斷開/刪除br0上的eth0裝置
[[email protected] ~]#ifconfig br0 down        //讓br0裝置停止活動
[[email protected] ~]#brctl delbr  br0          //刪除br0
[email protected] ~]# brctl show                    //檢視br0是否依然存在
bridge name        bridge id                STP enabled        interfaces
[[email protected] ~]# ifconfig  eth0 192.168.3.176/24    //重新給eth0分配IP地址
[email protected] ~]# route add default gw 192.168.3.1  //重新加入預設閘道器
1234567891011 [[email protected] ~]# 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


--------------------------------------------------------------------------------
(2) 通過配置檔案配置橋接裝置
配置檔案請自行備份

[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
[[email protected] ~]# 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

引數詳解:
ifcfg-eth0
      Device              指定網絡卡裝置名

      TYPE                指定網絡卡的型別為乙太網卡

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

      BRIDGE            指定橋接裝置,此處指定為br0裝置
建議:以上變數(非變數值)均為大寫。
ifcfg-br0
      Device              指定網絡卡裝置名
      TYPE                指定網絡卡的型別為橋接
      ONBOOT        指定網絡卡是否開機啟動,切記要設定為yes

      BOOTPROTO 指定網絡卡啟動如何獲取IP地址,設定靜態
      IPADDR          設定br0繫結的IP地址
      NETMASK      設定子網掩碼地址

      GATEWAY      設定閘道器
建議: TYPE變數的變數值按照第一個字母大寫,其餘字母小寫的原則,如Ethernet,Bridge


配置完成之後,重啟網路服務
如擔心干擾,建議停止NetworkManager 服務,這個服務挺討厭
[[email protected] ~]# service    NetworkManager stop
[[email protected] ~]#chkconfig NetworkManager off
[[email protected] ~]# service network restart
[[email protected] ~]# 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

檢視橋接裝置資訊
[[email protected] ~]# brctl  show
bridge name  bridge id    STP enabled  interfaces
br0        8000.525400a7b756    no        eth0
[[email protected] ~]# 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

由此,橋接裝置br0已經配置成功,當建立虛擬機器的時候選擇虛擬網絡卡介面的時候選擇br0即可

開始安裝虛擬機器,此時檢視橋接裝置br0上面的網絡卡連線情況:

[[email protected] ~]# brctl  show
bridge name      bridge id    STP enabled  interfaces
br0          8000.0025903afe42    no      eth0
                                            vnet0

--------------------------------------------------------------------------------
祝大家順利!