桥接器的运作 mini-Howto

作者: Christopher Cole, cole@lynkmedia.com
译者: Mile Yeh mile@mail.timenet.net
v1.10, 13十一月 1997


--------------------------------------------------------------------------------
这文件描述如何去设定一个乙太网路桥接器.什麽是一个乙太网路桥接器?一个乙太网路桥接器是一个设备它可以控制在一个子网路之内的资料封包去试图减少网路的大量流量. 一个桥接器是通常安放的在两组分开的电脑群组之间使电脑自己在内部沟通自已,而不是频繁和其他的群组的电脑沟通.一个好的例子的是想想一群的麦金塔和一群的 Unix 机器.这些组别的机器两个群组都倾向於他们自己和自已的机器十分繁忙的沟通, 他们在网路上产生的通讯流量使其他机器试著和另外一个沟通时的造成碰撞.一个桥接器是放的在这些电脑组群之间.桥接器的工作是然後检查那目的地的数据封包一个一次而且决定要不要传输封包到那乙太网区段另一边.结果是变成一个更快的,更安静,更少的碰撞的网路.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

1. 设定

取得 ``桥接器配置"":
ftp://shadow.cabi.net/pub/Linux/BRCFG.tgz
取得和阅读 ``Multiple ethernet"" HOWTO:
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/Multiple-Ethernet
使多个乙太网路设备在你的机器运作照著加入这行到你的 /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



重新编译那核心启动BRIDGING功能.
一个桥接器应没有一个的 IP 地址. 它可以有一个,但是一个平常的桥接器不需要一个 IP 地址. 从你的桥接器上移除 IP 地址,到 /etc/sysconfig/network-scripts/ (对於一个 RedHat系统) 和拷贝 ifcfg-lo0到 ifcfg-eth0 & ifcfg-eth1. 在这两个乙太档案中,改变那行包含 ``DEVICE=lo"" to ``DEVICE=eth0"" 和 ``DEVICE=eth1"". 别的 Linux distribution 也许和这个不同,自已动手做你想要的! 如果桥接器上有超过两个界面卡, 确定也使设定符合这些界面.
重新启动,执行那包含桥接器功能的核心, 另外也查明确认一个 IP 地址没有指定到这网路界面卡.
一次系统是备份, 把乙太网路卡设定在纷乱(promiscuous)的模式, 他们将靠它的界面监看每一个通过的封包:
ifconfig promisc eth0 ; ifconfig promisc eth1


连接到网路区段的全部的界面卡被桥接器分开进入 promiscuous(纷乱) 的模式.
启动桥接器使用 brcfg程式:
brcfg -ena


检验每一个界面卡有不同的交通流量:
tcpdump -i eth0(在一个视窗)
tcpdump -i eth1(在另一个视窗)


执行一个 sniffer (监看器) 或者 tcpdump 在另外的机器上去检验桥接器正确地分开区段.

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

2. 一般的问题


Question
我得到这个讯息

ioctl(SIOCGIFBR) failed: Package not installed


这是什麽意思?

推荐阅读