網(wǎng)橋的概念
? 在生活中,橋是一種結(jié)構(gòu),用于連接兩個(gè)地方,允許行人、車(chē)輛等安全地跨越障礙物(如河流或高速公路)
? 在計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)中,網(wǎng)橋是一種工作在數(shù)據(jù)鏈路層的物理或邏輯設(shè)備,可以用于連接兩個(gè)或多個(gè)局域網(wǎng)段。它基于MAC地址來(lái)轉(zhuǎn)發(fā)或過(guò)濾幀,從而有效地劃分廣播域。
? 在Linux中,網(wǎng)橋是一個(gè)邏輯設(shè)備,用于鏈接兩個(gè)或更多的網(wǎng)絡(luò)接口(例如,eth0, eth1),使它們?cè)谶壿嬌瞎ぷ魅缤粋€(gè)接口。在虛擬化技術(shù)中,就使用到了網(wǎng)橋技術(shù),鏈接物理主機(jī)和虛擬機(jī)或不同的虛擬機(jī)。
網(wǎng)橋工作原理
1、網(wǎng)絡(luò)接口的作用
? 在Linux中,udev 是負(fù)責(zé)動(dòng)態(tài)管理設(shè)備節(jié)點(diǎn)的守護(hù)進(jìn)程。當(dāng)硬件設(shè)備被插入或移除時(shí),udev 會(huì)根據(jù) /lib/udev/rules.d/ 目錄中定義的規(guī)則來(lái)生成或移除對(duì)應(yīng)的設(shè)備節(jié)點(diǎn),并進(jìn)行相應(yīng)的命名和管理。
? 網(wǎng)絡(luò)接口名稱(chēng)(例如eth0、ens33)是由udev的規(guī)則指定的,這只是一個(gè)邏輯名稱(chēng),用于在用戶(hù)空間中引用特定的網(wǎng)絡(luò)設(shè)備。這個(gè)名稱(chēng)本身并不直接指向物理設(shè)備,而是與內(nèi)核中的網(wǎng)絡(luò)設(shè)備數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)。
? 所以用戶(hù)空間的相關(guān)工具(例如ifconfig、nmcli等)可以通過(guò)這個(gè)網(wǎng)絡(luò)接口的名稱(chēng)作為標(biāo)識(shí)符來(lái)與內(nèi)核的網(wǎng)絡(luò)協(xié)議棧交互,這個(gè)接口名稱(chēng)為工具和內(nèi)核提供了一個(gè)明確的引用點(diǎn),以便指定它們希望配置或查詢(xún)哪個(gè)特定的網(wǎng)絡(luò)設(shè)備

虛擬網(wǎng)卡是一個(gè)邏輯上的網(wǎng)絡(luò)接口(vnetX),它在Linux內(nèi)核中表示為網(wǎng)絡(luò)設(shè)備,但沒(méi)有與之對(duì)應(yīng)的物理硬件。

2、網(wǎng)橋的成員接口
創(chuàng)建一個(gè)網(wǎng)橋設(shè)備時(shí),這個(gè)網(wǎng)橋設(shè)備和虛擬網(wǎng)卡一樣,沒(méi)有對(duì)應(yīng)的物理硬件,屬于邏輯上的設(shè)備。將物理網(wǎng)卡和虛擬網(wǎng)卡進(jìn)行橋接,都會(huì)成為了橋的成員接口,此時(shí)eth0和vnetX直接通信的不再是內(nèi)核,而是橋br0。但vnetX和eth0仍然可以在數(shù)據(jù)鏈路層上發(fā)送和接收幀。(不能直接向內(nèi)核網(wǎng)絡(luò)協(xié)議棧發(fā)送消息,而是只能接收來(lái)自網(wǎng)絡(luò)協(xié)議棧的消息),一旦進(jìn)行了橋接,vnetX和eth0就會(huì)共享相同的網(wǎng)絡(luò)段。從邏輯上講,它們都連接到了同一個(gè)數(shù)據(jù)鏈路層子網(wǎng)。
可以簡(jiǎn)單理解為,進(jìn)行橋接后,物理網(wǎng)卡變成了一根網(wǎng)線,連接外部硬件設(shè)備。

說(shuō)明:兩個(gè)網(wǎng)絡(luò)接口(無(wú)論是物理的還是虛擬的)之間的橋接,通常需要一個(gè)橋接設(shè)備。不能直接將兩個(gè)網(wǎng)絡(luò)接口橋接在一起而不創(chuàng)建一個(gè)橋接設(shè)備。
橋接說(shuō)明:
?橋接后的數(shù)據(jù)流:當(dāng)物理網(wǎng)卡(例如,eth0)被添加到橋(例如,br0)時(shí),它不再直接與網(wǎng)絡(luò)協(xié)議棧進(jìn)行通信。所有的數(shù)據(jù)鏈路層通信都通過(guò)橋接口來(lái)管理和轉(zhuǎn)發(fā)。此時(shí),橋接口充當(dāng)了一個(gè)虛擬交換機(jī)的角色,負(fù)責(zé)在其成員接口之間進(jìn)行數(shù)據(jù)鏈路層的幀轉(zhuǎn)發(fā)。
?IP地址分配:當(dāng)橋接配置完畢后,橋接口(如br0)成為與網(wǎng)絡(luò)協(xié)議棧交互的主要接口,因此應(yīng)當(dāng)為其分配IP地址。這就解釋了為什么將eth0橋接后,其原來(lái)的IP地址會(huì)被移除。同時(shí),橋接成員接口(如vnetX)通常不需要IP地址,因?yàn)樗鼈儾辉僦苯优c網(wǎng)絡(luò)協(xié)議棧交互,而是通過(guò)橋接口br0來(lái)進(jìn)行數(shù)據(jù)傳輸。
?物理網(wǎng)卡的作用:在橋接配置中,物理網(wǎng)卡可以被看作是一段傳輸介質(zhì)或“電纜”,連接計(jì)算機(jī)硬件與外部網(wǎng)絡(luò)。它確保橋接口及其成員可以與外部設(shè)備進(jìn)行數(shù)據(jù)鏈路層的通信。

Linux 網(wǎng)橋管理
通過(guò)工具管理網(wǎng)橋
1、通過(guò) brctl 創(chuàng)建網(wǎng)橋
brctl 是由 bridge-utils 軟件包提供的一個(gè)工具,可以通過(guò)這個(gè)工具來(lái)輕松創(chuàng)建網(wǎng)橋。但是隨著iproute2 套件的發(fā)展和普及,ip 命令開(kāi)始提供了類(lèi)似的功能,使得對(duì)網(wǎng)橋的管理brctl不再是首選的工具。
使用 brctl 創(chuàng)建的網(wǎng)橋在默認(rèn)情況下是臨時(shí)的,重啟系統(tǒng)就失效了。
創(chuàng)建網(wǎng)橋:
# br0是創(chuàng)建的網(wǎng)橋接口名稱(chēng) $ sudobrctladdbrbr0
給網(wǎng)橋添加成員接口:
# ens33和37是物理網(wǎng)卡 $brctladdifens33 $brctladdifens37
啟動(dòng)網(wǎng)橋:默認(rèn)網(wǎng)橋是down狀態(tài)的
ifconfig br_nameup或 iplink set br_nameup
刪除網(wǎng)橋:
brctldelbrbr_name
移除子接口:
brctldelifbr_namedevice_name
開(kāi)啟stp功能
brctlstpbr_nameon
2、通過(guò)NetworkManager 配置網(wǎng)橋
一般是通過(guò) NetworkManager 提供的命令行工具nmcli來(lái)管理網(wǎng)橋。因?yàn)楝F(xiàn)在的Linux發(fā)行版系統(tǒng)中,大多數(shù)是使用NetworkManager來(lái)作為網(wǎng)絡(luò)管理工具,當(dāng)使用nmcli進(jìn)行配置時(shí),NetworkManager會(huì)將這些配置寫(xiě)入其配置文件,以便在系統(tǒng)重啟后仍然有效。這些配置文件通常位于/etc/NetworkManager/system-connections/目錄下。
創(chuàng)建網(wǎng)橋:
nmcli conaddtypebridgecon-namebr0ifnamebr0
添加成員接口到網(wǎng)橋:
# con-name 物理網(wǎng)卡在橋接中的連接名稱(chēng) nmcli conaddtypebridge-slavecon-namebr0-eth1ifname eth1 masterbr0 # 刪除成員接口 nmcli con delete 物理網(wǎng)卡的連接名稱(chēng)
啟動(dòng)或停止網(wǎng)橋:
nmcliconup br0 nmclicondown br0
刪除網(wǎng)橋:
nmcli condeletebr0
查看網(wǎng)橋的配置:
nmcli con show |grepbridge
說(shuō)明:
連接名稱(chēng)是 NetworkManager 的一個(gè)核心概念,實(shí)現(xiàn)更方便地管理各種網(wǎng)絡(luò)設(shè)置,而不僅僅是通過(guò)網(wǎng)絡(luò)接口名稱(chēng)。在 NetworkManager 中,每一個(gè)網(wǎng)絡(luò)配置(無(wú)論是有線、橋接等)都被視為一個(gè)“連接”(connection)。這個(gè)連接有一個(gè)名字,通常被稱(chēng)為“連接名稱(chēng)”(connection name),名稱(chēng)任意,用于后續(xù)識(shí)別和管理該特定的連接。
啟動(dòng)stp功能:
nmcli con modifybr_namebridge.stpyes
3、通過(guò)ip命令管理網(wǎng)橋
ip命令是由iproute2 套件來(lái)提供的,提供了ip、ss等命令。使用ip命令來(lái)配置網(wǎng)橋也是臨時(shí)生效的哦。要使這些配置在重啟后依然生效,需要將這些命令添加到系統(tǒng)的啟動(dòng)腳本或使用專(zhuān)門(mén)的網(wǎng)絡(luò)配置文件來(lái)持久化設(shè)置。
創(chuàng)建網(wǎng)橋;
ip linkaddnamebr0typebridge
添加成員接口:
iplinksetdev eth1 master br0
啟動(dòng)或停止網(wǎng)橋;
# up iplinksetdev br0 up # down iplinksetdev br0 down
刪除網(wǎng)橋:
iplinkdelete dev br0typebridge
刪除成員接口;
iplinksetdev eth1 nomaster
查看網(wǎng)橋的配置:
iplinkshowtypebridge
啟動(dòng)stp功能:
sudoiplinksetbr_nametypebridge stp_state 1
網(wǎng)橋配置IP地址
創(chuàng)建一個(gè)網(wǎng)橋并將一個(gè)或多個(gè)網(wǎng)絡(luò)接口添加為其成員時(shí),成員接口上的IP地址配置通常會(huì)失效。此時(shí),所以要為網(wǎng)橋接口本身配置IP地址,以便它可以參與網(wǎng)絡(luò)通信。
這個(gè)時(shí)候直接將網(wǎng)橋設(shè)備當(dāng)成一個(gè)普通的網(wǎng)絡(luò)接口(例如eth0)進(jìn)行配置就行了,記得還需要配置路由
例如;
# 網(wǎng)絡(luò)接口配置 ip addradd192.168.1.10/24dev br0 # 路由配置 ip routeadddefaultvia192.168.1.1dev br0
通過(guò)配置文件管理網(wǎng)橋
1、centos7:
前提:檢查bridge模塊是否加載,如果沒(méi)有加載需要手動(dòng)進(jìn)行加載并設(shè)置持久生效
lsmod | grep bridge bridge 151336 0 stp 12976 1 bridge llc 14552 2 stp,bridge # 加載模塊 modeprobe bridge # 持久生效 vim /etc
1、創(chuàng)建網(wǎng)橋配置文件
配置文件位于:創(chuàng)建網(wǎng)橋配置文件 /etc/sysconfig/network-scripts/ifcfg-br_name
vim /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 TYPE=Bridge ONBOOT=yes BOOTPROTO=static IPADDR=10.0.0.20 NETMASK=255.255.255.0 GATEWAY=10.0.0.2 DNS1=180.76.76.76 DNS2=223.6.6.6 STP=on # 開(kāi)啟stp功能
2、修改物理網(wǎng)卡接口的配置文件
例如將eth0和eth1這兩個(gè)物理接口作為網(wǎng)橋br0的子接口
vim /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE="Ethernet" NAME="eth0" DEVICE="eth0" ONBOOT="yes" BRIDGE=br0 vim /etc/sysconfig/network-scripts/ifcfg-eth1 TYPE="Ethernet" NAME="eth1" DEVICE="eth1" ONBOOT="yes" BRIDGE=br0 # 表示當(dāng)前網(wǎng)絡(luò)接口(如 eth0)應(yīng)該被添加到名為 br0 的網(wǎng)橋作為一個(gè)成員接口eth0:

eth1:

3、重啟服務(wù)
centos7是默認(rèn)使用NetworkManager作為網(wǎng)絡(luò)管理服務(wù)。通過(guò)使用傳統(tǒng)的 network 腳本配置的網(wǎng)絡(luò),你仍然可以利用 NetworkManager 來(lái)管理和應(yīng)用這些配置。
systemctl restart NetworkManager

2、ubuntu1604:
前提:
需要加載bridge模塊
sudomodeprobe bridge sudovim /etc/modules bridges
需要安裝bridge-utils這個(gè)工具包,比較舊的一些版本bridge-utils 包是必要的
sudo aptinstallbridge-utils
1、修改配置文件
sudovim /etc/network/interfaces auto lo iface lo inet loopback auto br0 iface br0 inet static address 192.168.14.108 netmask 255.255.248.0 gateway 192.168.12.1 dns-nameserver 180.76.76.76 bridge_ports ens33 ens37 bridge_stp on auto ens33 iface ens33 inet manual up iplinkset$IFACEup down iplinkset$IFACEdown auto ens37 iface ens37 inet manual up iplinkset$IFACEup down iplinkset$IFACEdown
說(shuō)明:
1. 在配置文件中添加auto ens33和auto ens37目的是為了保證網(wǎng)絡(luò)接口開(kāi)機(jī)自啟動(dòng)
2. 給ens33和ens37配置 up 和down的命令是為了確保接口能正確上下線(系統(tǒng)啟動(dòng)或重新啟動(dòng)網(wǎng)絡(luò)服務(wù)時(shí))
3. 物理網(wǎng)絡(luò)接口使用手動(dòng)(manual)模式是為了確保系統(tǒng)知道這些接口存在,并且不會(huì)嘗試自動(dòng)為它們分配IP地址
4. bridge_stp需要設(shè)置為on,特別是網(wǎng)橋的成員接口位于同一個(gè)交換機(jī),不開(kāi)啟會(huì)發(fā)生環(huán)路的問(wèn)題;
5. $IFACE是一個(gè)特殊的變量,它自動(dòng)引用當(dāng)前被配置的網(wǎng)絡(luò)接口的名稱(chēng)
2、重啟服務(wù)
sudo systemctl restart networking
3、ubuntu2004
前提:需要加載bridge模塊
# 檢查模塊是否加載 lsmod | grep bridge # 加載模塊 sudomodprobe bridge # 持久化配置 sudovim /etc/modules bridge
1、編輯配置文件
network: version:2 renderer:networkd ethernets: ens33: dhcp4:no ens34: dhcp4:no bridges: br0: interfaces:[ens33,ens34] dhcp4:yes parameters: stp:true forward-delay:4
2、配置生效
編輯了 netplan 的配置文件后,這些更改并不會(huì)立即生效。為了使這些更改生效,需要運(yùn)行 sudo netplan apply。這樣,netplan 會(huì)讀取修改后的配置文件并調(diào)用底層的網(wǎng)絡(luò)管理工具(例如 networkd 或 NetworkManager)來(lái)應(yīng)用這些配置更改。
sudo netplan apply
3、檢查是否生效
bridgelinkshowbr0
stp功能介紹
stp是Spanning Tree Protocol(生成樹(shù)協(xié)議)的縮寫(xiě),作用就是用來(lái)防止二層環(huán)路的,用在二層交換機(jī)上面。網(wǎng)橋就相當(dāng)于是一個(gè)交換機(jī),所以在網(wǎng)橋?qū)⒊蓡T接口(物理網(wǎng)卡)加入時(shí),需要開(kāi)啟stp協(xié)議才行。不然如果兩個(gè)物理網(wǎng)卡是連接在一個(gè)交換機(jī)上面,就會(huì)產(chǎn)生廣播風(fēng)暴。導(dǎo)致整個(gè)局域網(wǎng)出現(xiàn)網(wǎng)絡(luò)不穩(wěn)定的問(wèn)題。
當(dāng)配置一個(gè)網(wǎng)橋并啟用STP協(xié)議后,為了避免可能的網(wǎng)絡(luò)環(huán)路,每個(gè)加入到該網(wǎng)橋的端口(一個(gè)端口就是一個(gè)物理網(wǎng)卡)會(huì)經(jīng)歷幾個(gè)狀態(tài)變遷,以確定網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),并確定哪些端口應(yīng)該被放入轉(zhuǎn)發(fā)狀態(tài),哪些端口應(yīng)該被阻塞。首先進(jìn)入阻塞狀態(tài)。從阻塞狀態(tài)轉(zhuǎn)移到轉(zhuǎn)發(fā)狀態(tài)前,端口需要經(jīng)歷兩個(gè)中間狀態(tài):
? 監(jiān)聽(tīng) (Listening):在此狀態(tài)中,端口會(huì)監(jiān)聽(tīng)可能的沖突的橋接數(shù)據(jù)包,但不會(huì)學(xué)習(xí)MAC地址。此狀態(tài)默認(rèn)持續(xù)15秒(這是Forward Delay的一半)。
? 學(xué)習(xí) (Learning):在此狀態(tài)中,端口開(kāi)始學(xué)習(xí)MAC地址,從而構(gòu)建其轉(zhuǎn)發(fā)數(shù)據(jù)庫(kù),但仍然不轉(zhuǎn)發(fā)楨。此狀態(tài)同樣持續(xù)15秒(這是Forward Delay的另一半)。
鏈接:https://www.cnblogs.com/heyongshen/p/16417712.html
-
Linux
+關(guān)注
關(guān)注
88文章
11593瀏覽量
217401 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7742瀏覽量
92551 -
網(wǎng)橋
+關(guān)注
關(guān)注
0文章
145瀏覽量
17549
原文標(biāo)題:運(yùn)維必看!Linux網(wǎng)橋配置參數(shù)與性能調(diào)優(yōu)速查表
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄

Linux網(wǎng)橋的概念和工作原理
評(píng)論