橋接器的運作 mini-Howto <author> 作者: Christopher Cole, <tt><htmlurl url="mailto:cole@lynkmedia.com" name="cole@lynkmedia.com"></tt><newline> 譯者: Mile Yeh <tt/mile@mail.timenet.net/ <date>v1.10, 13十一月 1997 <abstract> 這文件描述如何去設定一個乙太網路橋接器.什麼 是一個乙太網路橋接器?一個乙太網路橋接器是一個設備它可以控制在 一個子網路之內的資料封包去試圖減少網路的大量流量. 一個橋接器是通常安放的在兩組分開的電腦群組之間使 電腦自己在內部溝通自已,而不是頻繁和其他的群組的電腦溝通 .一個好的例子的是想想一群的麥金塔和 一群的 Unix 機器.這些組別的機器兩個群組都傾向於 他們自己和自已的機器十分繁忙的溝通, 他們在網路上產生的通訊流量使其他機器試著和另外一個溝通時的造成碰撞 .一個橋接器是放的在這些電腦組群之間 .橋接器的工作是然後檢查那目的地的 數據封包一個一次而且決定要不要傳輸 封包到那乙太網區段另一邊.結果是變成一個 更快的,更安靜,更少的碰撞的網路. </abstract> <!--目錄 --> <toc> <sect>設定 <p> <enum> <item>取得 ``橋接器配置'': <tscreen> <url url="ftp://shadow.cabi.net/pub/Linux/BRCFG.tgz"> </tscreen> <item>取得和閱讀 ``Multiple ethernet'' HOWTO: <tscreen> <url url="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/Multiple-Ethernet"> </tscreen> <item><p> 使多個乙太網路設備在你的機器運作照著 加入這行到你的 <tt>/etc/lilo.conf</tt>, 和重新執行 <tt>lilo</tt>: <tscreen> <verb> append = "ether=0,0,eth1" </verb> </tscreen> 如果你在你的橋接器上有三張界面卡,使用這些行取代上面: <tscreen> <verb> append = "ether=0,0,eth1 ether=0,0,eth2" </verb> </tscreen> <!-- </p> --> <!-- <p> --> 靠加入更多的乙太陳述可以找到更多的界面. 預設上一個傳統的 Linux 核心只偵測一張獨一的乙太網路卡, 和當一個被找到偵測就會停止. 上面所附加的陳述告訴核心在第一個被找到之後繼續偵測 去找到更多乙太網路設備. <!-- </p> --> <!-- <p> --> 另一個方法,可以使用啟動變數來取代: <tscreen> <verb> linux ether=0,0,eth1 </verb> </tscreen> 或者, 有三個界面,使用: <tscreen> <verb> linux ether=0,0,eth1 ether=0,0,eth2 </verb> </tscreen> <!-- </p> --> <item>重新編譯那核心啟動<tt>BRIDGING</tt>功能. <item>一個橋接器應沒有一個的 IP 地址. 它可以有一個,但是一個平常的橋接器不需要一個 IP 地址. 從你的橋接器上移除 IP 地址,到 <tt>/etc/sysconfig/network-scripts/</tt> (對於一個 RedHat系統) 和拷貝 <tt>ifcfg-lo0</tt>到 <tt>ifcfg-eth0</tt> & <tt>ifcfg-eth1</tt>. 在這兩個乙太檔案中,改變那行包含 ``<tt>DEVICE=lo</tt>'' to ``<tt>DEVICE=eth0</tt>'' 和 ``<tt>DEVICE=eth1</tt>''. 別的 Linux distribution 也許和這個不同,自已動手做你想要的! 如果橋接器上有超過兩個界面卡, 確定也使設定符合這些界面. <item>重新啟動,執行那包含橋接器功能的核心, 另外也查明確認一個 IP 地址沒有指定到 這網路界面卡. <item>一次系統是備份, 把乙太網路卡設定在紛亂(promiscuous)的模式, 他們將靠它的界面監看每一個通過的封包: <tscreen> <verb> ifconfig promisc eth0 ; ifconfig promisc eth1 </verb> </tscreen> 連接到網路區段的全部的界面卡被橋接器分開 進入 promiscuous(紛亂) 的模式. <item>啟動橋接器使用 <tt>brcfg</tt>程式: <tscreen> <verb> brcfg -ena </verb> </tscreen> <item>檢驗每一個界面卡有不同的交通流量: <tscreen> <verb> tcpdump -i eth0 (在一個視窗) tcpdump -i eth1 (在另一個視窗) </verb> </tscreen> <item>執行一個 sniffer (監看器) 或者 <tt>tcpdump</tt> 在另外的機器上 去檢驗橋接器正確地分開區段. </enum> </p> <sect>一般的問題 <p> <enum> <item> <descrip> <tag/Question/ 我得到這個訊息 <tscreen> <verb> ioctl(SIOCGIFBR) failed: Package not installed </verb> </tscreen> 這是什麼意思? <tag/Answer/ 你的核心沒有橋接器的能力. 取得到一個 2.0或者更後面的核心, 和重新編譯啟動橋接器功能的選項 <tt>BRIDGING</tt>. </descrip> <item> <descrip> <tag/Question/ 機器在一邊不能 ping 到另外一邊! <tag/Answer/ <itemize> <item>你有使用 ``<tt>brcfg -ena</tt>' 使橋接器運作'嗎? (<tt>brcfg</tt>將說 ``<tt>bridging is ENABLED</tt>'') <item>你有把界面放在 promiscuous(紛亂)的模式嗎? (使用 ``<tt>ifconfig</tt>''命令. 那 ``<tt>PROMISC</tt>''參數應該是在 兩個界面卡上.) <item>如果正在用 multiple-media 界面卡, 確定啟動的是正確的是那一端. 你也許需要使用和網路界面卡附的 配置/設定 程式來做設定 . </itemize> </descrip> <item> <descrip> <tag/Question/ 我不能從橋接器上 <tt>telnet</tt>/<tt>ftp</tt>!為什麼? <tag/Answer/ 這是因為沒有 IP 地址指定到任何的橋接器的 界面卡.一個橋接器是一個網路的透通部分. </descrip> <item> <descrip> <tag/Question/ 在設定路由方面我需要做什麼? <tag/Answer/ 無! 整個的路由資料是由 核心的橋接器的碼所掌握. 靠橋接器看見那乙太網路地址他們是被學習, 在測錯模式下使用 <tt>brcfg</tt>程式: <tscreen> <verb> brcfg -deb </verb> </tscreen> </descrip> <item> <descrip> <tag/Question/ 那橋接器看起來有運作,但是為什麼 ``traceroute'' 沒有顯示那 橋接器是路徑的一個部分? <tag/Answer/ 由於橋接器當然的功能, ``traceroute''將不顯示 橋接器當作路徑的一部分.一個橋接器是網路的一個透通 組件. </descrip> <item> <descrip> <tag/Question/ <tt>IP_FORWARD</tt> 是否必要編譯到核心中呢? <tag/Answer/ 不.核心中的橋接器的碼照料封包 傳送. <tt>IP_FORWARD</tt>對於一個 gateway(通路閘)它要有 IP 地址 指定到它的界面. </descrip> <item> <descrip> <tag/Question/ 根據那 ``<tt>brcfg</tt>''程式顯示,為什麼對於埠 1和埠 2 實體的 乙太網路地址是相同的? 他們應該是不同的嗎? <tag/Answer/ 不.一個橋接器的每一埠是故意地是由橋接器的碼指定那相同的 實體的乙太網路地址. </descrip> <item> <descrip> <tag/Question/ 當在核心中執行的一個 (make config)建造設定,橋接器的選項沒有出現 .它是如何啟動的呢? <tag/Answer/ 在核心配置的時候,針對以下的問題回答 'Y' , ``Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?]''. </descrip> <item> <descrip> <tag/Question/ 太多集線器 (4個或者更多)一個接一個串連在一起 (連續地) 在一個乙太網路上造成時間回應的問題.在一個由集線器所佈建的子網中 一個橋接器會有什麼結果? <tag/Answer/ 一個橋接器重設 3/4/5集線器規則.一個橋接器沒有如同一個集線器所做的處理 封包,因此沒有一個 contributor(貢獻者) 到 在一個網路上有時間回應問題. </descrip> <item> <descrip> <tag/Question/ 一個橋接器界面能夠同時連接 10Mb 和 100Mb 兩個乙太網路區段? 這樣的配置會造成高速流量的另一邊 慢下來嗎? <tag/Answer/ 是,一個橋接器能夠把 10 Mb 的區段和 100Mb 的區段綁在一起 只要那網路卡在橋接器的快速網路的那一邊 是有 100Mb 能力的 , TCP 將要照料其餘的部分.這時它發生的情形是 從一個在 100Mb 網路的主機送封包溝通另 一個在 10Mb 網路的主機是只有用 10Mb/s 的速度移動,其餘的 那網路交通在快速乙太網路是不會被拖慢. </descrip> </enum> </p> </article>