⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 network-routing.html

📁 FreeBSD操作系统的详细使用手册
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!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="advanced-networking.html" /><link rel="NEXT" title="无线网络" href="network-wireless.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="advanced-networking.html"accesskey="P">后退</a></td><td width="80%" align="center" valign="bottom">章 24. 高级网络</td><td width="10%" align="right" valign="bottom"><a href="network-wireless.html"accesskey="N">前进</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="NETWORK-ROUTING" name="NETWORK-ROUTING">24.2.网关和路由</a></h1><i class="AUTHORGROUP"><span class="CONTRIB">贡献者:</span>Coranth Gryphon.</i> <iclass="AUTHORGROUP"><span class="CONTRIB">中文翻译:</span> 张 雪平 和 袁 苏义.</i> <p>为了让一台主机在网能找到另一台主机,就必须要有一种机制来描述如何从一台主机连至另一台上。这个就叫做<i class="FIRSTTERM">路由选择(routing)</i>. 一个``路由''是一对预先定义的地址:``目的地(destination)'' 和 ``网关(gateway)''. 这对地址表明如果你想要试着到达这个<spanclass="emphasis"><i class="EMPHASIS">目的地(destination)</i></span>,那么就通过这个<spanclass="emphasis"><i class="EMPHASIS">网关(gateway)</i></span>进行通信。目的地有三种类型:单个主机(individualhosts),子网(subnets)和``默认(default)''。如果没有其它路由应用,就使用``默认路由(defaultroute)''。关于默认路由我们以后为讨论多一点。有三种类型的网关:单个主机,接口(也叫``连接(links)'')和以太网硬件地址(MAC addresses)。</p><div class="SECT2"><h2 class="SECT2"><a id="AEN35363" name="AEN35363">24.2.1. 实例</a></h2><p>为了说明路由选择的各个部分,我们使用以用下面这个例子。以下是命令<ttclass="COMMAND">netstat</tt>的输出:</p><pre class="SCREEN"><samp class="PROMPT">%</samp> <kbd class="USERINPUT">netstat -r</kbd> Routing tablesDestination      Gateway            Flags     Refs     Use     Netif Expiredefault          outside-gw         UGSc       37      418      ppp0 localhost        localhost          UH          0      181       lo0 test0            0:e0:b5:36:cf:4f   UHLW        5    63288       ed0     77 10.20.30.255     link#1             UHLW        1     2421 example.com      link#1             UC          0        0 host1            0:e0:a8:37:8:1e    UHLW        3     4601       lo0 host2            0:e0:a8:37:8:1e    UHLW        0        5       lo0 =&#62; host2.example.com link#1             UC          0        0 224              link#1             UC          0        0</pre><p>头两行指定默认路由(我们会在<ahref="network-routing.html#NETWORK-ROUTING-DEFAULT">下一节</a>说明) 和 <ttclass="HOSTID">本地(localhost)</tt>路由。</p><p>这张路由表里指定用于<var class="LITERAL">localhost</var>的接口(<varclass="LITERAL">Netif</var> 列)是<ttclass="DEVICENAME">lo0</tt>,也就是众所周知的“回环设备(loopbackdevice)”。这就使得所有以此为“目的地”的通信留在了内部,而不是通过LAN发送出去,因为它会在开始的地方就结束返回。</p><p>接着出现的是以<ttclass="HOSTID">0:e0:</tt>开头的地址。这些是以太网硬件地址,也称为MAC地址。FreeBSD会自动识别在同一个以太网中的任何主机(如<ttclass="HOSTID">test0</tt>),并为这个主机新增一个路由,以并通过那个以太网接口——<ttclass="DEVICENAME">ed0</tt>直接到达它(译者注:那台主机)。与这类路由表相关的也有一个超时项(<var class="LITERAL">Expire</var>列),当我们在指定时间内没有收到从那个主机发来的信息,这项就派上用场了。这种情况下,到这个主机的路由就会被自动删除。这些主机被使用一种叫做RIP(路由信息协议--RoutingInformation Protocol)的机制所识别,这种机制利用基于“最短路径选择(shortest pathdetermination)”的办法计算出到本地主机的路由。</p><p>FreeBSD也会为本地子网添加子网路由(<tt class="HOSTID">10.20.30.255</tt>是子网<ttclass="HOSTID">10.20.30</tt>的广播地址,而<ttclass="HOSTID">example.com</tt>是这个子网相联的域名)。名称<varclass="LITERAL">link#1</var>代表主机上的第一块以太网卡。你会发现,对于它们没有指定另外的接口。</p><p>这两个组(本地网络主机和本地子网)的路由是由守护进程<bclass="APPLICATION">routed</b>自动配置的。如果它没有运行,那就只有被静态定义(例如,明确输入的)的路由才存在了。</p><p><varclass="LITERAL">host1</var>行代表我们的主机,它通过以太网地址来识别。因为我们是发送端,FreeBSD知道使用回还接口(<ttclass="DEVICENAME">lo0</tt>)而不是通过以太网接口来进行发送。</p><p>两个<var class="LITERAL">host2</var>是我们使用<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">ifconfig</span>(8)</span>别名(请看关于以太网的那部分就会知道我们为什么这么做)时产生的一个实例。在<tt class="DEVICENAME">lo0</tt>接口之后的<varclass="LITERAL">=&#62;</var>符号表明我们不仅使用了回环(因为这个地址也涉及了本地主机),而且明确指出它是个别名。这类路由只有在支持别名的主机上才能显现出来。所有本地网上的其它的主机对于这类路由只会简单拥有<var class="LITERAL">link#1</var>。</p><p>最后一行(目标子网<ttclass="HOSTID">224</tt>)用于处理多播——它会覆盖到其它的区域。</p><p>最后,每个路由的不同属性可以在<varclass="LITERAL">Flags</var>列中看到。下边是个关于这些标志和它们的含义的一个简表:</p><div class="INFORMALTABLE"><a id="AEN35413" name="AEN35413"></a><table border="0" frame="void" class="CALSTABLE"><col width="1*" /><col width="4*" /><tbody><tr><td>U</td><td>Up: 路由处于活动状态。</td></tr><tr><td>H</td><td>Host: 路由目标是单个主机。</td></tr><tr><td>G</td><td>Gateway: 所有发到目的地的网络传到这一远程系统上,并由它决定最后发到哪里。</td></tr><tr><td>S</td><td>Static: 这个路由是手工配置的,不是由系统自动生成的。</td></tr><tr><td>C</td><td>Clone:生成一个新的路由,通过这个路由我们可以连接上这些机子。这种类型的路由通常用于本地网络。</td></tr><tr><td>W</td><td>WasCloned: 指明一个路由——它是基于本地区域网络(克隆)路由自动配置的。</td></tr><tr><td>L</td><td>Link: 路由涉及到了以太网硬件。</td></tr></tbody></table></div></div><div class="SECT2"><h2 class="SECT2"><a id="NETWORK-ROUTING-DEFAULT" name="NETWORK-ROUTING-DEFAULT">24.2.2.默认路由</a></h2><p>当本地系统需要与远程主机建立连接时,它会检查路由表以决定是否有已知的路径存在。如果远程主机属于一个我们已知如何到达(克隆的路由)的子网内,那么系统会检查看沿着那个接口是否能够连接。</p><p>如果所有已知路径都失败,系统还有最后一个选择:``默认''路由。这个路由是特殊类型的网关路由(通常只有一个存在于系统里),并且总是在标志栏使用一个<var class="LITERAL">c</var>来进行标识。对于本地区域网络里的主机,这个网关被设置到任何与外界有直接连接的机子里(无论是通过PPP连接,DSL,cablemodem,T1或其它的网络接口)。</p><p>如果你正为某台本身就做为网关连接外界的机子配置默认路由的话,那么该默认路由应该是你的“互联网服务商(ISP)”那方的网关机子。</p><p>让我们来看一个关于默认路由的例子。这是个很普遍的配置:</p><p><img src="advanced-networking/net-routing.png" /></p><p>主机<tt class="HOSTID">Local1</tt>和<tt class="HOSTID">Local2</tt> 在你那边。 <ttclass="HOSTID">Local1</tt>通过PPP拨号连接到了ISP。这个PPP服务器通过一个局域网连接到另一台网关机子——它又通过一个外部接口连接到ISP提供的互联网上。</p><p>你的每一台机子的默认路由应该是:</p><div class="INFORMALTABLE"><a id="AEN35459" name="AEN35459"></a><table border="0" frame="void" class="CALSTABLE"><col /><col /><col /><thead><tr><th>Host</th><th>Default Gateway</th><th>Interface</th></tr></thead><tbody><tr><td>Local2</td><td>Local1</td><td>Ethernet</td></tr><tr><td>Local1</td><td>T1-GW</td><td>PPP</td></tr></tbody></table></div><p>一个常见的问题是``我们为什么(或怎样)能<tt class="HOSTID">T1-GW</tt> 设置成为<ttclass="HOSTID">Local1</tt>默认网关,而不是它所连接ISP服务器?''</p><p>记住,因为PPP接口使用的一个地址是在ISP的局域网里的,用于你那边的连接,对于ISP的局域网里的其它机子,其路由会自动产生。因此,你就已经知道了如何到达机子<ttclass="HOSTID">T1-GW</tt>,那么也就没必要中那一步了——发送通信给ISP服务器。</p><p>通常使用地址<ttclass="HOSTID">X.X.X.1</tt>做为一个局域网的网关。因此(使用相同的例子),如果你本地的C类地址空间是<tt class="HOSTID">10.20.30</tt>,而你的ISP使用的是<ttclass="HOSTID">10.9.9</tt>,那么默认路由表将是:</p><div class="INFORMALTABLE"><a id="AEN35485" name="AEN35485"></a><table border="0" frame="void" class="CALSTABLE"><col /><col /><thead><tr><th>Host</th><th>Default Route</th></tr></thead><tbody><tr><td>Local2 (10.20.30.2)</td><td>Local1 (10.20.30.1)</td></tr><tr><td>Local1 (10.20.30.1, 10.9.9.30)</td><td>T1-GW (10.9.9.1)</td></tr></tbody></table></div>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -