ARP代理、ICMP重定向

本文详细介绍了地址解析协议(ARP)的工作原理及其代理功能,并通过实验验证了ARP代理的作用。同时,还深入探讨了Internet控制报文协议(ICMP)的功能及ICMP重定向的过程。

ARP
地址解析协议:根据IP地址获取物理地址
ARP过程:将ARP请求广播到网络上所有主机,接收返回消息,并将该IP地址和物
理地址存入本机ARP缓存且保留一定时间
无故ARP:用自己的IP地址为目的IP地址,发送ARP请求
目的是检查地址重复、通告新的数据链路标识(默认关闭)

ARP代理
路由器收到ARP请求并且有前往目标IP的路由条目,进行ARP代理,把接收该ARP
请求的接口的物理地址应答给ARP请求者


ARP代理实验


1.PC1 ping 1.1.1.1;查看ARP表


2.设置12.12.12.2为PC1的默认网关,ping 1.1.1.1,查看ARP表,分析有无默认网
关的区别

分析:
3.关闭R2的ARP代理功能,测试是否能 ping 通 1.1.1.1,并分析结果


ARP代理实验配置命令
查看ARP表:#show arp
清除ARP条目:#clear ip arp X.X.X.X (模拟器)
关闭ARP代理:(config-if)#no ip proxy-arp

ICMP
Internet控制报文协议
用于在IP主机、路由器之间传递控制消息
网络通不通、主机是否可达、路由是否可用等
分析:目标不可达的ICMP信息产生的原因

ICMP重定向
ICMP重定向过程
(1)主机将ICMP包发往默认网关A
(2)A发现符合ICMP重定向条件
(3)将ICMP发往B且发ICMP重定向包给主机
ICMP重定向触发条件
(1)从该接口接收的ICMP包又从该接口发出去
(2)源IP地址和下一跳地址同网段

ICMP重定向实验配置思路
1.主机将A设置成自己的默认网关
2.A要有默认路由指向B
3.主机开启ICMP的debug功能
4.主机ping回环口
开启ICMP的debug功能:#debug ip icmp
打开ICMP的重定向功能:(config-if)#ip redirects


ICMP(Internet Control Message Protocol)即互联网控制报文协议,是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。ICMP重定向ICMP控制报文中的一种,在特定情况下,当路由器检测到一台机器使用的是非优化路由时,会向主机发送ICMP重定向报文,使主机走优化路由 [^2]。 #### 工作原理 当路由器接收到主机发送的数据报,发现该数据报的目标地址存在更优的下一跳路由器时,路由器会将数据报正常转发,并同时向源主机发送一个ICMP重定向报文。这个报文中包含了更优的下一跳路由器的IP地址。主机收到该ICMP重定向报文后,会更新自己的路由表,将去往该目标地址的下一跳路由器地址修改为报文中所指示的地址 [^3]。 #### 示例说明 假设主机PC要访问网络192.168.3.0/24,它将数据报发送给默认网关路由器R1。当路由器R1收到此ARP请求包后,它首先用ARP应答包回答主机PC的ARP请求(通知主机PC自己的E0接口的MAC地址),然后将此ICMP请求转发到路由器R2的E0接口(192.168.1.254),前提是路由器R1正确配置了到网络192.168.3.0/24的路由。此外,路由器R1还要发送一个ICMP重定向消息给主机PC,通知主机PC对于其请求的地址的网关是192.168.1.254 [^4]。 #### 作用 ICMP重定向的主要作用是优化网络中数据的传输路径。当主机的路由选择不是最优时,通过ICMP重定向机制,主机可以及时调整路由,从而减少数据传输的延迟网络拥塞,提高网络的整体性能效率 [^3]。 #### 潜在风险 ICMP重定向也存在一定的安全风险,可能会被攻击者利用进行ICMP重定向攻击。攻击者可以伪造ICMP重定向报文,诱使主机将数据报发送到恶意的下一跳地址,从而实现中间人攻击等目的。在许多情况下,禁用ICMP重定向是防止这类攻击的最简单且最有效的方式。大多数操作系统路由器都允许管理员禁用ICMP重定向消息,这样即使攻击者尝试发送伪造的重定向消息,主机路由器也不会处理它们 [^1][^3]。 ### 代码示例 以下是一个简单的Python示例,使用`scapy`库来模拟发送接收ICMP重定向报文: ```python from scapy.all import * # 构造ICMP重定向报文 ip = IP(src="192.168.1.1", dst="192.168.1.100") icmp = ICMP(type=5, code=1) # type=5表示重定向,code=1表示主机重定向 icmp_gw = IP(src="192.168.1.254", dst="192.168.3.1") # 更优的下一跳地址 packet = ip/icmp/icmp_gw # 发送ICMP重定向报文 send(packet) # 接收ICMP重定向报文 def receive_icmp_redirect(): sniff(filter="icmp and icmp[0]=5", prn=lambda x: x.show(), count=1) receive_icmp_redirect() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值