本文適用對象:擁有一定的網絡基礎、Linux基礎、略懂英文、熱愛鑽研的linux愛好者本文適用軟件版本:Redhat系的Linux發行版,包括RedHat,FeraCore,Mandrake等,包中的腳本只在RedHat9和Mandrake10.1下測試通過,歡迎你來測試別的版本本文作者及版權:Copyleft under Free Documentation License (FDL) by elcoud
[email protected]本文及相關軟件包下載:(暫時還沒找到地方,見附件)
第一部分: 概念原理[網橋]是用於連接ISO第二層網絡的設備,它只提供以太網層次的連接,對於之上的TCP/IP等協議來說是完全透明的,你可以把它理解為交換機,實際上交換機也是一種網橋的實現。在Linux上配置網橋可以說就是把機器當作交換機來用。比如我現在的情況,在公司裡使用兩台電腦,但是我的位子上之有一條網線,於是我在台式機上裝了雙網卡,配置了網橋,一塊網卡連接公司網絡,一塊通過雙機直連線連接我的筆記本電腦。兩台機器都有公司內部的固定IP地址,通過公司網關連入Internet.台式機對於筆記本電腦來說就是一個交換機 Linux從2.4內核開始就非常好的支持了網橋,並且還支持生成樹協議等高級應用。加入網橋的物理端口將不分配IP地址,只有網橋虛擬端口可以分配IP地址。虛擬端口可以完全當作一個普通端口來使用,並且支持iptables的各種應用和路由配合eBTables,還可以支持二層網絡包過濾、轉發等高級應用。可以說Linux配合相應的工具完全可以提供高端交換機和路由器的各種功能、甚至他們沒有的功能,當然了,受到PCI總線的限制,效率上一定是不如的
第二部分: 安裝配置1,安裝rpm包裝好以後,bridge-utils工具包就可以使用了輸入brctl(回車)可以看到使用幫助,比較簡單,由於我們主要使用系統腳本來設置網橋,所以基本不會使用這個命令,最多使用brctl show來查看網橋的狀態詳細信息可以去看/usr/share/doc/bridge-utils-1.0.4中的文檔 2,給文件/sbin/ifup打補丁patch -p0 /sbin/ifup < ifup.patch 3,在/etc/modprobe.conf文件中加入:alias bri0 bridge bri0是你給bridge端口起的名字,也可以叫別的,也可以有多個 4,修改/etc/sysconfig/network-scripts/目錄中的物理網卡配置文件ifcfg-eth0等在第2行開始加入如下兩行:TYPE=Bridge BRIDGE=bri0這是表明該物理網卡所屬的bridge的名字,根據自己的實際情況填寫 5,將文件ifcfg-bri0復制到/etc/sysconfig/network-scripts chown root:root ifcfg-bri0 chmod 755 ifcfg-bri0根據自己的需要進行相應修改注意這個文件實際是bridge虛擬端口的配置文件,可以把bri0虛擬成一塊普通的網卡,此文件中千萬不能出現TYPE和BRIDGE這兩個變量的定義,不然bri0無法獲得ip地址,如果你有多個bridge端口可以復制多份此文件並且改成相應的名字。BVI這個TYPE是我自己定義的,並對應ifup腳本中修改的部分,用於初始化bridge虛擬端口,不要擅自更改 6,重啟網絡服務/etc/init.d/network restart類似如下顯示,表明你的網橋已經順利運行了,你可以隨時使用ifup/ifdown等工具來開關虛擬端口和任何一個物理端口正在關閉接口 eth0: [完成]正在關閉接口 eth1: [完成]正在關閉接口 bri0: [完成]正在關閉回環接口: [完成]正在設置網絡參數: [完成]加載回環接口: [完成]正在打開接口 bri0: [完成]正在打開接口 eth0: [完成]正在打開接口 eth1: [完成] 7,其他如果你的ifup版本實在太老打了補丁仍無法順利運行,那麼就直接使用包裡帶的這個ifup腳本,把他復制到/sbin/目錄chown root:root /sbin/ifup chmod 755 /sbin/ifup 8,後記其實安裝好bridge-utils工具包以後,網橋功能已經可以正常使用,在啟動腳本(如/etc/profile)中添加若干brctl命令行和ifconfig命令行就可以完成網橋接口的配置和IP設置工作之所以要采取本文所列的一系列方法其主要目的是為了讓網橋功能跟系統網絡服務緊密結合,使bridge虛擬端口能夠像一個標准的網絡接口一樣通過network服務啟動,通過ifuo/ipdown等工具來控制,並且比命令行配置方式具有更大的靈活性在嘗試配置的過程中,遇到最大的問題主要來自ifup腳本對端口的啟動順序因為b在e前面,bri0最先進入配置流程,這個時候eth等端口還沒有開啟,橋bri0還沒有定義,因此ifup無法給他配置IP.因此我自己定義了BVI(Bridge Virtual Interface)這種類型,並且在ifup腳本中增加了一個判斷,使得bri0一進入配置流程就會先被定義。如果我們起的端口名字不叫bri0而叫z什麼什麼的話,恐怕就不會有這個問題了^o^之所以會作這個東西是因為我自己正好有這樣一個需求,並且因為網絡的原因公司機器安裝的是Mandrake10.1,不像debian那樣對bridge支持的好,看了一下自帶的文檔只有vlan和bond的,因此才會自己動手添加對bridge的支持。bridge-utils工具包的源碼來自http://bridge.sourceforge.net ,在RH9.0下打包成rpm