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
--------------------------------------------------------------------------------
祝大家順利!