桥接器的运作 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