📄 network-bridging.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy, see www.w3.org" /><title>桥接</title><meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.7" /><link rel="HOME" title="FreeBSD 使用手册" href="index.html" /><link rel="UP" title="高级网络" href="advanced-networking.html" /><link rel="PREVIOUS" title="蓝牙" href="network-bluetooth.html" /><link rel="NEXT" title="无盘操作" href="network-diskless.html" /><link rel="STYLESHEET" type="text/css" href="docbook.css" /><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /></head><body class="SECT1" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#840084"alink="#0000FF"><div class="NAVHEADER"><table summary="Header navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><th colspan="3" align="center">FreeBSD 使用手册</th></tr><tr><td width="10%" align="left" valign="bottom"><a href="network-bluetooth.html"accesskey="P">后退</a></td><td width="80%" align="center" valign="bottom">章 24. 高级网络</td><td width="10%" align="right" valign="bottom"><a href="network-diskless.html"accesskey="N">前进</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="NETWORK-BRIDGING" name="NETWORK-BRIDGING">24.5. 桥接</a></h1><i class="AUTHORGROUP"><span class="CONTRIB">作者:</span> Steve Peterson.</i> <iclass="AUTHORGROUP"><span class="CONTRIB">中文翻译:</span> 张 雪平 和 袁 苏义.</i> <div class="SECT2"><h2 class="SECT2"><a id="AEN36296" name="AEN36296">24.5.1. 简介</a></h2><p>有时候需要将一个物理网络分成两个独立的网段,而无需创建新的IP子网和连接两个网段的路由器。以这种方式连接两个网络的设备称为``网桥(bridge)''。有两个网络接口的FreeBSD系统可以作为网桥。</p><p>网桥通过学习每个网络接口上的MAC层地址(以太网地址)工作。只当数据包的源地址和目标地址处于不同网络时网桥才进行转发。</p><p>在很多方面,网桥就像一个带有很少端口的以太网交换机。</p></div><div class="SECT2"><h2 class="SECT2"><a id="AEN36306" name="AEN36306">24.5.2. 适合桥接的情况</a></h2><p>目前,有两种常见的情况下使用网桥。</p><div class="SECT3"><h3 class="SECT3"><a id="AEN36309" name="AEN36309">24.5.2.1. 网段上存在高流量</a></h3><p>一种情况是你的物理网段流量过载,但是你不希望划分子网以路由器连接两个子网。</p><p>让我们考虑一个关于报社的例子,它的编辑部和产品部处于同一子网中。所有的编辑用户都使用服务器<tt class="HOSTID">A</tt>的文件服务,而产品部使用服务器<ttclass="HOSTID">B</tt>。一个以太网将所有的用户连接在一起,高的流量负载使得网络速度变慢。</p><p>如果编辑部的用户能被分隔到一个网段中,产品部用户被分隔到另一个网段中那么这两个网段可以通过网桥连接起来。只当数据包目标为网桥``其它''端接口时,它才会被传到其它的网络上——这样就减少了各个网络的拥塞。</p></div><div class="SECT3"><h3 class="SECT3"><a id="AEN36317" name="AEN36317">24.5.2.2. 过滤/数据传输防火墙</a></h3><p>第二种常见的情况是需要防火墙的地方没有进行网络地址转换(NAT)。</p><p>一个例子是一个小公司,它通过DSL或ISDN连接到ISP。它拥有13个ISP分配的全局IP地址和10台PC。在这种情况下,由于划分子网的问题,使用基于路由的防火墙存在一定难度。</p><p>一个基于网桥的防火墙可以成接在DSL/ISDN路由器的后面而免去了所有的IP号问题。</p></div></div><div class="SECT2"><h2 class="SECT2"><a id="AEN36332" name="AEN36332">24.5.3. 配置网桥</a></h2><div class="SECT3"><h3 class="SECT3"><a id="AEN36334" name="AEN36334">24.5.3.1. 选择网络接口卡</a></h3><p>一个网桥至少需要两块网卡才能运行。 不幸的是,并不是所有的网卡都能被FreeBSD4.0支持用于桥接。阅读<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">bridge</span>(4)</span>了解所支持网卡的细节。</p><p>在继续之前要先安装并测试这两块网卡。</p></div><div class="SECT3"><h3 class="SECT3"><a id="AEN36341" name="AEN36341">24.5.3.2. 改变内核配置</a></h3><p>为了激活内核对桥接的支持,增加以下语句:</p><pre class="PROGRAMLISTING">options BRIDGE</pre><p>到你的内核配置文件里,然后重建内核。</p></div><div class="SECT3"><h3 class="SECT3"><a id="AEN36349" name="AEN36349">24.5.3.3. 防火墙支持</a></h3><p>如果你计划将网桥作为防火墙,你还需要额外加入<varclass="LITERAL">IPFIREWALL</var>选项。阅读<a href="firewalls.html">µÚ 14.8节</a>了解关于配置网桥作为防火墙的大致信息。</p><p>如果允许非IP(non-IP)数据包 (比如 ARP)穿过网桥,必须设置一个防火墙(firewall)选项。这个选项是<varclass="LITERAL">IPFIREWALL_DEFAULT_TO_ACCEPT</var>。注意:这个选项改变了默认的规则使得防火墙接受任何的数据包。在你设置这些规则前,请确认这些规则可能会产生什么后果。</p></div><div class="SECT3"><h3 class="SECT3"><a id="AEN36358" name="AEN36358">24.5.3.4. 数据传输支持</a></h3><p>如果你希望将网桥作为一个数据传输器,你需要向内核文件中加入 <varclass="LITERAL">DUMMYNET</var> 选项。阅读<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">dummynet</span>(4)</span>以做进一步了解。</p></div></div><div class="SECT2"><h2 class="SECT2"><a id="AEN36365" name="AEN36365">24.5.4. 激活网桥</a></h2><p>增加下行:</p><pre class="PROGRAMLISTING">net.link.ether.bridge=1</pre><p>到 <tt class="FILENAME">/etc/sysctl.conf</tt>里,以便在运行时激活网桥,然后加下行:</p><pre class="PROGRAMLISTING">net.link.ether.bridge_cfg=<var class="REPLACEABLE">if1</var>,<varclass="REPLACEABLE">if2</var></pre><p>以便在指定的接口上激活网桥(使用你的两个网络接口的名字替换 <varclass="REPLACEABLE">if1</var> 和 <var class="REPLACEABLE">if2</var> )。如果你希望用<spanclass="CITEREFENTRY"><spanclass="REFENTRYTITLE">ipfw</span>(8)</span>来过滤桥接的数据包,你还应该加入:</p><pre class="PROGRAMLISTING">net.link.ether.bridge_ipfw=1</pre><p>这样一行。</p><p>对于FreeBSD 5.2-RELEASE 及以后的版本,使用下面几行来代替:</p><pre class="PROGRAMLISTING">net.link.ether.bridge.enable=1 net.link.ether.bridge.config=<varclass="REPLACEABLE">if1</var>,<varclass="REPLACEABLE">if2</var> net.link.ether.bridge.ipfw=1</pre></div><div class="SECT2"><h2 class="SECT2"><a id="AEN36386" name="AEN36386">24.5.5. 其它信息</a></h2><p>如果你希望可以从网络上<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">ssh</span>(1)</span>进入网桥,给一个网卡分配IP地址就可以了。原则上给两个张卡分配一个地址是很不好的。</p><p>如果网络中有多个网桥,任何两个工作站之间的路径不能多于一条。技术上说,它的意思是不支持生成连接树管理。</p><p>网桥会增加<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">ping</span>(8)</span>的延迟时间,尤其是不同网段之间的传输。</p></div></div><div class="NAVFOOTER"><hr align="LEFT" width="100%" /><table summary="Footer navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><td width="33%" align="left" valign="top"><a href="network-bluetooth.html"accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html"accesskey="H">起点</a></td><td width="33%" align="right" valign="top"><a href="network-diskless.html"accesskey="N">前进</a></td></tr><tr><td width="33%" align="left" valign="top">蓝牙</td><td width="34%" align="center" valign="top"><a href="advanced-networking.html"accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">无盘操作</td></tr></table></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -