Have a Question?

如果您有任务问题都可以在下方输入,以寻找您想要的最佳答案

route命令详解与使用实例,route命令的语法与参数详解

route命令详解与使用实例

题图来自Unsplash,基于CC0协议

导读

  • route命令的语法与参数详解
  • route命令添加静态路由实例
  • route命令删除路由条目方法
  • route命令显示路由表信息示例
  • route命令在Windows和Linux中的区别
  • route命令与ip route命令的对比
  • route命令常见错误及解决方法
  • 在计算机网络管理中,route命令是网络管理员和系统工程师日常工作中最基础、最必要的工具之一,主要用于管理IP路由表,实现网络通信优化和故障排查。以下将从多个方面深入解析route命令的语法、参数及其使用实例。

    如需快速分类查阅,可点击相应标题:

    [ 跳转目录 ]

    一、route命令的基本语法与参数详解

    route命令的基础语法格式一般是:

    route [ -f | -p ] [ add | del | change ] <目标网络> <子网掩码> <网关> [<度量值>]

    或适用于查看路由表:

    route print [<主机名/IP地址>]

    -f 参数:强制清除路由表

    该参数在Windows系统中最为常用,当命令行输入route -f时,会清除系统中当前所有的动态路由和静态路由,只剩下网卡配置的直连路由和默认路由。通常用于解决问题如环路,或作为添加复杂路由前的“归零”操作。

    -p 参数:添加永久路由

    在占位符[目标网络]前添加-p参数,意味着此路由条目将被保存到注册表中,在系统重启后依然存在(Windows);在Linux系统中,虽然此处同样有效,但通常永久路由依赖如/etc/rc.local或service脚本等脚本执行方式实现。

    二、route命令添加静态路由实例

    添加静态路由是route命令最常见的用途之一,其作用是指导系统通过一个指定的网关访问某个目标网络,这意味着数据包必须按照管理员设定的路径转发。

    在Windows中添加一条静态路由:

    route add 192.168.5.0 mask 255.255.255.0 192.168.1.1
    • 上述命令表示,所有目标IP为192.168.5.x(掩码为255.255.255.0)的数据包,将通过网关192.168.1.1进行转发。

    若要永久保存,还需添加-p参数:

    route -p add 192.168.5.0 mask 255.255.255.0 192.168.1.1

    Linux环境添加静态路由示例(使用iproute2系列命令):

    虽然Linux更推荐使用ip route来管理路由,但route命令依旧通用:

    sudo route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.1.1

    通过sudo获得root权限,该命令将添加一条访问192.168.5.0子网的路由,需经由192.168.1.1网关。

    三、route命令删除路由条目方法

    在Windows中使用route删除静态路由的语法为:

    route delete [目标网络] [-if <指定接口>] 

    但是!请注意:

    route delete后面跟的是【目标网络】,并且参数顺序须严格按照192.168.5.0、255.255.255.0的顺序,且必须在目标网络完全匹配的情况下删除

    route delete 192.168.5.0

    如果你尝试删除的路由不是完全匹配,例如试图删除192.168.5.0掩码255.255.255.0,而实际路由表中恰好显示为192.168.5.0掩码10.0.0.0,这时需要特别注意目标标识与掩码是否完全一致。若不小心,可能删除的是另一段网络范围内的路由条目。

    Linux中删除静态路由

    在Linux中,若使用旧style的route命令:

    sudo route del -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.1.1

    然而,更加常见的是使用新式iproute2工具:

    sudo ip route del 192.168.5.0/24 via 192.168.1.1

    四、route命令显示路由表信息示例

    当只输入“route”没有参数时,Windows默认显示【当前活跃路由表】,提供IP地址、掩码、网关、接口等信息。

    然而,远不止于此的是,通过route print命令可以深度查看路由表内容,甚至关联到每一跳的接口适配器详情、MAC地址、跃点数等。这是诊断网络层连接问题的重要手段:

    route print

    输出示例中通常包含更详细的信息,其中系统重启后动态生成的路由,与管理员手动加入的静态路由可以通过接口、跃点数和距离默认网关的远近加以区分。

    五、route命令在Windows和Linux中的区别

    尽管route命令在Windows和Linux中接口相似,但也存在明显的差异:

    • Windows:默认使用旧的route.exe(通常名为cmd.exe的经典API接口),更适应易用性高的语法和使用习惯,更常见-f(清空路由表)、-p(永久路由)等参数。
    • Linux:推荐使用iproute2套件下的ip routeip route show,如route命令也存在于系统中,但其行为与netstat -r结合使用时需一定理解;在新系统中,route命令已逐渐被ip命令所取代。

    如:Windows显示路由表:

    route print

    而Linux显示路由表通常是:

    ip route show

    则更为高效和标准。

    六、route命令与ip route命令的对比

    随着Linux系统不断升级,ip命令因其功能强大、模块化设计而成为新一代优秀工具替代旧式route。在Linux上使用route时,表示使用的是旧式二进制文件,有可能已经过时。

    方面 route命令 (示例) ip route命令 (示例)
    显示路由表 route -nroute print ip route showip -s route show
    添加路由 sudo route add ... sudo ip route add ...
    删除路由 sudo route del ... sudo ip route del ...
    指定接口 支持 /dev接口名 固定接口 ip route 语法更直观,可与接口关联

    举例:添加一条到192.168.1.0掩码24,经由接口eth0的路由在Linux上:

    route命令:

    sudo route add -host 192.168.1.0 gw 192.168.1.254 if  eth0

    ip route命令:

    sudo ip route add 192.168.1.0/24 via 192.168.1.254 dev eth0

    IPOution Lab建议:在新Linux系统上使用ip命令更为高效、明确,在脚本中编写兼容iproute2分类和新增的管理选项。

    七、route命令常见错误及解决方法

    错误1:忽略网关参数导致”网络不可达“错误。

    • 添加路由时忘记指定网关,或者指定的网关不可达,Routing Table没有该网关,会导致连接建立失败。

    例如错误命令:

    route add 10.20.30.0/24

    正确做法:

    route add 10.20.30.0/24 gw 192.168.1.1  # Windows
    sudo route add -net 10.20.30.0 netmask 255.255.255.0 gw 192.168.1.1  # Linux

    若网关不可达,应先确保网关自身的可达性。

    错误2:使用route delete语句时删除错误的路由。

    误操作删除并非系统管理员刚刚添加的路由可能引致问题。对比目标IP及掩码是明智操作。

    错误3:忘记sudo而执行删除或添加路由导致失败。

    Linux下需要root权限执行添加/删除路由操作,忘了输入sudo会导致权限不足(Permission Denined)报错。

    错误4:网络出现环路导致系统路由表损坏。

    静态路由配置错误,形成路由循环,可能造成路由表膨胀,甚至拒绝指示。如:A->B->C->A,反复添加路由时,可能会占用路由表,加重流量路径。

    错误5:拼写错误

    常见于Windows中的Delete参数通常简化为-d: 例如,不人尽皆知的是,route delete在Windows中命令是正确的,但有些用户误写为route del,部分系统会报错。

    总结:

    route命令作为传统管理网络的关键工具,在经历历史演化中维持了其重要性。不论是静态路由的配置与清除,还是路由表的显示与分析,route都能发挥基础作用。但随着新技术的出现,在现代操作系统尤其是Linux中,我们应当认识到更先进、更灵活的ip route命令更适合未来系统管理。对于静态路由,仍需谨慎操作,注意参数和权限正确性,以避免产生不必要的网络故障。

    © 版权声明

    本文由盾科技原创,版权归 盾科技所有,未经允许禁止任何形式的转载。转载请联系candieraddenipc92@gmail.com