| 我想做一个实验,就是冒充网关发送一个“ICMP重定向”包给一台主机,告诉它我才是到达DNS服务器的最佳路径,可这个实验做了好久都没成功。请问伪造一个ICMP重定向包需要具备什么条件,试过将一个“ICMP端口不可达”的包改为“ICMP重定向包”,可就是不行,我将捉到的“ICMP端口不可达”的包按照ICMP重定向的报文格式来伪造CMP重定向的包,主要对该包做了以下修改并填充了相关的值: 帧头的源地址和目的地址
 IP包头的源地址和目的地址,
 ICMP包头中的类型(5)和代码(1),还填充上了新的路由器地址(我自己的)
 ICMP差错报文中的IP包头里的源地址和目的地址
 
 然后将该被修改过的包发送到对方的主机,可是对方的主机根本就没有反应,也没修改自身的路由表,对方的系统是xp和linux Ubuntu都有试过,而且对方xp系统的注册表里的EnableICMPRedirect设置为1,也就是说允许对ICMP重定向包文进行响应,可是为什么还不行?该伪造的“ICMP重定向包”已具备了以下条件:
 1. 新路由必须是直达的
 2. 重定向包必须来自去往目标的当前路由
 3. 重定向包不能通知主机用自己做路由
 4. 被改变的路由必须是一条间接路由
 这些条件都做到了,请问当一台主机接收到一份“ICMP重定向”报文时,需要该报文俱备哪些条件才会更改自身的路由表,接收方会对该包的长度,标识符,检验和,TTL,和出错的报文里的协议字段(即封装在ICMP包里的IP头部中的协议字段)做检查吗?是不是xp的系统不会向应这些包而不修改自身的路由表?当机收到“ICMP重定向”报文时会不会去验证新路由到底是不是个路由器?
 以下这图是我所在的网络环境:
 
 
 这个是我伪造的ICMP重定向包,希望高手能帮我分析一些,看看是不是这个伪造不行,还是说所在的网络环境网络不行??
 
 
 我的疑惑太多了,这个实验搞了两天都没搞清楚,参考了不少资料。希望有人能一一回答我这个问题,帮我解开这些迷惑,谢谢
 |