在Linux系统中,arp
(Address Resolution Protocol,地址解析协议)是一个关键的网络协议,主要用于将IP地址动态映射到对应的MAC地址,确保局域网(LAN)内的设备能够正确通信。以下是其核心作用及相关的详细说明:
IP到MAC的映射
当一台设备需要与同一局域网内的另一台设备通信时,它只知道目标设备的IP地址,但实际数据传输依赖于数据链路层的MAC地址。ARP通过广播查询("谁的IP是X?请回复你的MAC")获取目标设备的MAC地址,并缓存到本地ARP表中。
维护ARP缓存表
Linux内核会维护一个ARP缓存表(arp -n
可查看),存储最近查询的IP-MAC映射,避免每次通信都发起ARP请求,提升效率。
查看ARP表
bash
arp -n # 以数字格式显示,不解析主机名
ip neigh show # 更现代的替代命令
输出示例:
Address HWtype HWaddress Flags Mask Iface
192.168.1.1 ether 00:11:22:33:44:55 C eth0
删除ARP条目
bash
arp -d 192.168.1.1 # 删除指定IP的缓存
ip neigh del 192.168.1.1 dev eth0 # 使用ip命令
静态ARP绑定(防止ARP欺骗)
bash
arp -s 192.168.1.1 00:11:22:33:44:55 # 永久静态条目
ip neigh add 192.168.1.1 lladdr 00:11:22:33:44:55 nud permanent dev eth0
ARP缓存过期
默认缓存条目有一定生存时间(通常几分钟到几小时),可通过sysctl -a | grep arp
调整参数如net.ipv4.neigh.default.gc_stale_time
。
ARP欺骗(ARP Spoofing)
攻击者伪造ARP响应,劫持流量。防御方法:
arpwatch
)。ARP表无响应
可能因目标主机离线或防火墙阻止ARP请求。排查步骤:
bash
ping 192.168.1.1 # 检查连通性
tcpdump -i eth0 arp # 抓包分析ARP请求/响应
在IPv6中,ARP的功能由NDP(Neighbor Discovery Protocol)实现,通过ICMPv6消息完成地址解析。
Linux中的ARP协议是局域网通信的基石,负责动态维护IP与MAC的映射关系。理解其原理和操作命令,有助于网络故障排查和安全防护。对于现代网络管理,建议结合ip neigh
命令(来自iproute2
工具包)替代传统的arp
命令,以获得更全面的功能。