路由表设置之route

注意:如果使用的操作系统为Centos8/RedHat8,route命令已经被ip route命令所取代,如果想要使用需要安装net-tools软件包

[root@master ~]# yum -y install net-tools

关于net-tools

net-tools软件包都提供了以下常用的网络管理命令:

  • ifconfig:显示和配置网络接口的信息
  • route:显示和配置系统的路由表,包括静态路由和默认路由
  • arp:显示和管理系统的ARP缓存,用于将IP地址映射到MAC地址
  • netstat:显示网络连接、路由表和网络接口统计信息
  • dnsdomainname:显示系统的DNS域名
  • hostname:显示或设置系统的主机名
  • nisdomainname:显示或设置系统的NIS域名[NIS(Network information Service)是一种在UNIX系统中集中管理用户、主机和其它网络配置信息的服务。它已经被更现代的LDAP、Active Directory等解决方案取代]

这些命令在过去被广泛使用,在新的Linux发行版中,已经被ip命令和其它工具所取代

三种类型路由类型

一、主机路由

主机路由时路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。例如在下面的示例中,本地主机通过IP地址192.168.224.2

[root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.10 192.168.224.2 255.255.255.255 UGH 0 0 0 ens160

二、网络路由

网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。例如,在下面的示例中,本地主机将发送到网络192.19.12.0/24的数据包转发到IP地址为192.168.224.2的路由器

[root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.19.12.0 192.168.224.2 255.255.255.0 UG 0 0 0 ens160

三、默认路由

当主机不能在路由表中查找目标主机的IP地址或网络路由时,数据包就被发送到默认路由(默认网关)上。默认路由Flags字段为G。例如,在下面的示例中,默认路由是IP地址为192.168.224.2的路由器。

[root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.224.2 0.0.0.0 UG 0 0 0 ens160


route命令使用举例

添加到主机的路由

同网段

[root@master ~]# route add -host 192.168.224.20 dev ens160 # 目标ip地址为192.168.224.20的数据包,通过默认路由,使用网络接口ens160来访问 [root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.224.2 0.0.0.0 255.255.255.255 UH 0 0 0 ens160

不同网段

[root@master ~]# route add -host 192.168.100.10 gw 192.168.224.2 dev ens160 # 目标ip地址为192.168.100.10的数据包,通过转发到ip为192.168.224.2的路由,使用网络接口ens160来访问 [root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.100.10 192.168.224.2 255.255.255.255 UGH 0 0 0 ens160

添加到网络的路由

添加到10.20.30.48的网络

路由表的生效顺序是从上到下的

[root@master ~]# route add -net 10.20.30.40 netmask 255.255.255.248 ens160 [root@master ~]# route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 [root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.20.30.40 0.0.0.0 255.255.255.248 U 0 0 0 ens160 10.20.30.48 10.20.30.41 255.255.255.248 UG 0 0 0 ens160

添加默认路由

[root@master ~]# route add default gw 192.168.224.2 [root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.224.2 0.0.0.0 UG 0 0 0 ens160

删除路由

# route del -host 192.168.1.2 dev eth0:0 # route del -host 10.20.30.148 gw 10.20.30.40 # route del -net 10.20.30.40 netmask 255.255.255.248 eth0 # route del net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 # route del -net 192.168.1.0/24 eth1 # route del default gw 192.168.1.1

route命令详解

route命令:

Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table)。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:

该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。

要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证路由设置永久有效

命令格式

route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]

  • Command 指定运行的命令 (add、chage、delete、print)
  • Destination 指定该路由的网络目标
  • mask Netmask 指定与网络目标相关的网络掩码
  • Gateway 指定网络目标定义的地址集合子网掩码可以到达前的下一跳ip地址
  • metric Metric 为路由指定一个整数成本值标(1~9999),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可使用
  • if Interface 为可以访问目标的接口指定接口索引。

命令功能

route命令是用于操作基于内核的ip路由表,它的主要作用是创建一个静态路由让指定一个主机或者一个网络通过一个网络接口,如eth0。当使用'add'或者'del'参数时。路由表被修改,如果没有参数,则显示路由表当前的内容

设置和查看路由表都可以用route命令,设置内核路由表的命令格式是:

route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

其中:

  • add:添加一条路由规则
  • del:删除一条路由规则
  • -net:目的地址是一个网络
  • -host:目的地址是一个主机
  • target:目的网络或主机
  • netmask:目的地址的网络掩码
  • gw:路由数据包通过的网关
  • dev:为路由指定的网络接口
  • metric:设置路由跳数

命令参数

选项

作用

-c

显示更多信息

-n

不解析名字

-v

显示详细的处理信息

-F

显示发送信息

-C

显示路由缓存

-f

清除所有网关入口的路由表

使用实例

显示当前路由

命令 route\route -n

注: route -n(-n 表示不解析名字,列出速度会比route块)

说明:结果是自上而下,哪条在上面,哪条就优先,前面都没有,就用最后一条default

[root@master ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default _gateway 0.0.0.0 UG 0 0 0 ens160 10.20.30.40 0.0.0.0 255.255.255.248 U 0 0 0 ens160 10.20.30.48 10.20.30.41 255.255.255.248 UG 0 0 0 ens160 192.168.224.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160

[root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.224.2 0.0.0.0 UG 0 0 0 ens160 10.20.30.40 0.0.0.0 255.255.255.248 U 0 0 0 ens160 10.20.30.48 10.20.30.41 255.255.255.248 UG 0 0 0 ens160 192.168.224.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160

route命令的输出项说明

Destination

目标网段或主机

Gateway

网关地址,"*"表示目标是本主机所属的网络,不需要路由

Genmask

网络掩码

Flags

标记,一些可能的标记如下:

U - up表示此路由当前为启动状态

H - 目标是一个主机

G - 路由指向网关

R - 使用动态路由重新初始化的路由

D - 次路由是动态性的写入

M - 此路由是由路由守护程序或导向器动态修改

!- 表示此路由当前为关闭状态

Metric

路由距离。到达指定网络所需要的中转数(Linux内核中没有使用)

Ref

路由项引用次数(Linux内核中没有使用)

Use

此路由项被路由软件查找的次数

Iface

该路由表项对应的输出接口

 


添加网关/设置网关

命令 route add -net 224.0.0.0 netmask 240.0.0.0 dev ens160

说明: 增加一条到达224.0.0.0的路由

[root@master ~]# route add -net 224.0.0.0 netmask 240.0.0.0 dev ens160 [root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.224.2 0.0.0.0 UG 0 0 0 ens160 192.168.224.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160 224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 ens160

屏蔽一条路由

命令:route add -net 224.0.0.0 netmask 240.0.0.0 reject

说明:增加一条屏蔽的路由,目的地址为224.x.x.x将被拒绝;Flags为!

[root@master ~]# route add -net 224.0.0.0 netmask 240.0.0.0 reject [root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.224.2 0.0.0.0 UG 0 0 0 ens160 192.168.224.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160 224.0.0.0 - 240.0.0.0 ! 0 - 0 - 224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 ens160

删除路由记录

命令:route del -net 224.0.0.0 netmask 240.0.0.0

route del -net 224.0.0.0 netmask 240.0.0.0 reject

[root@master ~]# route del -net 224.0.0.0 netmask 240.0.0.0 [root@master ~]# route del -net 224.0.0.0 netmask 240.0.0.0 reject [root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.224.2 0.0.0.0 UG 0 0 0 ens160 192.168.224.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160

删除和添加默认网关

命令:route del default gw 192.168.224.2

route add default gw 192.168.224.2

[root@master ~]# route del default gw 192.168.224.2 [root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.224.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160 192.168.224.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160 [root@master ~]# route add default gw 192.168.224.2 [root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.224.2 0.0.0.0 UG 0 0 0 ens160 192.168.224.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160 192.168.224.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160

添加永久路由的方法

/etc/rc.local

直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证路由设置永久有效

[root@master ~]# cat /etc/rc.local #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. touch /var/lock/subsys/local

添加命令

vim /etc/rc.local 在文件末尾添加命令,生效需要给这个文件一个可执行权限

下次系统重新引导后 路由配置将会永久生效

[root@master ~]# cat /etc/rc.local #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules ......... touch /var/lock/subsys/local route add -net 192.168.1.0/24 dev ens160 route add -net 192.168.2.0/24 192.168.1.1

重新引导系统

赋予文件执行权限,重新引导操作系统

[root@master ~]# chmod a+x /etc/rc.local [root@master ~]# init 6

查看永久路由

[root@master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.224.2 0.0.0.0 UG 100 0 0 ens160 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160 192.168.224.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160