5.10. 检查 ARP 表格

在某些情况下,查看或更改内核 ARP 表格的内容非常有用,例如,当您怀疑重复的 Internet 地址是导致某些间歇性网络问题的原因时。arp 工具就是为这种情况而设计的。其命令行选项包括
arp [-v] [-t hwtype] -a [hostname]
arp [-v] [-t hwtype] -s hostname hwaddr
arp [-v] -d hostname [hostname…]

全部主机名参数可以是符号主机名或点分十进制表示法的 IP 地址。

第一次调用会显示指定 IP 地址或主机的 ARP 条目,如果没有指定,则显示所有已知主机。主机名给定。例如,在 vlager 上调用 arp 可能会产生
# arp -a
IP address      HW type                 HW address
172.16.1.3      10Mbps Ethernet         00:00:C0:5A:42:C1
172.16.1.2      10Mbps Ethernet         00:00:C0:90:B3:42
172.16.2.4      10Mbps Ethernet         00:00:C0:04:69:AA

这显示了 vlagervstoutvale 的以太网地址。

您可以使用–t选项来限制显示为指定的硬件类型。这可以是 etherax25pronet,分别代表 10 Mbps 以太网;AMPR AX.25 和 IEEE 802.5 令牌环设备。

–s选项用于永久添加主机名的以太网地址到 ARP 表格。该hwaddr参数指定硬件地址,默认情况下,硬件地址应为以太网地址,以六个十六进制字节表示,并用冒号分隔。您也可以使用–t选项来设置其他类型硬件的硬件地址。

由于某些原因,对远程主机的 ARP 查询有时会失败,例如,当其 ARP 驱动程序存在错误,或者网络中存在另一个主机错误地将自己标识为该主机的 IP 地址时;此问题需要您手动将 IP 地址添加到 ARP 表格中。将 IP 地址硬编码到 ARP 表格中也是一种(非常极端的)措施,以保护您自己免受以太网上冒充他人的主机的侵害。

使用–d开关调用 arp 会删除与给定主机相关的所有 ARP 条目。此开关可用于强制接口重新尝试获取所讨论 IP 地址的以太网地址。当配置错误的系统广播了错误的 ARP 信息时,这非常有用(当然,您必须首先重新配置损坏的主机)。

–s选项也可用于实现 代理 ARP。这是一种特殊技术,通过该技术,主机(例如 gate)充当名为 fnord 的另一台主机的网关,方法是假装两个地址都指向同一主机,即 gate。它通过发布 fnord 的 ARP 条目来实现这一点,该条目指向其自身的以太网接口。现在,当主机向 fnord 发送 ARP 查询时,gate 将返回包含其自身以太网地址的回复。然后,查询主机将所有数据报发送到 gate,而 gate 会忠实地将它们转发到 fnord

当您想从 TCP 实现有缺陷且不太了解路由的 DOS 机器访问 fnord 时,这些操作可能是必要的。当您使用代理 ARP 时,对于 DOS 机器来说,fnord 似乎位于本地子网,因此它不必知道如何通过网关进行路由。

代理 ARP 的另一个有用应用是当您的主机之一仅临时充当某些其他主机的网关时,例如,通过拨号连接。在前面的示例中,我们遇到了笔记本电脑 vlite,它不时通过 PLIP 链路连接到 vlager。当然,此应用程序仅在您要为其提供代理 ARP 的主机的地址与您的网关位于同一 IP 子网时才有效。vstout 可以为 Brewery 子网 (172.16.1.0) 上的任何主机代理 ARP,但绝不能为 Winery 子网 (172.16.2.0) 上的主机代理 ARP。

下面给出了为 fnord 提供代理 ARP 的正确调用方法;当然,给定的以太网地址必须是 gate 的以太网地址

# arp -s fnord 00:00:c0:a1:42:e0 pub

可以通过调用以下命令再次删除代理 ARP 条目
# arp -d fnord