Linux網橋是網橋的軟件實現,這是Linux內核的內核部分。與硬件網橋相類似,Linux網橋維護了一個2層轉發表(也稱為MAC學習表,轉發數據庫,或者僅僅稱為FDB),它跟蹤記錄了MAC地址與端口的對應關系。當一個網橋在端口N收到一個包時(源MAC地址為X),它在FDB中記錄為MAC地址X可以從端口N到達。這樣的話,以后當網橋需要轉發一個包到地址X時,它就可以從FDB查詢知道轉發到哪里。構建一個FDB常常稱之為“MAC學習”或僅僅稱為“學習”過程。
成都創新互聯網站建設公司是一家服務多年做網站建設策劃設計制作的公司,為廣大用戶提供了網站制作、網站建設,成都網站設計,一元廣告,成都做網站選成都創新互聯,貼合企業需求,高性價比,滿足客戶不同層次的需求一站式服務歡迎致電。
你可以使用以下命令來檢查Linux網橋當前轉發表或MAC學習表。
1.$ sudo brctl showmacs bridge-name
該命令將顯示一個學習到的MAC地址與關聯端口的列表。各個條目都有一個相關的附于其上的老化計時器,因此轉發條目可以在一定時間后刷新,以使MAC學習表更新到最新。
有五臺主機。其中一臺主機裝有linux ,安裝了網橋模塊,而且有四塊物理網卡,分別連接同一網段的其他主機。我們希望其成為一個網橋,為其他四臺主機(IP分別為192.168.1.2 ,192.168.1.3,192.168.1.4,192.168.1.5) 之間轉發數據包。同時,為了方便管理,希望網橋能夠有一個IP(192.168.1.1),那樣管理員就可以在192.168.1.0/24網段內的主機上telnet到網橋,對其進行配置,實現遠程管理。
前一節中提到,網橋在同一個邏輯網段轉發數據包。針對上面的拓撲,這個邏輯網段就是192.168.1.0/24網段。我們為這個邏輯網段一個名稱,br0。首先需要配置這樣一個邏輯網段。# brctl addbr br0 (建立一個邏輯網段,名稱為br0) 實際上,我們可以把邏輯網段192.168.1.0/24看作使一個VLAN ,而br0則是這個VLAN的名稱。建立一個邏輯網段之后,我們還需要為這個網段分配特定的端口。在Linux中,一個端口實際上就是一個物理網卡。而每個物理網卡的名稱則分別為eth0,eth1,eth2,eth3。我們需要把每個網卡一一和br0這個網段聯系起來,作為br0中的一個端口。# brctl addif br0 eth0 (讓eth0成為br0的一個端口)# brctl addif br0 eth1 (讓eth1成為br0的一個端口)# brctl addif br0 eth0 (讓eth2成為br0的一個端口)# brctl addif br0 eth3 (讓eth3成為br0的一個端口) 網橋的每個物理網卡作為一個端口,運行于混雜模式,而且是在鏈路層工作,所以就不需要IP了。# ifconfig eth0 0.0.0.0# ifconfig eth1 0.0.0.0# ifconfig eth2 0.0.0.0# ifconfig eth3 0.0.0.0 然后給br0的虛擬網卡配置IP:192.168.1.1。那樣就能遠程管理網橋。# ifconfig br0 192.168.1.1 給br0配置了IP之后,網橋就能夠工作了。192.168.1.0/24網段內的主機都可以telnet到網橋上對其進行配置。以上配置的是一個邏輯網段,實際上Linux網橋也能配置成多個邏輯網段(相當于交換機中劃分多個VLAN)。
Neutron 默認使用 ML2 作為 core plugin,配置文件 /etc/neutron/neutron.conf 中 core_plugin
計算節點和控制節點都需要在各自的 neutron.conf 中配置 core_plugin
然后配置 ML2 的配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中 mechanism_drivers
mechanism_drivers 可以同時指定多個。這里只指定了一個。
查看 linuxbridge 進程
控制節點:
計算節點:
在 Linux Bridge 環境中,一個數據包從 Instance 發送到物理網卡會經過下面幾個類型的設備:
對于每個 local network,ML2 linux-bridge 會創建一個 bridge,Instance 的 tap 設備會連接到 bridge。位于同一個 local network 的 Instance 會連接到相同的 bridge,這樣 Instance 之間就可以通訊了。
因為 local network 沒有與物理網卡相連,所以 Instance 無法與宿主機之外的網絡通信。
同時因為每個 local network 有自己的 bridge,bridge 之間是沒有連通的,所以兩個 local network 之間是不通的。
ML2 配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini
type_drivers ML2 加載網絡類型。
tenant_network_types 普通用戶在自己的 Tenant(Project)中創建網絡時,默認創建哪種 type 的網絡。
tenant_network_types = vlan, local 意思是當沒有 vlan 可創建時,使用 local。
檢測 Neutron Agent 是否正常 管理員 -- 系統 -- 系統信息 -- 網絡代理
從用戶管理創建網絡
創建網絡 項目 -- 網絡 -- 網絡
填寫網絡名稱
填寫子網信息。 網關 IP 可以不用填寫。默認為子網地址的第一個 IP。即:172.16.10.1
添加子網 IP 范圍。
點擊網絡名稱,進去相信信息,可以看到子網和端口信息等。
可以看到在端口中已經創建了一個 port,名為 “(c45b69e6-04ba)”,IP 為 172.16.10.2。連接設備為 "network:dhcp"。
打開控制節點終端,使用 brctl show 查看 linux bridge 的狀態。
可以看到 bridge 設備 brqd2fd4378-9e 和 tap 設備 tapc45b69e6-04
創建 Instance 并選擇剛剛創建的網絡。
創建 Instance 成功后可以發現已經分配 IP 地址。
在底層中 Neutron 會在 subnet 中創建一個 port,分配 IP 和 MAC 地址,并將 port 分配給 test。如下圖
點進去可以看到詳情
在宿主機上執行 brctl show 可以查看 bridge 的配置。
可以看到 bridge brqd2fd4378-9e 上連接了一個新的 tap 設備。
查看 Instance 信息。使用 virsh list 查看 Instance 運行中的列表。
使用 virsh edit 1 查看配置信息。
配置信息省略很多。重要的放在上面。
mac address='fa:16:3e:19:e1:57'/ 是 Instance 網卡的 MAC 地址
target dev='tapb337d11f-54'/ 是 Instance 虛擬網卡信息
ping test1 的 IP 地址發現是可以 ping 通。
查看 brctl show
發現 brqd2fd4378-9e 中又計入進來一個 VIF,因為兩個 VIF 掛載在同一個 Linux Bridge 上,所以可以通訊。
結構如下:
如果新分的 Instance 在計算節點中。不在控制節點。他們之間將不在互通。
因為 DHCP agent 在控制節點上運行,test2 在計算節點的 local 網絡上,兩者位于不同物理節點。由于 local 網絡的流量只能局限在本節點之內,發送的請求無法到達計算節點。
上圖 物理網卡 eth1 橋接到 brqXXXX,為 Instance 提供 flat 網絡。
下圖 創建多個 flat Network,就要準備多個物理機網卡。
在 /etc/neutron/plugins/ml2/ml2.conf.ini 配置文件中,修改 tenant_network_types 參數為 flat
:這里是指定普通用戶使用 flat。因為 flat 網絡與物理網卡一一對應。一般情況下租戶網絡不采用 flat。
flat_networks 定義一個 flat 網絡,label 為 “default”
通過 physical_interface_mappings 指名 default 對應的物理網卡為 ens35
例如:對于 label 為 “default” 的 flat network,節點 A 可能使用 ens35,配置為:
而 B 節點則可以使用 ens33,配置為:
創建 flat 網絡
綁定子網
查看 控制節點網絡狀態
Neutron 自動新建了 flat_net 對應的網橋 brq9e3013c8-93,以及 dhcp 的 tap 設備 tap50802894-1a。
此時 tap50802894-1a 和物理網卡 ens35 都已經連接到網橋 brq9e3013c8-93 上。
可以看到 Instance 的 tap 設備 tapc1241c3f-cb 已經連接到網橋
配置文件 /etc/neutron/dhcp_agent.ini 中的 dhcp_driver 和 interface_driver
dnsmasq 是一個提供 DHCP 和 DNS 服務的開源軟件。
在實現環境中使用 ps 命令可以查看到 dnsmasq 進程。
DHCP agent 會為每個 network 創建一個目錄 /opt/stack/data/neutron/dhcp/xxxx 用于存放該 network 的 dnsmasq 配置文件。
在二層網絡上,VLAN 可以將一個交換機分割成幾個獨立的虛擬交換機。
類似,在三層網絡上,Linux Network Namespace 可以將一個物理三層網絡分割成幾個獨立的虛擬三層網絡。
每個 namespace 都有自己獨立的網絡棧,包括 route table,firewall rule,network interface device等
Neutron 通過 dnsmasq 為每個 Network 提供單獨的 DHCP 和路由服務。
使用 ip 查看所有 namespcae
使用 neutron 查看 net-list
查看某個 namespace 的詳細配置
3 個 Instance 通過 tap 設備連接到名為 “vrqXXXX” 的 Linux Bridge。
在物理網卡 eth1 上創建 eth1.100 的 valn interface,eth1.100 連接到 brqXXXX。
這樣,Instance 通過 eth1.100 發送到 eth1 的數據包就會打上 vlan100 的 tag。
如果在創建個 network vlan101,eth1 上就會相應的創建多個 vlan interface eht1.101 并連接新的 Linux Bridge “brqYYYY”。
配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中設置 tenant_network_types 的值為 vlan
配置 vlan 的范圍
意思是:配置定義了 lable 為 “default” 的 valn network,valn id 的范圍是 3001~4000。這里配置的是普通用戶使用的范圍。
admin 可以使用 1~4096 的 valn network
再次指定 vlan network 與物理網卡的對應關系
配置子網
查看系統網橋
這里可以看到:
vlan100 對應的網橋為 brq2b85ebb9-a。
vlan interface 是 ens35.100 (我是用的是 Ubuntu 16.04 默認網卡名 ens 開始的。)
DHCP 的 tap 設備是 tapf85d61d8-c3。
在 計算節點查看 網橋信息
可以發現創建的 Instance 已經連接到 vlan100 對應的網橋 brq2b85ebb9-a 上。因為計算節點沒有 DHCP 服務所以沒有相應的 tap 設備。
另外 網橋的名字與控制節點是一樣的,都是 brq2b85ebb9-a6,表示是在同一個 network 上。
下圖是我創建 VLAN 后 兩臺 Instance 分別在控制節點和計算機點的網絡圖
此時兩臺 Instance 在同一 valn100 下。相互之間是可以 ping 通的。
如果在創建一個 vlan101。如果兩臺 Instance1 和 Instance2 分別連在 vlan100 和 vlan101。此時兩臺 Instance 是不能 ping 通的。
如下圖兩個 vlan
兩臺 Instance1 和 Instance2 分別連在 vlan100 和 vlan101。此時兩臺 Instance 是不能 ping 通的。
因為 vlan 在二層是隔離的。如果想要互通,只能在三層通過路由轉發。
1、建立網橋
touch /etc/sysconfig/network-scripts/ifcfg-br0
建立網橋配置文件ifcfg-br0
vi /etc/sysconfig/network-scripts/ifcfg-br0
2、添加網卡到網橋把eth0和eth1兩網卡添加到網橋中。修改eth1網卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改eth2網卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-eth2
3. 重啟網絡服務
service network restart
本文題目:包含linux查看網橋的命令的詞條
鏈接分享:http://m.kartarina.com/article32/hgjesc.html
成都網站建設公司_創新互聯,為您提供商城網站、營銷型網站建設、App設計、動態網站、企業網站制作、網站收錄
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯