「arp(8)」-

  LINUX MANUAL PAGES

操纵系统ARP缓存

命令语法格式

arp [-vn] [-H type] [-i if] [-ae] [hostname]

arp [-v] [-i if] -d hostname [pub]

arp [-v] [-H type] [-i if] -s hostname hw_addr [temp]

arp [-v] [-H type] [-i if] -s hostname hw_addr [netmask nm] pub

arp [-v] [-H type] [-i if] -Ds hostname ifname [netmask nm] pub

arp [-vnD] [-H type] [-i if] -f [filename]

命令描述

该命令进行ARP操纵或显示内核的IPv4网络邻居缓存。它可以向表中添加条目、删除条目、显示当前内容。

“ARP”代表地址解析协议(Address Resolution Protocol),用于查找给定IPv4地址的网络邻居的MAC地址。

命令行模式

arp,打印模式。没有模式说明符的arp命令将打印ARP表的当前内容。通过指定硬件地址类型、接口名称、主机地址,可以限制打印的条目数。

arp -d address,删除模式。通过IP地址address找到条目,然后删除在ARP表中的该条目。如果address为主机名,则在查找ARP表中的条目之前会先将主机名解析为IP地址。执行此操作需要root或netadmin权限。

arp -s address hw_addr,更新模式。用于设置新的ARP表条目。参数hw_addr的格式取决于硬件类别,但对于大多数类别,可以假设可以使用通用的表示。对于以太网类别,这是以16进制表示的6个字节,以冒号分隔。添加代理ARP条目(即设置了publish标志的条目)时,可以指定网络掩码来代理整个子网的ARP。这不是一个好的做法,但是旧内核支持它,因为它很有用。如果未提供temp标志,则条目将永久存储在ARP缓存中。要简单为你自己的网络接口设置条目,可以使用arp -Ds address ifname的形式。在这种情况下,硬件地址取自具有指定名称的接口。

命令行选项

-H type, –hw-type type, -t type
设置或读取ARP缓存时,此可选参数告诉arp命令应检查哪个条目类别。

此参数的默认值为“ether”,即IEEE 802.3 10Mbps以太网的硬件代码为“0x01”。其他值可能包括具体的网络技术,如ARCnet (arcnet) , PROnet (pronet) , AX.25 (ax25) , NET/ROM (netrom)。

-D, –use-device
给定的参数不是hw_addr,而是网络接口的名称。命令arp将使用该网络接口的MAC地址作为ARP表的条目。这通常是为自己设置代理ARP条目的最佳选项。

-i If, –device If
选择一个接口。当打印ARP缓存时,仅打印与指定接口匹配的条目。当设置永久或临时的ARP条目时,此接口将与该条目相关联;如果未使用此选项,内核将根据路由表进行接口的猜测。对于pub的条目,指定的接口是将在其上回答ARP请求的接口。

注意:这必须与IP数据报将路由到的接口不同。注意:从内核2.2.0开始,不再可能为整个子网设置ARP条目。当路由存在且转发时,Linux会执行自动代理ARP。有关详细信息,请参阅arp(7)手册。 另外,可用于删除和设置操作的dontpub选项不能与2.4+的内核一起使用。

-f filename, –file filename
与-s选项类似,此时仅从文件filename中获取地址信息。如果必须设置许多主机的ARP条目,则可以使用此选项。数据文件的名称经常是/etc/ethers,但这不是官方的。如果没有指定文件名,则/ etc / ethers用作默认值。

文件的格式很简单,它只包含ASCII文本行:用空格分隔主机名的和硬件地址。另外,可以使用pub,temp和netmask标志。

输出相关

-a
使用BSD风格的输出。没有固定的列数。

-e
使用Linux风格的输出。有固定的列宽。

-v, –verbose
通过详细的输出告诉用户发生了什么。

-n, –numeric
显示数字地址,而不是尝试确定符号类型的主机、端口、用户名。

附加说明

在所有需要主机名的地方,也可以用点分十进制表示法的IP地址。

作为兼容性的特殊情况,可以交换主机名和硬件地址的顺序。

ARP缓存中的每个完整条目都将标有C标志;永久条目标记为M;已发布条目具有P标记。

相关文件

/proc/net/arp

/etc/networks

/etc/hosts

/etc/ethers

使用示例

下面的命令将使用eth1的MAC地址回答eth0上的10.0.0.2的ARP请求:

# arp -i eth0 -Ds 10.0.0.2 eth1 pub

下面的命令删除接口eth1上的10.0.0.1的ARP表中的项:

# arp -i eth1 -d 10.0.0.1

这将匹配已发布的代理ARP条目和永久条目。

相关手册

rarp(8), route(8), ifconfig(8), netstat(8)

参考文献

  • man 8 arp, Version net-tools

更新日志

  • 07/28/2018 创建文章