Linux上分为3种路由: 主机路由:直接指明到某台具体的主机怎么走,主机路由也就是所谓的静态路由 网络路由:指明某类网络怎么走 默认路由:不走主机路由的和网络路由的就走默认路由。操作系统上设置的默认路由一般也称为网关。
若Linux上到某主机有多条路由可以选择,这时候会挑选优先级高的路由。在Linux中,路由条目的优先级确定方式是先匹配掩码位长度,再比较管理距离(比如metric)。也就是说,掩码位长的路由条目优先级一定比掩码位短的优先级高,所以主机路由的优先级最高,然后是直连网络(即同网段)的路由(也算是网络路由)次之,再是网络路由,最后才是默认路由。若路由条目的掩码长度相同,则比较节点之间的管理距离,管理距离短的生效。
例如下面的路由表中,若ping 192.168.5.20,则先比对192.168.100.78发现无法匹配,然后比对192.168.100.0,发现也无法匹配,接着再匹配192.168.0.0这条网络路由条目,发现能匹配,所以选择该路由条目。
[root@xuexi ~]# route -n
Kernel IP routing table
Destination
Gateway
Genmask
Flags
Metric
Ref
Use
Iface
0.0.0.0
192.168.100.2
0.0.0.0 UG 100
0
0 eth0
172.16.10.0
0.0.0.0
255.255.255.0 U 100
0
0 eth1
192.168.0.0
192.168.100.70
255.255.0.0 UG 0
0
0 eth0
192.168.100.0
0.0.0.0
255.255.255.0 U 100
0
0 eth0
192.168.100.78
0.0.0.0
255.255.255.255 UH 0
0
0 eth0
再比如下面的路由表。由于两块网卡eth0和eth1都是192.168.100.0/24网段地址,所以它们的路由条目在掩码长度的匹配上是相同的,但是和eth0直连的网段主机通信时,肯定会选择eth0这条路由条目,因为eth1和该网段主机隔了一个eth0,距离增加了1。
[root@xuexi ~]# route -n
Kernel IP routing table
Destination
Gateway
Genmask
Flags
Metric
Ref
Use
Iface
0.0.0.0
192.168.100.2
0.0.0.0 UG 100
0
0 eth0
192.168.100.0
0.0.0.0
255.255.255.0 U 100
0
0 eth0
192.168.100.0
0.0.0.0
255.255.255.0 U 101
0
0 eth1
route命令
route命令用于显示和管理路由表。当使用了add或del选项时,route命令将设置路由条目,否则route命令将显示路由表。
要显示路由表信息,只需简单的route -n即可,其中-n选项表示不解析主机名。
例如:
[root@xuexi ~]# route -n
Kernel IP routing table
Destination
Gateway
Genmask
Flags
Metric
Ref
Use
Iface
0.0.0.0
192.168.100.2
0.0.0.0 UG 100
0
0 eth0
172.16.10.0
0.0.0.0
255.255.255.0 U 100
0
0 eth1
192.168.0.0
192.168.100.70
255.255.0.0 UG 0
0
0 eth0
192.168.100.0
0.0.0.0
255.255.255.0 U 100
0
0 eth0
192.168.100.78
0.0.0.0
255.255.255.255 UH 0
0
0 eth0
对于CentOS 6以上的系统,请忽略Metric和Ref两列,它们已经不被内核使用,只是有些路由软件可能会用上。
对于Flags列,如果没有安装路由软件,则只可能出现下面的3种值: U (route is up) H (target is a host) G (use gateway,也即是设置了下一跳的路由条目)
若要管理路由表,则使用add或del选项。
route [add/del]
[-host/-net/default]
[address[/mask]]
[netmask]
[gw]
[dev]
选项说明:
add/del:增加或删除路由条目
-net:增加或删除的是一条网络路由
-host:增加或删除的是一条主机路由
default:增加或删除的是一条默认路由
netmask:明确使用netmask关键字指定掩码,要可以不使用该选项直接在地址上使用cidr格式的掩码,即IP/MASK。
gw:指定下一跳的地址。要求下一跳地址必须是能到达的,且一般是和本网段直连的接口。
dev:强制将路由条目关联到指定的接口上。一般内核会自动判断路由条目应该关联到哪个网络接口。