在Linux系统管理员日常工作里头,配置以及管理等网络路由属于核心技能当中的一项,route add命令作为手动去添加静态路由条目的基础工具,它能够让你极其精准地把控数据包的去向,特别是在复杂网络或者多宿主主机环境下,掌握该用法是解决网络可达性问题的关键所在。
执行“route add”命令时,其基本语法呈现为,“route add -net 网络地址 netmask 子网掩码 gw 网关地址 dev 网络接口”这般形式,这种情况下,你必须要明确指定目标网络,以及子网掩码红帽linux系统下载,还有下一跳网关,以及出口设备 。臂如,倘若要把发往192.168.2.0/24这个网络的数据包,借助网关192.168.1.1经由eth0接口发送出去linux route add命令,那么其命令便是 route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0 。

除了去添加网络路由之外 ,你还能够去添加主机路由以及默认路由 。添加主机路由的时候要使用 -host参数 ,举例来说 ,route add -host 10.0.0.5 gw 192.168.1.254 。而添加用于默认网关的这条命令是那个 route add default gw 192.168.1.1 ,这样子和那个 route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.1 是等价的,它对并决定了所有并非直连流量的出口 。
route add命令的常见参数有哪些
设定路由条目的行为,由route add的几个关键参数所决定,-net以及-host,用于区分目标究竟是一个网络,还是一台特定主机linux 软件,gw参数明确指定下一跳网关的IP地址,此为数据包要发往的下一个路由节点,dev参数则清晰指明从哪个物理或虚拟网络接口发出。

还有一个关键参数是metric,也就是度量值,它对路由先后顺序予以界定,数值越小则先后顺序越在前,当有好多条路径都通向同一个目标时,系统会优先挑选metric值小的路由,指令像 route add -net 10.1.0.0/16 gw 192.168.1.1 metric 100 。除此以外,用于指定地址族的是 -A 参数,像是 inet (IPv4)这种情况,或者 inet6 (IPv6)这种情况。
如何用route add命令添加永久静态路由
通过route add命令所添加的路由为临时性质的,一旦系统重启便会失去效用。要是想要使其永久有效,那就一定要把路由配置写入到系统启动脚本或者网络配置文件之中。系统若是RHEL/CentOS 7+,且使用NetworkManager以及Network-Scripts,那么,你能够在/etc/sysconfig/network-scripts/这个目录里,为特定的接口(就像eth0),去创建名为 route-eth0的文件句号。

你能够于该文件里头,依照“目标网络/掩码 via 网关 dev 接口”这般的格式去写入路由。举例而言,写入一行 192.168.100.0/24 via 10.0.0.1 dev eth0。在保存之后,重启网络服务或者主机,此路由便会自动加载。在Ubuntu或者Debian系统当中,一般会把永久路由条目写入,/etc/network/interfaces这个文件里,对应接口配置的,up route add...这条语句之中。
route add命令和ip route add命令有什么区别
属于传统的“net -- tools”工具集的是“route add” ,作为现代“iproute2”工具包一部分的则是“ip route add” 。 “iproute2”功能更为强大且更具统一性 ,是当前Linux发行版所推荐的工具 。语法方面,ip route add要更为简洁些,比如,添加相同网络路由的命令是这样的,ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0。
除了存在着语法方面给出的不同差异之外,iproute2具备着支持更多给出高级功能的情况,像是多路径在进行路由这一行为的时候linux route add命令,还有策略路由以及更具灵活性的路由表管理。对于刚刚开始接触Linux网络管理的朋友而言,给出的建议是直接从ip route命令着手开始学习。而是在维护一些比较老旧的系统或者阅读遗留脚本时,理解这里的route命令仍然是绝对不可以缺少的。

route add命令执行失败如何排查
在执行route add出现失败状况时,首先得去检查命令语法是不是正确这般情形,特别要留意网络地址、掩码、网关IP的格式情况。而后,运用 ip addr show 或者 ifconfig 来确认指定的出口网络接口(dev)是不是存在且状态为UP的状况。随后,运用 ping 去检测你所指定的网关地址能不能够达到,鉴于网关务必和你的主机处于同一个局域网段之中。
又一个常见失误是“Network is unreachable”,这一般表示系统寻觅不到去往指定网关或者目标网络的路由,你务必先保证主机跟网关之间的链路是畅通的,另外,还得核查是否存在路由冲突,运用 route -n 或者 ip route show 去查看现有的路由表,确认你打算添加的路由条目不存在重复。
route add命令在实际网络中有哪些应用场景

一种典型的情形是处于多网卡服务器当中,达成访问特定服务时走特定线路,举例来说,服务器的eth0连接着内网(192.168.1.0/24),而eth1连接着公网。针对合作伙伴特定IP段。也就是203.0.113.0/24这个区域内。凡是来访流量。全部经由eth1的网关1.2.3.1予以输出。你能够添加一条路由。其命令是 route add -net 203.0.113.0 netmask 255.255.255.0 gw 1.2.3.1 dev eth1 。
通过虚拟专用网络连接达成后,还是得借助route add来实施分流。在构建点到站点虚拟专用网络完毕后,默认状况下所有流量兴许都会经由虚拟专用网络隧道。为求仅仅让去往对方私网(像10.8.0.0/16)的流量通过虚拟专用网络,而使访问互联网的流量走本地默认网关,那就得增添一条指向虚拟专用网络网关的、目标是10.8.0.0/16的明细路由,进而精准把控流量路径,确保网络效率以及安全。
于实际的网络运维里头,你究竟是更偏向去运用传统的route命令,还是选择功能更为强大的ip route命令用以管理路由表?欢迎在评论区域分享你的选择以及理由,要是觉着本文对你存有帮助的话,请点赞并且分享给更多有需要的朋友。
