什么是橋接
橋接就是把物理機的網卡模擬成交換機,虛擬機的網卡直接連在虛擬的網橋即交換機上。這樣kvm虛擬機分配的IP地址,就應該和物理機在同一網段,可以對外進行服務。
在KVM下運行的VM默認的網卡采用NAT的方式進行連接,無法與外界進行通訊,但是可以與同台KVM下的其他VM進行通訊,為了使VM與其他網絡主機進行通訊,需要將網卡模式由NAT改為橋接的方式
查看橋接情況
# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.5254003aa789 yes virbr0-nic
virbr0默認使用的是NAT方式跟虛擬機網卡進行通訊,在實際生產環境中我們多數情況下面使用橋接Bridge的方式進行物理機跟虛擬機的通訊,刪除這個virbr0的方法在上面給出的鏈接中已經說明,這篇文章主要講述Bridge的簡單實現原理以及實際配置方法。
假設我們的物理機上有一塊有線網卡,在系統中顯示為eth0,我們搭建將其配置成橋接設備br0
我們經常所說的Bridge設備其實就是網橋設備,也就相當於想在的二層交換機,用於連接同一網段內的所有機器,所以我們的目的就是將網絡設備eth0配置成br0,此時br0就成為了所謂的交換機設備,我們物理機的eth0也是連接在上面的。
配置橋接設備br0
# 查看橋接軟件是否安裝
# rpm -q bridge-utils
bridge-utils-1.5-9.el7.x86_64
禁用並卸載NetworkManager工具(必要),啟用自帶的network服務
chkconfig NetworkManager off
chkconfig network on
service NetworkManager stop
yum -y erase NetworkManager
使用配置文件的形式添加
先將 /etc/sysconfig/network-scripts/ifcfg-eth0
目錄下的網卡配置文件備份一份
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak
新創建/etc/sysconfig/network-scripts/ifcfg-br0
BOOTPROTO=static
DEVICE=br0
TYPE=Bridge
NM_CONTROLLED=no
IPADDR=10.16.16.2
NETMASK=255.255.255.0
GATEWAY=10.16.16.1
DNS1=211.138.24.66
DNS2=211.138.30.66
DELAY=0
STP=on
上面的 IPADDR、NETMASK、GATEWAY 、DNS地址是原先ifcfg-eth0網卡中的
NM_CONTROLLED這個屬性值,根據 RedHat公司的文檔是必須設置為“no”的(這個值為“yes”表示可以由服務NetworkManager來管理。NetworkManager服務不支持橋接,所以要設置為“no”。),但實際上發現設置為“yes”沒有問題。通訊正常。
修改ifcfg-eth0網卡內容,將原先關於IP設置的語句注釋,並新增一個配置,其余保持不變
# IPADDR=10.16.16.2
# NETMASK=255.255.255.0
# GATEWAY=10.16.16.1
# DNS1=211.138.24.66
# DNS2=211.138.30.66
BRIDGE=br0 # 這一行是新增的
設置完成后,重啟網絡
service network restart
查看網卡橋接及路由
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.34735aa1362c yes em1
virbr0 8000.5254003aa789 yes virbr0-nic
[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 br0
10.16.16.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
link-local 0.0.0.0 255.255.0.0 U 1011 0 0 br0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
這樣就把eth0橋接為br0網卡了,VM就可以使用這個橋接配置了。重啟不會對橋接造成影響,因為它是讀取的ifcfg-xx的配置文件進行橋接