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