路由重定向的概念
路由重定向是基于路由器发送的,那肯定是使用RA报文。
当一个网关设备发现数据包进来的接口和出去的接口是一个接口的时候,网关设备意识到这个路径不是最优的,走了冤枉路,其实可以不用通过自己的,就通过重定向报文告诉发送这个数据包的主机,你下次再给目标IP发送报文的时候不用将目标IP填写成“我”,直接填写成最优的下一跳即可。
好,我们仔细想一下,这对网关设备的要求就高了,要求路由器能判断出数据包的转发路径不是最优的路径,这怎么判断呢?如上所说,其实很简单,就是收到这个数据包的接口与路由后发送这个数据的接口是一个接口。
对于主机而言收到重定向报文意味着什么?
其实对于主机而言收到重定向报文意味着向在自己的路由表上添加一条主机路由,下一跳就是重定向报文当中告诉主机的下一跳。
那你说,在这个报文是否可以采取一些攻击的机制,比如给主机一些错误的重定向报文,让主机瞎重定向,让主机无法正常使用?是可以的,在IPV4当中就用路由重定向攻击这一种攻击方式,其实主要是利用了IPV4当中路由重定向的时候缺乏安全验证机制,在IPV6则加强了IPV4的路由重定向缺乏安全验证机制的问题,主机变得警觉了,不再轻易别人(网关路由器)说的话了!从这些看,IPV4就相当于网络的儿童时代,而IPV6就像是网络的青年时代,不再那么容易轻易相信别人了。
路由重定向需要满足的条件
想要路由器发送重定向报文,还要满足一些条件的,
- 网关设备发送重定向的目标设备一定要是将自己视为下一跳的主机,换句话说,就是一定和自己处于同一个局域网当中的目标主机。
- 数据包的目标地址不能是一个组播地址。
- 入接口和路由后的出接口是一个接口的。
必须满足以下这么几个条件,主机才会相信:
- 源地址必须是link-local地址,也就是说重定向的RA报文的源地址是路由器的link-local地址,这用于让主机根据自己已经保存到信息与重定向指定源IP做对比。
- HOP LIMIT字段等于255,意味着这个报文不能被其它路由器转发。
- ICMP校验必须有效
- ICMP code得是0
- ICMP的报文长度必须是40字节或以上
- 所有包含的选项长度必须大于0
报文分析
重点关注类型是137,以及以下两个字段