1.概述
路由表管理,用于操作内核路由表中的条目。
2.语法
ip [ ip-OPTIONS ] route { COMMAND | help }
ip route { list | flush } SELECTOR
ip route save SELECTOR
ip route restore
ip route get ADDRESS [ from ADDRESS iif STRING ] [ oif STRING ] [ tos TOS ]
ip route { add | del | change | append | replace } ROUTE
SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ] [ table TABLE_ID ] [ proto RTPROTO ] [ type TYPE ] [ scope SCOPE ]
ROUTE := NODE_SPEC [ INFO_SPEC ]
NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ] [ table TABLE_ID ] [ proto RTPROTO ] [ scope SCOPE ] [ metric METRIC ]
INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ] ...
NH := [ via [ FAMILY ] ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS
FAMILY := [ inet | inet6 | ipx | dnet | mpls | bridge | link ]
OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ] [ as [ to ] ADDRESS ] rtt TIME ] [ rttvar TIME ] [ reordering NUMBER ] [ window NUMBER ] [ cwnd NUMBER ] [
ssthresh REALM ] [ realms REALM ] [ rto_min TIME ] [ initcwnd NUMBER ] [ initrwnd NUMBER ] [ features FEATURES ] [ quickack BOOL ] [ congctl NAME ]
pref PREF ]
TYPE := [ unicast | local | broadcast | multicast | throw | unreachable | prohibit | blackhole | nat ]
TABLE_ID := [ local| main | default | all | NUMBER ]
SCOPE := [ host | link | global | NUMBER ]
NHFLAGS := [ onlink | pervasive ]
RTPROTO := [ kernel | boot | static | NUMBER ]
FEATURES := [ ecn | ]
PREF := [ low | medium | high ]
3.参数说明
路由类型:
类型 | 说明 |
---|---|
unicast | route条目描述到route前缀覆盖的目的地的实际路径。 |
unreachable | 这些目的地是不可到达的。丢弃数据包并生成不可到达的ICMP消息主机。本地发送者获得EHOSTUNREACH错误。 |
blackhole | 这些目的地是不可到达的。数据包被静默地丢弃。本地发送者得到一个EINVAL错误。 |
prohibit | 这些目的地是不可到达的。丢弃数据包,生成管理上禁止的ICMP消息通信。本地发送者得到EACCES错误。 |
local | 目的地被分配给此主机。数据包被循环返回并在本地交付。 |
broadcast | 目的地是广播地址。数据包以链路广播的形式发送。 |
throw | 与策略规则一起使用的特殊控制路由。如果选择了这样一个路由,则假装没有找到任何路由,终止此表中的查找。如果没有策略路由,则等同于路由表中没有路由。数据包被丢弃,并生成不可到达的ICMP消息网。本地发送者收到ENETUNREACH错误。 |
nat | 一个特殊的NAT路由。前缀覆盖的目的地被认为是哑(或外部)地址,在转发之前需要转换为真实(或内部)地址。通过属性via选择要转换的地址。警告:Linux 2.6不再支持路由NAT。 |
anycast | 未实现的目的地是分配给此主机的anycast地址。它们主要等同于本地地址,只有一个区别:当用作任何数据包的源地址时,这些地址是无效的。 |
multicast | 一种用于多播路由的特殊类型。它不存在于正常的路由表中。 |
路由表:Linux-2.x可以包路线分成几个路由表由数量范围从1到2 ^ 31或默认的名字从文件/etc/iproute2/rt_tables正常路线都插入到主表(ID 254)和内核只使用这个表在计算路线。值(0、253、254和255)保留为内置使用。实际上,另一个表始终存在,它是不可见的,但更重要。它是本地表(ID 255)。此表由本地地址和广播地址的路由组成。内核自动维护这个表,管理员通常不需要修改它,甚至不需要查看它。
当使用策略路由时,多个路由表将进入规则:
命令说明:
命令 | 说明 |
---|---|
ip route add | 添加新的路由 |
ip route change | 改变路由 |
ip route replace | 改变或者添加路由 |
ip route delete | ip route del与ip route add具有相同的参数 |
ip route show | 该命令显示路由表的内容或根据某些条件选择的路由 |
ip route flush | 此命令刷新按某些标准选择的路由 |
ip route get | 这个命令通过一条路径到达目的地,并打印内核看到的内容 |
参数说明:
参数 | 说明 |
---|---|
to TYPE PREFIX (default) | 路线的目的地前缀。如果省略类型,ip假设是单播类型。其他类型的值在上面列出。前缀是一个IP或IPv6地址,后面可选一个斜杠和前缀长度。如果没有前缀的长度,ip就假定是完整长度的主机路由。还有一个默认的特殊前缀——相当于IP 0/0或IPv6::/0。 |
tos TOS | tos值 |
dsfield TOS | 服务类型(TOS)键。这个密钥没有关联的掩码,最长的匹配可以理解为:首先,比较路由的TOS和数据包的TOS。如果它们不相等,那么包仍然可以匹配一个零TOS的路由。TOS要么是8位的十六进制数,要么是来自/etc/iproute2/rt_dsfield的标识符。 |
metric NUMBER | metric值 |
preference NUMBER | 路由的偏好值。数字是一个任意的32位数字。 |
table TABLEID | 要将此路由添加到的表。TABLEID可以是一个数字或字符串从文件/etc/iproute2/rt_tables。如果省略了这个参数,ip假设是主表,除了本地、广播和nat路由,这些路由在默认情况下被放入本地表。 |
dev NAME | 输出设备名称 |
via [ FAMILY ] ADDRESS | 下一个路由器的地址,在地址家族中。实际上,这个域取决于路径类型。对于普通的单播路由,它要么是真正的下一跳路由器,或者,如果它是安装在BSD兼容模式下的直接路由,它可以是接口的本地地址。对于NAT路由,它是已翻译的IP目的地块的第一个地址。 |
src ADDRESS | 发送到路由前缀覆盖的目的地时首选的源地址。 |
realm REALMID | 此路由分配到的领域。REALMID可以是一个数字或字符串从文件/etc/iproute2/rt_realms. |
mtu MTU | mtu值 |
mtu lock MTU | MTU沿着路径到达目的地。如果没有使用修饰符锁,内核可能会因为发现路径MTU而更新MTU。如果修改锁被使用,没有路径MTU发现将被尝试,所有的数据包将发送没有DF位在IPv4情况下或碎片到MTU为IPv6。 |
window NUMBER | TCP向这些目的地发送消息的最大窗口(以字节为单位)。它限制了TCP对等端允许发送给我们的最大数据爆发。 |
rtt TIME | 初始RTT(“往返时间”)估计。如果没有指定后缀,则单元是直接传递给路由代码的原始值,以保持与以前版本的兼容性。否则,如果后缀s, sec或secs用于指定秒,ms、msec或msecs用于指定毫秒。 |
rttvar TIME (2.3.15+ only) | 初始RTT方差估计。值的指定与上面的rtt相同。 |
rto_min TIME (2.6.23+ only) | 与此目的地通信时使用的最小TCP重传输超时。值的指定与上面的rtt相同。 |
nexthop NEXTHOP | 多路径路由的下一路径。 |
scope SCOPE_VAL | 路由前缀所涵盖的目的地的范围。SCOPE_VAL可以是来自文件/etc/iproute2/rt_scope .一个数字或字符串如果省略此参数,ip假设范围为所有网关单播路由的全局范围,范围链接为直接单播和广播路由,范围主机为本地路由。 |
protocol RTPROTO | 此路由的路由协议标识符。RTPROTO可以是来自文件/etc/iproute2/rt_protos的一个数字或字符串。如果没有给出路由协议ID, ip假设协议启动(即,它假设路由是由不了解他们正在做什么的人添加的)。一些协议值有固定的解释。 |
onlink | 假设nexthop直接连接到这个链接,即使它不匹配任何接口前缀。 |
pref PREF | IPv6路由首选项。PREF是一个字符串,指定RFC4191中为路由器发现消息定义的路由首选项。 |
温馨提示:
以上文章描述如有不清晰之处,欢迎在评论区评论,如有时间,会第一时间回复,谢谢!