有时候需要将一个物理网络分成两个独立的网段, 而无需创建新的 IP 子网和连接两个网段的路由器。 以这种方式连接两个网络的设备称为“网桥 (bridge)”。 有两个网络接口的 FreeBSD 系统可以作为网桥。
网桥通过学习每个网络接口上的 MAC 层地址 (以太网地址) 工作。 只当数据包的源地址和目标地址处于不同网络时网桥才进行转发。
在很多方面,网桥就像一个带有很少端口的以太网交换机。
目前,有两种常见的情况下使用网桥。
一种情况是您的物理网段流量过载, 但是您不希望划分子网以路由器连接两个子网。
让我们考虑一个关于报社的例子, 它的编辑部和产品部处于同一子网中。 所有的编辑用户都使用服务器 A 的文件服务,而产品部使用服务器 B。 一个以太网将所有的用户连接在一起, 高的流量负载使得网络速度变慢。
如果编辑部的用户能被分隔到一个网段中, 产品部用户被分隔到另一个网段中那么这两个网段可以通过网桥连接起来。 只当数据包目标为网桥“其它”端接口时, 它才会被传到其它的网络上——这样就减少了各个网络的拥塞。
第二种常见的情况是需要防火墙的地方没有进行网络地址转换(NAT)。
一个例子是一个小公司,它通过 DSL 或 ISDN 连接到 ISP。 它拥有 13 个 ISP 分配的全局 IP 地址和 10 台 PC。 在这种情况下,由于划分子网的问题, 使用基于路由的防火墙存在一定难度。
一个基于网桥的防火墙可以成接在 DSL/ISDN 路由器的后面而免去了所有的 IP 号问题。
如果您打算把网桥作为防火墙来使用, 则还需要加入 IPFIREWALL 的设置。 请参考 第 26 章 以了解关于将网桥配置为防火墙的其它信息。
如果允许非IP(non-IP)数据包 (比如 ARP) 穿过网桥, 必须设置一个防火墙 (firewall) 选项。这个选项是 IPFIREWALL_DEFAULT_TO_ACCEPT。 注意:这个选项改变了默认的规则使得防火墙接受任何的数据包。 在您设置这些规则前,请确认这些规则可能会产生什么后果。
如果您希望将网桥作为一个数据传输器, 您需要向内核文件中加入 DUMMYNET 选项。阅读 dummynet(4) 以做进一步了解。
增加下行:
net.link.ether.bridge.enable=1
到 /etc/sysctl.conf 里, 以便在运行时激活网桥,然后加下行:
net.link.ether.bridge.config=if1,if2
以便在指定的接口上激活网桥 (使用您的两个网络接口的名字替换 if1 和 if2 )。如果您希望用 ipfw(8) 来过滤桥接的数据包,您还应该加入:
net.link.ether.bridge.ipfw=1
这样一行。
对于 FreeBSD 5.2-RELEASE 和更早的版本, 则应使用下面的配置:
net.link.ether.bridge=1 net.link.ether.bridge_cfg=if1,if2 net.link.ether.bridge_ipfw=1
如果您希望可以从网络上 ssh(1) 进入网桥, 给一个网卡分配 IP 地址就可以了。 原则上给两张卡分配一个地址是很不好的。
如果网络中有多个网桥, 任何两个工作站之间的路径不能多于一条。 技术上说,它的意思是不支持生成连接树管理。
网桥会增加 ping(8) 的延迟时间, 尤其是不同网段之间的传输。
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<[email protected]>.
关于本文档的问题请发信联系 <[email protected]>.