本节介绍您需要什么以及如何准备您的网桥。
在这里您可以找到设置网桥所需的文件和下载列表。如果您在您的发行版中已经拥有提到的文件或软件包,当然没有必要增加网络负载。
我将只提及 2.2.14 内核的文件。如果您想尝试不同的内核(例如 2.2.15 或最新的开发内核),只需替换内核版本号并查看是否能找到它。
重要提示:您已经阅读了摘要,对吧?所以您知道,如果您使用的是 2.3.47 或更高版本的内核,则无需下载任何内核补丁。
文件和软件包列表
例如:linux-2.2.14.tar.bz2可从您本地的 kernel.org 镜像站点获取。请首先检查您的发行版中是否包含(获取未打补丁的内核源代码)。如果没有,请查看 Linux 内核镜像系统 寻找附近的镜像站点并从那里下载。
注意:如果您的内核版本高于 2.3.47,则不需要此补丁。从该版本开始,网桥功能已成为主流内核的一部分。
从 http://www.math.leidenuniv.nl/~buytenh/bridge/ 获取适用于您内核版本的网桥内核补丁。通过内核编号识别文件。
注意:也有一些补丁允许与 IP chains 一起使用。我从未尝试过,因为我认为在我的局域网内部进行防火墙设置没有必要,绝对没有必要针对外部世界架设网桥。欢迎您对此问题做出贡献。
用于稳定 2.2 内核的内核补丁。
可用的内核补丁
http://www.math.leidenuniv.nl/~buytenh/bridge/patches/bridge-0.0.9-against-2.2.18.diff
http://www.math.leidenuniv.nl/~buytenh/bridge/patches/bridge-0.0.8-against-2.2.18pre19.diff
http://www.math.leidenuniv.nl/~buytenh/bridge/patches/bridge-0.0.8-against-2.2.17-0.5.diff
http://www.math.leidenuniv.nl/~buytenh/bridge/patches/bridge-0.0.7-against-2.2.18pre15.diff
http://www.math.leidenuniv.nl/~buytenh/bridge/patches/bridge-0.0.7-against-2.2.17.diff
您还需要网桥配置实用程序来设置网桥,请参阅第 6 节。您也可以从 http://www.math.leidenuniv.nl/~buytenh/bridge/ 下载它们。
注意:如果您的内核版本高于 2.3.47,则不需要此补丁。从该版本开始,网桥功能已成为主流内核的一部分。
将网桥补丁应用于您的内核。如果您不知道如何操作,请阅读 Kernel-HOWTO,它可以在您的发行版中找到,或者在 http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html 找到。
现在是时候配置我们新打补丁的内核,以创建网桥功能。
运行 make config、make menuconfig 或 图形化界面 make xconfig。在 networking option 部分选择 bridging 以编译为模块。据我所知,不将其编译为内核模块并没有什么强烈的理由,但我听说过将网桥代码直接编译到内核中会遇到问题的传闻。
编译您的内核,请参阅示例 2。使新编译的内核镜像能够被加载。我不知道内核补丁是否仅适用于网桥模块,或者是否也修改了内部的一些接口vmlinuz。因此,在您更新内核镜像后重新启动可能不是一个错误。
以下是如何从头开始编译和安装。只需 解压 unzip 实用程序 tarball,cd 进入新创建的目录,然后执行 make。
示例 3. 编译网桥实用程序的命令
root@mbb-1:/usr/src/linux-2.2.14 # cd /usr/local/src root@mbb-1:/usr/local/src/ # tar xzvf bridge-utils-0.9.1.tar.gz ..... .... root@mbb-1:/usr/local/src # cd bridge root@mbb-1:/usr/local/src/bridge # make ..... .... |
在 示例 3 中显示的编译工作正常完成后,您可以将可执行文件复制到例如/usr/local/sbin/(至少我是这样做的)。因此,您需要给出的命令应该很清楚,但为了完整起见,请参阅 示例 4
示例 4. 复制实用程序的二进制文件
root@mbb-1:/usr/local/src/bridge # cd brctl root@mbb-1:/usr/local/src/bridge/brctl # cp brctl /usr/local/sbin root@mbb-1:/usr/local/src/bridge/brctl # chmod 700 /usr/local/sbin/brctl root@mbb-1:/usr/local/src/bridge/brctl # cp brctld /usr/local/sbin root@mbb-1:/usr/local/src/bridge/brctl # chmod 700 /usr/local/sbin/brctld |
现在您也可以将新的 man 手册页复制到一个合适的位置,如 示例 5 所示。