菜鸟科技网

arp命令有哪些常用用法?

arp 命令就是用来查看、添加和删除本地 ARP 缓存条目的工具,理解 ARP 的工作原理和 arp 命令的用法,对于网络故障排查和安全防护都非常有帮助。

arp命令有哪些常用用法?-图1
(图片来源网络,侵删)

ARP 协议简介(理解为什么需要 arp 命令)

在局域网中,设备之间通信依赖的是 MAC 地址(也叫物理地址或硬件地址),而不是 IP 地址,当你的电脑(主机 A)想要和同一局域网内的另一台电脑(主机 B)通信时,会发生以下过程:

  1. 检查 ARP 缓存:主机 A 首先会查看自己的 ARP 缓存(一个存储 IP 地址与 MAC 地址对应关系的临时表),看看是否已经有主机 B 的 IP 对应的 MAC 地址。
  2. 发送 ARP 请求:如果缓存中没有,主机 A 就会在局域网内广播一个 ARP 请求,这个请求的内容大致是:“谁是 168.1.100?请告诉 168.1.10(主机 A 的 IP)”。
  3. 接收 ARP 响应:局域网内的所有设备都能收到这个广播,但只有 IP 地址是 168.1.100 的主机 B 会响应一个 ARP 应答,这个应答的内容是:“168.1.100 的 MAC 地址是 AA:BB:CC:11:22:33”。
  4. 更新缓存并通信:主机 A 收到响应后,会将这个 IP-MAC 对存入自己的 ARP 缓存,然后使用这个 MAC 地址将数据帧发送给主机 B。

arp 命令就是用来管理这个“缓存表”的。


arp 命令的基本用法

arp 命令的语法通常如下: arp [选项] [命令] [接口]

最常用的命令是 arp -a

arp命令有哪些常用用法?-图2
(图片来源网络,侵删)

查看 ARP 缓存(最常用)

这是 arp 命令最核心的功能,用于查看当前系统的 ARP 缓存列表。

语法:

# 查看所有接口的 ARP 缓存
arp -a
# 查看指定接口的 ARP 缓存 (Windows)
arp -a <接口名称>
# 查看指定接口的 ARP 缓存 (Linux/macOS)
arp -i <接口名称>

示例:

在 Windows 上:

arp命令有哪些常用用法?-图3
(图片来源网络,侵删)
C:\> arp -a
# 输出可能如下:
# 接口: 192.168.1.10 --- 0xa
#   Internet 地址         物理地址      类型
#   192.168.1.1           00-1a-2b-3c-4d-5e     动态
#   192.168.1.100         aa-bb-cc-dd-ee-ff     动态
  • 接口: 显示该条目属于哪个网络接口。
  • Internet 地址: 对方的 IP 地址。
  • 物理地址: 对方的 MAC 地址。
  • 类型:
    • 动态: 表示该条目是通过 ARP 协议自动学习并添加的,并且有一定的生存时间(TTL),超时后会自动删除,这是最常见的类型。
    • 静态: 表示该条目是管理员手动添加的,不会被超时删除,除非手动删除,通常用于网关等关键设备,防止 ARP 欺骗。

在 Linux/macOS 上:

$ arp -a
# 输出可能如下:
# ? (192.168.1.1) at 00:1a:2b:3c:4d:5e [ether] on en0
# ? (192.168.1.100) at aa:bb:cc:dd:ee:ff [ether] on en0
  • 表示该地址是已解析的。
  • at 后面跟着 MAC 地址。
  • [ether] 表示以太网地址。
  • on en0 表示该条目所在的网络接口。

添加静态 ARP 条目

手动添加一个 IP 地址和 MAC 地址的绑定关系,这通常用于安全目的,防止 ARP 欺骗攻击。

语法:

# Windows
arp -s <IP地址> <MAC地址>
# Linux/macOS
arp -s <IP地址> <MAC地址> <接口>

示例: 假设你将你的路由器(网关)IP 168.1.1 的 MAC 地址 00-1a-2b-3c-4d-5e 绑定为静态条目。

# Windows
C:\> arp -s 192.168.1.1 00-1a-2b-3c-4d-5e
# Linux
$ sudo arp -s 192.168.1.1 00:1a:2b:3c:4d:5e en0

添加后,再用 arp -a 查看,你会发现对应条目的“类型”变成了“静态”。

删除 ARP 条目

当你怀疑 ARP 表项被污染(例如中了 ARP 欺骗病毒),或者想清除一个错误的静态条目时,可以使用此命令。

语法:

# Windows
arp -d <IP地址>
# Linux/macOS
sudo arp -d <IP地址>

示例: 删除 IP 地址为 168.1.100 的 ARP 缓存条目。

# Windows
C:\> arp -d 192.168.1.100
# Linux (需要 sudo 权限)
$ sudo arp -d 192.168.1.100

注意: 在 Linux/macOS 上,删除操作通常需要管理员权限(sudo)。

其他常用选项

  • -n: 以数字形式显示地址(不尝试反向解析主机名),在 Linux/macOS 上非常有用,可以加快显示速度,避免因 DNS 解析延迟而卡住。
    # 在 Linux 上推荐使用
    $ arp -n
  • -g: 与 -a 功能相同,用于显示 ARP 缓存。-a 是更现代和推荐的方式。
  • -v: 详细模式,显示更多信息,如接口类型等。

实战应用场景

场景1:排查网络问题(无法上网或访问特定主机)

当你无法访问局域网内的某台主机或无法上网时,可以检查 ARP 缓存。

  1. 确认网关 MAC 地址是否正确
    • arp -a 查看你的网关 IP(通常是 168.1.1168.0.1)对应的 MAC 地址。
    • 将这个 MAC 地址与路由器背面的标签上的 MAC 地址进行比对,如果不同,说明你可能遭受了 ARP 欺骗攻击,有人冒充了你的网关。
    • 解决方案:暂时将网关设置为静态条目 arp -s <网关IP> <正确MAC地址>,并联系网络管理员进行安全排查。

场景2:防止 ARP 欺骗攻击

ARP 欺骗是一种常见的局域网攻击方式,攻击者发送伪造的 ARP 响应,欺骗你和网关,使你的网络流量经过攻击者,从而窃取信息(中间人攻击)。

  • 主动防御:对于网络中的关键设备(如网关、文件服务器),可以手动添加静态 ARP 条目,使其不会被动态更新或伪造。
    # 添加网关静态条目
    arp -s 192.168.1.1 00-1a-2b-3c-4d-5e

场景3:查找局域网内其他设备的 MAC 地址

如果你想知道某个 IP 地址的设备对应的物理 MAC 地址(在 Wi-Fi 管理后台看到的设备),可以使用 arp 命令。

  1. ping 一下那个 IP 地址,确保它在线并且你的系统已经解析过它的 MAC 地址。
    ping 192.168.1.101
  2. 然后使用 arp -a 查看缓存。
    arp -a | findstr 192.168.1.101  # Windows
    arp -a | grep 192.168.1.101     # Linux/macOS

不同操作系统的注意事项

功能 Windows Linux / macOS
查看所有 arp -a arp -aarp -n (推荐)
查看指定接口 arp -a <接口名> arp -i <接口名>
添加静态 arp -s <IP> <MAC> sudo arp -s <IP> <MAC> <接口>
删除条目 arp -d <IP> sudo arp -d <IP>
管理员权限 需要以管理员身份运行 CMD/PowerShell 添加、删除操作需要 sudo

命令 作用 示例
arp -a 查看所有 ARP 缓存条目 arp -a
arp -n 查看 ARP 缓存(数字形式,更快) arp -n
arp -s 添加一个静态 ARP 条目 arp -s 192.168.1.1 00-1A-2B-3C-4D-5E
arp -d 删除一个 ARP 条目 arp -d 192.168.1.100

掌握 arp 命令是网络管理和故障排查的基础技能,通过它,你可以直观地看到网络层和数据链路层之间的地址映射关系,并利用它来解决实际问题或增强网络安全。

分享:
扫描分享到社交APP
上一篇
下一篇