Linux arpwatch 命令超详细解析:ARP 监听、IP-MAC 监控与 ARP 欺骗检测
2026/7/24 21:46:21 网站建设 项目流程

1. 命令简介

arpwatch 是一个用于监听和记录网络上 ARP(Address Resolution Protocol,地址解析协议)活动的命令行工具。它能够持续监控指定网络接口上的 ARP 请求与应答数据包,并将检测到的 IP 地址与 MAC 地址的映射关系记录到日志文件中。当发现新的映射关系或现有映射关系发生变更(例如,IP 地址对应的 MAC 地址改变)时,arpwatch 可以通过电子邮件向系统管理员发送警报,这对于检测网络中的 ARP 欺骗攻击、IP 地址冲突或未经授权的设备接入非常有用。

2. 语法格式

plaintext

arpwatch [选项]

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 守护进程,使用默认的数据文件和邮件通知设置。

plaintext

sudo arpwatch

指定监听接口

监听名为 ens192 的网络接口上的 ARP 流量。

plaintext

sudo arpwatch -i ens192

启用调试模式

在前台运行 arpwatch,监听接口 wlan0,并将所有输出(包括警报)打印到终端,便于实时观察。

plaintext

sudo arpwatch -d -i wlan0 -e

指定数据文件

将学习到的 ARP 记录保存到自定义路径 /tmp/my_arp.dat。

plaintext

sudo arpwatch -f /tmp/my_arp.dat

分析抓包文件

不监听网络,而是分析一个已有的网络抓包文件 network_capture.pcap 中的 ARP 记录。

plaintext

sudo arpwatch -r network_capture.pcap

限制监控网段

只监控 192.168.10.0/24 子网内的 ARP 活动。

plaintext

sudo arpwatch -n 192.168.10.0/24

5. 注意事项

  • 权限要求: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 发行版的文档。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询