静态路由:是指由用户或网络管理员手工配置的路由信息,包括网络地址 子网掩码和下一跳地址。
1. 静态路由的作用
基本的静态路由举例如图所示,由两个路由器R1和R2组成(接口号和IP地址在图中给出),它们分别连接了各自的网络:R1连接了子网192.168.0.0/24,R2连接了子网192.168.2.0/24 。
通过上面的两段配置,从计算机A发往计算机B的IP包,能被R1通过2号端口转发给R2,然后R2转发给计算机B。同样地,从计算机B返回给计算机A的IP包,能被R2通过3号端口转发给R1,然后R1转发给计算机A,完成了一个完整的通讯过程。
2. 静态路由的适用范围:
而且随着局域网规模的扩大,很多地方都涉及到2台或以上路由器的应用。当一个局域网内存在2台以上的路由器时,由于其下主机互访的需求,往往需要设置路由。由于网络规模较小且不经常变动,所以静态路由是最合适的选择。# traceroute 172.22.102.250
traceroute to 172.22.102.250 (172.22.102.250), 30 hops max, 38 byte packets
1 192.168.5.64 (192.168.5.64) 10.000 ms 10.000 ms 10.000 ms
2 172.22.102.251 (172.22.102.251) 10.000 ms * 10.000 ms
# traceroute 172.22.102.250
traceroute to 172.22.102.250 (172.22.102.250), 30 hops max, 38 byte packets
1 192.168.5.11 (192.168.5.11) 10.000 ms 10.000 ms 10.000 ms
2 172.22.102.251 (172.22.102.251) 10.000 ms * 10.000 ms
路由表的查看可有以下二种方法:
# ip route list table table_number
# ip route list table table_name
路由表添加完毕即时生效,下面为实例
# ip route add 172.22.102.0/24 via 192.168.5.64 //添加一条到172.22.102.0网段的路由为192.168.5.64,
# ip route add default via 192.168.5.64 table 1 在一号表中添加一条到默认路由,网关为192.168.5.64
# ip route add default via 192.168.5.64 //添加一条默认路由,网关为192.168.5.64
路由表序号和表名的对应关系在/etc/iproute2/rt_tables中,可手动编辑,文件中有linux系统维护了4个路由表:
0 系统保留表
255 local 本地路由表存有本地接口地址,广播地址,已及NAT地址.local表由系统自动维护..管理员不能操作此表...
254 main 主路由表 传统路由表,ip route若没指定表亦操作表254.一般存所有的路由。注:平时用ip ro sh查看的亦是此表设置的路由.
253 default 默认路由表一般存放默认路由...
注:rt_tables文件中表以数字来区分表0保留最多支持255张表
进行路由时,根据路由规则来进行匹配,按优先级(pref)从低到高匹配,直到找到合适的规则.所以在应用中配置默认路由是必要的..
ip rule add -- 插入新的规则
缩写:add、a;
示例1: 通过路由表inr.ruhep路由来自源地址为192.203.80/24的数据包
# ip ru add from 192.203.80/24 table inr.ruhep prio 220
#ip ru add to 172.22.102.0/24 table 1 prio 220
示例2:把源地址为193.233.7.83的数据报的源地址转换为192.203.80.144,并通过表1进行路由
# ip ru add from 193.233.7.83 nat 192.203.80.144 table 1 prio 320
ip rule delete -- 删除规则
缩写:delete、del、d;
示例:删除无用的缺省规则
#ip ru del from all to 172.22.102.0/24 lookup inr.ruhep //删除规则
# ip ru del prio 32767
显示规则:ip rule show
缩写:show、list、sh、ls、l
0: from all lookup local
3226: from all to 172.22.102.0/24 lookup 226 //这条表示所有来源,要到172.22.102.0网段的数据包,都通过
//查找表226发送出去,使用ip ro table 226可以看到对应的规则
32766: from all lookup main
32767: from all lookup default
参数解析如下:
From -- 源地址
To -- 目的地址(这里是选择规则时使用,查找路由表时也使用)
Tos -- IP包头的TOS(type of sevice)域Linux高级路由-
Dev -- 物理接口
Fwmark -- iptables标签
采取的动作除了指定路由表外,还可以指定下面的动作:
Table 指明所使用的表
Nat 透明网关
Prohibit 丢弃该包,并发送 COMM.ADM.PROHIITED的ICMP信息
Reject 单纯丢弃该包
Unreachable丢弃该包, 并发送 NET UNREACHABLE的ICMP信息
如果pref值不指定,则将在已有规则最小序号前插入
新增规则: ip rule add
缩写:add、a;
示例1: 通过路由表inr.ruhep路由来自源地址为192.203.80/24的数据包
# ip route add default via 192.168.5.64 table 1 //添加一条默认路由到一号表中,网关为192.168.5.64
# ip ru add to 172.22.102.0/24 table 1 prio 220 //添加规则,指明到172.22.102.0/24网路的包,通过路由表table 1进行
//查找转发 prio为按优先级(pref),它的匹配规则是从低到高匹配。
示例2:把源地址为192.168.2.10的数据报的源地址转换为192.168.80.144,并通过表1进行路由
# ip ru add from 192.168.2.10 nat 192.168.80.144 table 1 prio 320
注:创建完路由规则若需立即生效须执行#ip route flush cache;刷新路由缓冲
删除规则: ip rule delete
缩写:delete、del、d;
示例:删除无用的缺省规则
# ip ru del prio 32767
# ip ru del from all to 172.22.102.0/24 lookup inr.ruhep
1.当路由器的某个接口收到一个包时,路由器会读取包中相应的目标的逻辑地址的网络部分,然后在路由表中进行查找。如果在路由表中找到了目标地址的路由条目,则把包转发到路由器的相应接口;
2.如果在路由表中没有找到目标地址的路由条目,那么,如果路由器配置了默认路由的话,就根据默认路由的配置转发到路由器的相应接口,如果路由器中没有配置默认路由,则将该包丢弃,并返回不可达信息。
以上就是数据路由的过程,可见路由是路由器根据自己的路由表进行的,其间经过了路由选择和路由转发的过程,从路由器的一个接口”路由”到另一个接口.
查找路由表的优先顺序是:静态路由表>路由表>默认路由表。6. 测试:
1. 环境条件:
1. 如上图的的网络拓扑图,现在将192.168.5.11与172.22.102.0网络断开
2. 192.168.5.64中有dhcp服务器,上面我们已经验证了网络的连通,现将dhcp中的默认路由设置为192.168.5.11,这里是为了验证在DUT使用ip route和ip rule将网络连通。# ip route add 172.22.102.0/24 via 192.168.5.64 //添加到172.22.102.0网段的路由,网关为192.168.5.64,
# ping 172.22.102.250 //网通
# ip route del 172.22.102.0/24 via 192.168.5.64 dev ptm0_0 //删除这条路由
3. 路由规则
# ip route add default via 192.168.5.64 table 1 //添加一条默认路由到一号表中,网关为192.168.5.64
# ip ru add to 172.22.102.0/24 table 1 prio 220 //添加新rule
# ip route flush cache //刷新路由缓冲
# ping 172.22.102.250 //网通
# ip ru del from all to 172.22.102.0/24 lookup inr.ruhep //删除这条rule