Linux arpwatch 命令超详细解析:ARP 监听、IP-MAC 监控与 ARP 欺骗检测
1. 命令简介arpwatch 是一个用于监听和记录网络上 ARPAddress Resolution Protocol地址解析协议活动的命令行工具。它能够持续监控指定网络接口上的 ARP 请求与应答数据包并将检测到的 IP 地址与 MAC 地址的映射关系记录到日志文件中。当发现新的映射关系或现有映射关系发生变更例如IP 地址对应的 MAC 地址改变时arpwatch 可以通过电子邮件向系统管理员发送警报这对于检测网络中的 ARP 欺骗攻击、IP 地址冲突或未经授权的设备接入非常有用。2. 语法格式plaintextarpwatch [选项]3. 常用选项及说明表格选项说明-d启用调试模式。在此模式下arpwatch 将在前台运行并将详细信息输出到标准错误输出stderr而不是作为守护进程在后台运行。常用于问题排查和测试。-f 文件指定存储 ARP 记录的数据文件路径。默认路径通常为 /var/arpwatch/arp.dat 或 /var/lib/arpwatch/arp.dat具体取决于发行版。该文件保存了已学习到的 IP-MAC 地址对。-i 接口指定要监听的网络接口名称。例如 eth0、ens33 或 wlan0。如果未指定arpwatch 通常会尝试监听第一个找到的非回环接口。-r 文件从指定的 tcpdump 格式的抓包文件 中读取 ARP 数据包进行分析而不是直接从网络接口进行实时监听。这对于分析历史网络数据非常有用。-n指定要监控的网络地址CIDR 格式。例如 -n 192.168.1.0/24 将只关注该子网内的 ARP 活动忽略其他子网的流量。-u 用户指定运行 arpwatch 守护进程的用户身份。默认通常是 arpwatch 或 nobody 用户以降低权限运行增强安全性。-e将警报发送到标准错误输出stderr而不是通过电子邮件发送。通常与 -d 调试模式结合使用。-s 发件人设置警报电子邮件中的 “发件人” 地址。-m 收件人设置接收警报电子邮件的 “收件人” 地址。默认通常是系统 root 用户。注意不同 Linux 发行版或 arpwatch 版本支持的选项可能略有差异请使用 man arpwatch 或 arpwatch --help 查看您系统上的完整选项列表。4. 示例用法基本监听在默认接口通常是 eth0上启动 arpwatch 守护进程使用默认的数据文件和邮件通知设置。plaintextsudo arpwatch指定监听接口监听名为 ens192 的网络接口上的 ARP 流量。plaintextsudo arpwatch -i ens192启用调试模式在前台运行 arpwatch监听接口 wlan0并将所有输出包括警报打印到终端便于实时观察。plaintextsudo arpwatch -d -i wlan0 -e指定数据文件将学习到的 ARP 记录保存到自定义路径 /tmp/my_arp.dat。plaintextsudo arpwatch -f /tmp/my_arp.dat分析抓包文件不监听网络而是分析一个已有的网络抓包文件 network_capture.pcap 中的 ARP 记录。plaintextsudo arpwatch -r network_capture.pcap限制监控网段只监控 192.168.10.0/24 子网内的 ARP 活动。plaintextsudo arpwatch -n 192.168.10.0/245. 注意事项权限要求arpwatch 需要访问原始网络套接字raw socket来捕获数据包因此通常需要使用 sudo 或以 root 权限运行。邮件配置要使电子邮件警报功能正常工作系统需要正确配置并运行邮件传输代理如 sendmail 或 postfix。如果邮件未发送请检查系统邮件日志。数据文件-f 选项指定的数据文件记录了已知的、稳定的 IP-MAC 映射。arpwatch 启动时会读取它运行时会更新它。确保该文件所在目录对运行 arpwatch 的用户有写权限。变更警报arpwatch 的核心功能是检测 “变更”。当一个新的设备首次出现或者一个已知 IP 地址的 MAC 地址发生变化时才会触发警报。稳定的、重复的 ARP 流量通常不会持续产生警报。与 arp 命令的区别系统自带的 arp 命令arp -a用于查看内核的当前 ARP 缓存表是瞬时的、易变的。而 arpwatch 是长期的监听和记录工具并具备告警能力。作为服务运行在生产环境中通常将 arpwatch 配置为系统服务如通过 systemd 单元开机自启并指定好监控的接口和网络。具体配置方法请参考您所用 Linux 发行版的文档。