route - 显示/操作 IP 路由表
概要
route [-CFvnNee] [-A family |-4|-6]
route [-v] [-A family |-4|-6] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M]
[window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If]
route [-v] [-A family |-4|-6] del [-net|-host] target [gw Gw] [netmask Nm] [metric M] [[dev] If]
route [-V] [--version] [-h] [--help]
描述
Route 操作内核的 IP 路由表。它的主要用途是在使用 ifconfig(8) 程序对其进行配置后,设置到特定主机或网络的静态路由。
当使用 add 或 del 选项时,route 会修改路由表。如果没有这些选项,route 将显示路由表的当前内容。
选项
-A family
使用指定的地址族(例如 `inet`)。使用 route --help 获取完整列表。您可以使用 -6 作为 --inet6 的别名,-4 作为 -A inet 的别名。
-F 操作内核的 FIB(转发信息库)路由表。这是默认设置。
-C 操作内核的路由缓存。
-v 选择详细操作。
-n 显示数值地址,而不是尝试确定符号主机名。如果您尝试确定为什么到您的名称服务器的路由消失了,这将很有用。
-e 使用 [netstat]({filename}../../netstat)(8) 格式显示路由表。-ee 将生成一个非常长的行,其中包含路由表中的所有参数。
del 删除路由。
add 添加新路由。
target 目标网络或主机。您可以提供地址或符号网络或主机名。您可以选择使用 /prefixlen 符号而不是使用 netmask 选项。
-net 目标是一个网络。
-host 目标是一个主机。
netmask NM
添加网络路由时,要使用的网络掩码。
gw GW 通过网关路由数据包。
注意:指定的网关必须首先是可访问的。这意味着您必须首先设置到网关的静态路由。如果您指定本地接口之一的地址,它将用于确定将数据包路由到哪个接口。这是一个 BSD 兼容性技巧。
metric M
将路由表中的度量字段(由路由守护程序使用)设置为 M。如果未指定此选项,则 inet6(IPv6)地址族的度量值默认为“1”,对于 inet(IPv4),则默认为“0”。您应该始终指定显式的度量值,不要依赖于这些默认值——它们也与 iproute2 不同。
mss M 将路由的 MTU(最大传输单元)设置为 M 字节。请注意,route 命令的当前实现不允许设置最大分段大小(MSS)。
window W
为该路由上的连接设置 TCP 窗口大小为 W 字节。这通常仅用于 AX.25 网络以及无法处理连续帧的驱动程序。
irtt I
为该路由上的 TCP 连接设置初始往返时间 (irtt) 为 I 毫秒(1-12000)。这通常仅用于 AX.25 网络。如果省略,则使用 RFC 1122 默认值 300 毫秒。
reject
安装一个阻止路由,这将强制路由查找失败。例如,这用于在可以使用默认路由之前屏蔽网络。这不是用于防火墙。
mod, dyn, reinstate
安装一个动态或修改的路由。这些标志用于诊断目的,通常仅由路由守护程序设置。
dev If
强制将路由与指定的设备关联,否则内核将尝试自行确定设备(通过检查现有的路由和设备规范,以及添加路由的位置)。在大多数正常网络中,你不需要这样做。
如果 dev If 是命令行中的最后一个选项,则可以省略单词 dev,因为它是默认值。否则,路由修改器(度量、子网掩码、网关、设备)的顺序无关紧要。
示例
route add -net 127.0.0.0 netmask 255.0.0.0 metric 1024 dev lo
添加正常的环回条目,使用子网掩码 255.0.0.0 并与设备“lo”关联(假设该设备已使用 [ifconfig]({filename}../../ifconfig)(8) 正确设置)。
route add -net 192.56.76.0 netmask 255.255.255.0 metric 1024 dev eth0
添加一条到本地网络 192.56.76.x 通过“eth0”的路由。这里可以省略单词“dev”。
route del default
删除当前的默认路由,该路由在当前路由表的“default”或 0.0.0.0 目标字段中标记。
route del -net 192.56.76.0 netmask 255.255.255.0
删除路由。由于 Linux 路由内核使用无类别寻址,因此你几乎总是需要指定与“route -n”列表中显示的相同的子网掩码。
route add default gw mango
添加默认路由(如果其他路由不匹配,则使用该路由)。所有使用此路由的数据包都将通过名为“mango”的节点的地址进行网关传输。实际用于该路由的设备取决于我们如何到达“mango”——“mango”必须位于可以直接访问的路由上。
route add mango sl0
添加一条通过 SLIP 接口(假设“mango”是 SLIP 主机)到达主机“mango”的路由。
route add -net 192.57.66.0 netmask 255.255.255.0 gw mango
此命令将网络“192.57.66.x”添加到通过前述 SLIP 接口路由的路由中。
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
这是一个晦涩的命令,记录在这里是为了让人们知道如何执行它。这将所有 Class D(多播)IP 路由都设置为通过“eth0”进行路由。这是带有多播内核的正确正常配置行。
route add -net 10.0.0.0 netmask 255.0.0.0 metric 1024 reject
这会安装一个拒绝路由,用于私有网络“10.x.x.x”。
route -6 add 2001:0002::/48 metric 1 dev eth0
这会添加一个 IPv6 路由,并指定度量值,使其可以通过 eth0 直接访问。
输出
内核路由表的输出按以下列组织:
目标地址 目标网络或目标主机。
网关 网关地址或“*”,如果未设置。
Genmask 目标网络的网络掩码;对于主机目标地址,为“255.255.255.255”,对于默认路由,为“0.0.0.0”。
标志 可能的标志包括: U(路由已启用) H(目标为主机) G(使用网关) R(重新激活动态路由) D(由守护程序或重定向动态安装) M(由路由守护程序或重定向修改) A(由地址配置安装) C(缓存条目) !(拒绝路由)
度量值 到达目标的“距离”(通常以跳数为单位)。
引用计数 指向此路由的引用数。(在 Linux 内核中未使用。)
使用计数 路由查找的次数。根据 -F 和 -C 的使用,这将是路由缓存未命中 (-F) 或命中 (-C)。
接口 将发送到此路由的数据包所使用的接口。
MSS 通过此路由进行 TCP 连接的默认最大段大小。
窗口 通过此路由进行 TCP 连接的默认窗口大小。
irtt 初始 RTT(往返时间)。内核使用此值来推断最佳 TCP 协议参数,而无需等待(可能较慢的)响应。
HH(仅缓存) 引用此路由硬件标头缓存的 ARP 条目和缓存路由的数量。如果缓存路由的接口不需要硬件地址(例如,lo),则此值为 -1。
Arp(仅缓存) 缓存路由的硬件地址是否是最新的。
文件
/proc/net/ipv6_route
/proc/net/route
/proc/net/rt_cache
参见
ethers(5), arp(8), rarp(8), route(8), ifconfig(8), netstat(8)
历史
Linux 的路由最初由 Fred N. van Kempen 编写,<_>,然后由 Johannes Stille 和 Linus Torvalds 为 pl15 修改。Alan Cox 为 Linux 1.1.22 添加了 mss 和窗口选项。irtt 支持并与 Bernd Eckenfels 的 netstat 合并。
作者
目前由 Phil Blundell <_> 和 Bernd Eckenfels <_> 维护。