linux路由子系统是学习系统网络技术的基础之一,但之前这一块了解较少,尝试带着问题去了解路由子系统。先了解大致原理,再根据实际需求去阅读文档和源码。
先需要了解基本概念:
(1)路由表
可以这样来理解路由表: 指定发送网络包时需要遵守的转发路径。
查看路由表的方法:
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.21.48.0 0.0.0.0 255.255.248.0 U 0 0 0 bond0
169.254.0.0 0.0.0.0 255.255.0.0 U 1008 0 0 bond0
0.0.0.0 172.21.55.254 0.0.0.0 UG 0 0 0 bond0
Destination:目的IP
Gateway:网关
Genmask:目标网络的子网掩码
Flags: 路由标志,具体含义请man
Metric: 目的IP的跳数
Ref: 路由的应用计数
Use: 路由查询次数
Iface: 包发送接口
(2)路由cache
路由cache的作用:
当数据包进入网络层后,根据目的地址是否是本机决定是接收、转发还是丢弃数据包。如果是转发的话,需要从哪个接口将包转发出去需要查找路由表。为了提高路由表的查询效率,将已经通过路由表查询得到的结果缓存起来,后续查询时先查找路由cache,如果cache命中,路由查找工作就完成了,否则,再进入查找路由表的环节。
查看路由cache的方法:
方法1) netstat -rn --cache
Kernel IP routing cache
Source Destination Gateway Flags MSS Window irtt Iface
172.24.102.210 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.24.102.210 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 10.242.252.21 172.21.55.254 1500 0 0 bond0
172.23.197.6 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 10.207.0.34 172.21.55.254 1500 0 0 bond0
127.0.0.1 127.0.0.1 127.0.0.1 l 16436 0 0 lo
172.21.48.6 10.204.98.36 172.21.55.254 1500 0 0 bond0
10.207.0.13 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 10.204.98.34 172.21.55.254 1500 0 0 bond0
172.18.252.2 172.21.48.6 172.21.48.6 l 0 0 0 lo
127.0.0.1 127.0.0.1 127.0.0.1 l 16436 0 0 lo
172.21.0.8 172.21.48.6 172.21.48.6 l 0 0 0 lo
10.249.252.42 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.24.6.17 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 172.21.0.7 172.21.55.254 1500 0 0 bond0
172.21.48.6 10.207.0.13 172.21.55.254 1500 0 0 bond0
172.21.48.6 172.18.252.2 172.21.55.254 1500 0 0 bond0
172.23.197.2 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 172.21.0.8 172.21.55.254 1500 0 0 bond0
172.23.121.10 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 172.23.12.32 172.21.55.254 1500 0 0 bond0
10.204.98.34 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 172.21.0.19 172.21.55.254 1500 0 0 bond0
172.21.48.6 172.23.121.10 172.21.55.254 1500 0 0 bond0
10.207.0.34 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 172.24.102.210 172.21.55.254 1500 0 0 bond0
172.21.48.6 172.24.102.210 172.21.55.254 1500 0 0 bond0
172.21.48.6 172.23.197.6 172.21.55.254 1500 0 0 bond0
172.21.0.19 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 172.23.197.7 172.21.55.254 1500 0 0 bond0
172.21.48.200 172.21.55.255 172.21.55.255 ibl 0 0 0 lo
172.23.197.7 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 10.249.252.42 172.21.55.254 1500 0 0 bond0
10.242.252.21 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.0.7 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 172.24.6.17 172.21.55.254 1500 0 0 bond0
172.21.48.6 172.23.12.32 172.21.55.254 1500 0 0 bond0
方法2) route -Cn
Kernel IP routing cache
Source Destination Gateway Flags Metric Ref Use Iface
172.21.48.6 172.23.121.10 172.21.55.254 0 48 47 bond0
10.242.252.8 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 10.207.0.13 172.21.55.254 0 0 18 bond0
172.21.0.8 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.24.6.17 172.21.48.6 172.21.48.6 l 0 0 0 lo
172.21.48.6 172.24.6.17 172.21.55.254 0 0 0 bond0
10.207.0.34 172.21.48.6 172.21.48.6 l 0 0 12 lo
172.21.48.6 172.23.197.7 172.21.55.254 0 0 14 bond0
172.23.121.10 172.21.48.6 172.21.48.6 l 0 0 235803 lo
172.21.48.6 172.21.0.254 172.21.55.254 0 0 45 bond0
172.23.197.6 172.21.48.6 172.21.48.6 l 0 0 26 lo
172.21.48.6 172.23.197.2 172.21.55.254 0 1 0 bond0
172.21.48.6 172.24.102.210 172.21.55.254 0 1 0 bond0
172.21.48.6 172.23.12.32 172.21.55.254 0 0 3 bond0
127.0.0.1 127.0.0.1 127.0.0.1 l 0 0 77 lo
172.21.48.6 172.21.0.8 172.21.55.254 0 0 0 bond0
172.21.48.6 172.21.0.254 172.21.55.254 0 0 45 bond0
172.21.48.6 10.242.252.8 172.21.55.254 0 0 0 bond0
172.24.102.210 172.21.48.6 172.21.48.6 l 0 0 479 lo
127.0.0.1 127.0.0.1 127.0.0.1 l 0 0 2 lo
172.21.48.6 172.23.197.6 172.21.55.254 0 1 0 bond0
10.207.0.13 172.21.48.6 172.21.48.6 l 0 0 26 lo
172.23.197.2 172.21.48.6 172.21.48.6 l 0 0 2 lo
172.21.48.200 172.21.55.255 172.21.55.255 ibl 0 0 0 lo
172.21.0.19 172.21.48.6 172.21.48.6 l 0 0 39 lo
172.21.48.6 172.21.0.19 172.21.55.254 0 1 12 bond0
172.21.48.6 172.23.12.32 172.21.55.254 0 0 1 bond0
172.23.197.7 172.21.48.6 172.21.48.6 l 0 0 14 lo
172.21.0.254 172.21.48.6 172.21.48.6 l 0 0 45 lo
清空路由cache的方法:
ip -s -s ro flush cache
参考文档:http://jasonccie.blog.51cto.com/2143955/391021
(3)策略路由(Policy-based routing)
一句话描述: 策略路由为管理员提供了比只根据目的IP设置路由策略更为强大和灵活的路由策略设置方法。
查看策略路由的方法:
ip rule list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
选择一个路由表进行查看:
ip route list table 0
172.21.48.0/21 dev bond0 proto kernel scope link src 172.21.48.6
169.254.0.0/16 dev bond0 scope link metric 1008
default via 172.21.55.254 dev bond0
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1
broadcast 172.21.55.255 dev bond0 table local proto kernel scope link src 172.21.48.6
broadcast 172.21.48.0 dev bond0 table local proto kernel scope link src 172.21.48.6
local 172.21.48.6 dev bond0 table local proto kernel scope host src 172.21.48.6
broadcast 127.0.0.0 dev lo table local proto kernel scope link src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
参考文档:http://blog.chinaunix.net/uid-20779306-id-1845690.html
http://blog.csdn.net/bin323/article/details/642192