﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-古之成大事者，不唯有超世之才，亦唯有坚韧不拔之志也！-文章分类-网络</title><link>http://www.blogjava.net/mlxlzc/category/38756.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 03 Apr 2009 01:40:02 GMT</lastBuildDate><pubDate>Fri, 03 Apr 2009 01:40:02 GMT</pubDate><ttl>60</ttl><item><title>主机路由表和静态路由</title><link>http://www.blogjava.net/mlxlzc/articles/263655.html</link><dc:creator>goto</dc:creator><author>goto</author><pubDate>Fri, 03 Apr 2009 00:52:00 GMT</pubDate><guid>http://www.blogjava.net/mlxlzc/articles/263655.html</guid><wfw:comment>http://www.blogjava.net/mlxlzc/comments/263655.html</wfw:comment><comments>http://www.blogjava.net/mlxlzc/articles/263655.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlxlzc/comments/commentRss/263655.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlxlzc/services/trackbacks/263655.html</trackback:ping><description><![CDATA[<h1><a name="路由表和静态路由" id="路由表和静态路由">路由表和静态路由</a></h1>
<div>
<div left="" round="" style="width: 60%;">
<div>
<p>内容提要</p>
<div>
<ol>
    <li>
    <div> 查看 Linux 内核路由表</div>
    </li>
    <li>
    <div> 使用 route 命令设置静态路由</div>
    </li>
    <li>
    <div> 设置包转发</div>
    </li>
</ol>
</div>
</div>
</div>
</div>
<h2><a name="linux_内核路由表" id="linux_内核路由表">Linux 内核路由表</a></h2>
<h3><a name="查看_linux_内核路由表" id="查看_linux_内核路由表">查看 Linux 内核路由表</a></h3>
<div>
<p>
使用下面的 route 命令可以查看 Linux 内核路由表。
</p>
<pre># route</pre>
<pre>Destination     Gateway         Genmask         Flags Metric Ref    Use Iface<br />
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0<br />
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0<br />
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth0</pre>
<p>
route 命令的输出项说明
</p>
<table>
    <tbody>
        <tr>
            <th centeralign="">  输出项  </th><th centeralign="">  说明  </th>
        </tr>
        <tr>
            <td> Destination </td>
            <td> 目标网段或者主机 </td>
        </tr>
        <tr>
            <td> Gateway </td>
            <td> 网关地址，&#8221;*&#8221; 表示目标是本主机所属的网络，不需要路由 </td>
        </tr>
        <tr>
            <td> Genmask </td>
            <td> 网络掩码 </td>
        </tr>
        <tr>
            <td> Flags </td>
            <td> 标记。一些可能的标记如下： </td>
        </tr>
        <tr>
            <td> <br />
            </td>
            <td> U — 路由是活动的 </td>
        </tr>
        <tr>
            <td> <br />
            </td>
            <td> H — 目标是一个主机 </td>
        </tr>
        <tr>
            <td> <br />
            </td>
            <td> G — 路由指向网关 </td>
        </tr>
        <tr>
            <td> <br />
            </td>
            <td> R — 恢复动态路由产生的表项 </td>
        </tr>
        <tr>
            <td> <br />
            </td>
            <td> D — 由路由的后台程序动态地安装 </td>
        </tr>
        <tr>
            <td> <br />
            </td>
            <td> M — 由路由的后台程序修改 </td>
        </tr>
        <tr>
            <td> <br />
            </td>
            <td> ! — 拒绝路由 </td>
        </tr>
        <tr>
            <td> Metric </td>
            <td> 路由距离，到达指定网络所需的中转数（linux 内核中没有使用） </td>
        </tr>
        <tr>
            <td> Ref </td>
            <td> 路由项引用次数（linux 内核中没有使用） </td>
        </tr>
        <tr>
            <td> Use </td>
            <td> 此路由项被路由软件查找的次数 </td>
        </tr>
        <tr>
            <td> Iface </td>
            <td> 该路由表项对应的输出接口 </td>
        </tr>
    </tbody>
</table>
</div>
<h3><a name="种路由类型" id="种路由类型">3 种路由类型</a></h3>
<h4><a name="主机路由" id="主机路由">主机路由</a></h4>
<div>
<p>
主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。例如，在下面的示例中，本地主机通过IP地址192.168.1.1的路由器到达IP地址为10.0.0.10的主机。
</p>
<pre>Destination    Gateway       Genmask        Flags     Metric    Ref    Use    Iface<br />
-----------    -------     -------            -----     ------    ---    ---    -----<br />
10.0.0.10     192.168.1.1    255.255.255.255   UH       0    0      0    eth0</pre>
</div>
<h4><a name="网络路由" id="网络路由">网络路由</a></h4>
<div>
<p>
网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。例如，在下面的示例中，本地主机将发送到网络192.19.12的数据包转发到IP地址为192.168.1.1的路由器。
</p>
<pre>Destination    Gateway       Genmask      Flags    Metric    Ref     Use    Iface<br />
-----------    -------     -------         -----    -----   ---    ---    -----<br />
192.19.12     192.168.1.1    255.255.255.0      UN      0       0     0    eth0</pre>
</div>
<h4><a name="默认路由" id="默认路由">默认路由</a></h4>
<div>
<p>
当主机不能在路由表中查找到目标主机的IP地址或网络路由时，数据包就被发送到默认路由（默认网关）上。默认路由的Flags字段为G。例如，在下面的示例中，默认路由是IP地址为192.168.1.1的路由器。
</p>
<pre>Destination    Gateway       Genmask    Flags     Metric    Ref    Use    Iface<br />
-----------    -------     ------- -----      ------    ---    ---    -----<br />
default       192.168.1.1     0.0.0.0    UG       0        0     0    eth0</pre>
</div>
<h2><a name="配置静态路由" id="配置静态路由">配置静态路由</a></h2>
<h3><a name="route_命令" id="route_命令">route 命令</a></h3>
<div>
<p>
设置和查看路由表都可以用 route 命令，设置内核路由表的命令格式是：
</p>
<pre># route  [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]</pre>
<p>
其中：
</p>
<ul>
    <li>
    <div> add : 添加一条路由规则</div>
    </li>
    <li>
    <div> del : 删除一条路由规则</div>
    </li>
    <li>
    <div> -net : 目的地址是一个网络</div>
    </li>
    <li>
    <div> -host : 目的地址是一个主机</div>
    </li>
    <li>
    <div> target : 目的网络或主机</div>
    </li>
    <li>
    <div> netmask : 目的地址的网络掩码</div>
    </li>
    <li>
    <div> gw : 路由数据包通过的网关</div>
    </li>
    <li>
    <div> dev : 为路由指定的网络接口</div>
    </li>
</ul>
</div>
<h3><a name="route_命令使用举例" id="route_命令使用举例">route 命令使用举例</a></h3>
<div>
<p>
添加到主机的路由
</p>
<pre># route add -host 192.168.1.2 dev eth0:0<br />
# route add -host 10.20.30.148 gw 10.20.30.40</pre>
<p>
添加到网络的路由
</p>
<pre># route add -net 10.20.30.40 netmask 255.255.255.248 eth0<br />
# route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41<br />
# route add -net 192.168.1.0/24 eth1</pre>
<p>
添加默认路由
</p>
<pre># route add default gw 192.168.1.1</pre>
<p>
删除路由
</p>
<pre># route del -host 192.168.1.2 dev eth0:0<br />
# route del -host 10.20.30.148 gw 10.20.30.40<br />
# route del -net 10.20.30.40 netmask 255.255.255.248 eth0<br />
# route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41<br />
# route del -net 192.168.1.0/24 eth1<br />
# route del default gw 192.168.1.1</pre>
</div>
<h3><a name="设置包转发" id="设置包转发">设置包转发</a></h3>
<div>
<p>
在 CentOS 中默认的内核配置已经包含了路由功能，但默认并没有在系统启动时启用此功能。开启 Linux
的路由功能可以通过调整内核的网络参数来实现。要配置和调整内核参数可以使用 sysctl 命令。例如：要开启 Linux
内核的数据包转发功能可以使用如下的命令。
</p>
<pre># sysctl -w net.ipv4.ip_forward=1</pre>
<p>
这样设置之后，当前系统就能实现包转发，但下次启动计算机时将失效。为了使在下次启动计算机时仍然有效，需要将下面的行写入配置文件/etc/sysctl.conf。
</p>
<pre># vi /etc/sysctl.conf</pre>
<pre>net.ipv4.ip_forward = 1</pre>
<p>
用户还可以使用如下的命令查看当前系统是否支持包转发。
</p>
<pre># sysctl  net.ipv4.ip_forward</pre>
</div>
<img src ="http://www.blogjava.net/mlxlzc/aggbug/263655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlxlzc/" target="_blank">goto</a> 2009-04-03 08:52 <a href="http://www.blogjava.net/mlxlzc/articles/263655.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>