路由表

时间:2020-01-09 10:44:10  来源:igfitidea点击:

问题描述:什么是路由表?
您能解释一下它在Linux/UNIX操作系统下的用法吗?

解决方法:几乎所有连接到Internet的计算机和网络设备都使用路由表来计算数据包的下一跳。
它是存储在路由器或者联网计算机中的电子表。
路由表存储到特定网络目标的路由(在某些情况下,还包括与那些路由关联的度量)。
此信息包含紧邻它的网络拓扑。
路由表的构建是路由协议和静态路由的主要目标。

每个Linux/UNIX/Windows或者任何使用TCP/IP的计算机都需要做出路由决策。
路由表用于控制这些决策。
要显示路由表,请在UNIX/Linux Shell提示符下执行以下命令:

$ netstat -r -n

或者

$ route -n

输出示例:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 ra0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 ra0

如果您使用的是Windows Server,请在命令提示符下执行以下内容:

c:> route print

标志G表示通过网关路由数据包的路径。
如果您想从计算机访问yahoo.com,则需要通过192.168.1.1网关。
这通常意味着您必须事先设置到网关的静态路由。
如果您指定本地接口之一的地址,它将用于确定数据包应路由到的接口。
路由守护程序使用的度量标准字段。
在大型LAN和WAN设置中,这是必需的。
内核路由表的输出在以下各列中进行组织:

  • 目标:目标网络或者目标主机。
  • 网关:网关地址;如果没有设置,则为*。
  • Genmask:目标网络的网络掩码;主机目标为255.255.255.255,默认路由为0.0.0.0。
  • 标记:可能的标记包括
  • U(路线已启动)
  • H(目标是主机)
  • G(使用网关)
  • R(用于动态路由的恢复路由)
  • D(由守护程序动态安装或者重定向)
  • M(从路由守护程序修改或者重定向)
  • A(由addrconf安装)
  • C(缓存条目)
  • ! (拒绝路线)
  • "指标":到目标的距离(通常以跃点计)。最近的内核没有使用它,但是路由守护程序可能需要它。
  • Ref:此路线的参考编号。 (在Linux内核中未使用。)
  • Use:路由查找数。根据-F和-C的使用,这将是路由缓存未命中(-F)或者命中(-C)。
  • Iface:此路由的数据包将被发送到的接口。
  • MSS:此路由上TCP连接的默认最大段大小。
  • 窗口:此路由上TCP连接的默认窗口大小。
  • irtt:初始RTT(往返时间)。内核使用它来猜测最佳的TCP协议参数,而无需等待(可能很慢)答案。
  • HH(仅高速缓存):ARP条目和高速缓存路由的数量,这些条目引用高速缓存路由的硬件标头高速缓存。如果缓存的路由的接口(例如lo)不需要硬件地址,则该值为-1。
  • Arp(仅高速缓存):高速缓存路由的硬件地址是否是最新的。

路由表是根据Linux/UNIX计算机的当前TCP/IP配置自动创建的。
您可以使用route和ip命令手动添加/修改/编辑路由表。
路由表中条目的类型:

  • "网络路由":到互联网络中特定网络ID的路由(路径)。
  • "主机路由":到特定网络地址(网络ID和主机ID)的路由。主机路由允许为每个网络地址做出智能路由决策。主机路由用于创建自定义路由,以控制或者优化特定类型的网络流量。
  • "默认路由":当在路由表中找不到目标的其他路由时使用的路由。如果路由器或者终端系统(例如运行Microsoft Windows或者Linux的PC)找不到目标的路由,则使用默认路由。如果没有其他主机或者网络路由与目标地址匹配,则使用默认路由。请参阅下面的相关常见问题解答,以获取route和ip命令的更多示例。