arp (操纵或显示内核的IPv4网络邻居缓存)

rose1 发表于 2020-08-27 16:14
浏览次数:
在手机上阅读

在Linux操作系统上,arp命令可操纵或显示内核的IPv4网络邻居缓存。 它可以向表中添加条目,删除一个条目或显示当前内容。 ARP代表地址解析协议,用于为给定的IPv4地址查找网络邻居的地址。

查看英文版

目录

1 arp 运行系统环境

2 安装arp

3 arp 语法

4 arp 例子

arp 运行系统环境

Linux

安装arp

Arp是net-tools软件包的一部分。 例如,在使用APT进行软件包管理的系统上,可以使用apt-get安装它:

sudo apt-get update && sudo apt-get install net-tools

Arp is part of the net-tools package. For example, on systems that use APT for package management, it can be installed with apt-get:

sudo apt-get update && sudo apt-get install net-tools

查看英文版

查看中文版

arp 语法

arp [-vn] [-H type] [-i if] -a [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 ifa [netmask nm] pub
arp [-vnD] [-H type] [-i if] -f [filename]

模式

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

arp -d address删除ARP表条目。必须具有root特权。该条目通过IP地址找到。如果提供了主机名,则在查找ARP表中的条目之前将对其进行解析。

命令:

arp -s address hw_addr 

用于设置新表条目。 hw_addr参数的格式取决于硬件类,但是对于大多数类,可以假定可以使用通常的表示形式。对于以太网类,这是十六进制的6个字节,用冒号分隔。在添加代理arp条目(即那些设置了publish(“ pub”)标志的条目)时,可以为整个子网指定一个网络掩码作为代理arp的做法,但这不是一个好习惯,但较旧的内核支持,因为它很有用。如果没有提供temp标志,则条目将永久存储在ARP缓存中。为简化为您的网络接口之一设置条目的过程,可以使用“ arp -Ds address ifname”格式。在这种情况下,硬件地址取自具有指定名称的接口。

选件

-v--verbose

详细显示信息。

-n--numeric

显示数字地址,而不是尝试确定符号主机,端口或用户名。

-H type, --hw-Type type

设置或读取ARP缓存时,此可选参数告诉arp它应检查哪类条目。此参数的默认值是以太(即IEEE 802.3 10Mbps以太网的硬件代码0x01)。其他值可能包括网络技术,例如ARCnet(arcnet),PROnet(pronet),AX.25(ax25)和NET / ROM(netrom)

-a [hostname], --all [hostname]

显示指定主机的条目。如果不使用hostname参数,将显示所有条目。主机名将使用替代的BSD样式输出格式(无固定列)显示。

-d hostname, --delete hostname

删除指定主机的任何条目。例如,如果指定的主机被关闭,则可以使用此功能。

-D--use-device

给定的参数不是接口hw_addr,而是接口的名称。 arp将使用该接口的MAC地址作为表条目。通常,这是为您自己设置代理ARP条目的最佳选择。

-e

以默认(Linux)样式显示条目。

-i If, --device If

选择一个接口。转储ARP高速缓存时,将仅打印与指定接口匹配的条目。设置永久或临时ARP条目时,此接口将与该条目相关联。如果不使用此选项,内核将根据路由表进行猜测。对于发布条目,指定的接口是将在其上应答ARP请求的接口。

注意:这必须与IP数据报将路由到的接口不同。

注意:从内核2.2.0开始,不再可以为整个子网设置ARP条目。相反,当路由存在且正在转发时,Linux会执行自动代理arp。另外,可用于删除和设置操作的dontpub选项不能与2.4及更高版本的内核一起使用。

-s hostname hw_addr, --set hostname

手动为主机主机名创建ARP地址映射条目,并将其硬件地址设置为hw_addr类,但是对于大多数类,可以假定可以使用通常的表示形式。对于以太网类,这是十六进制的6个字节,用冒号分隔。当添加代理arp条目(即那些设置了发布标志的条目)时,可以为整个子网指定网络掩码来代理arp。这不是一个好习惯,但较旧的内核支持,因为它可能有用。如果未提供temp标志,则条目将永久存储在ARP缓存中。

注意:从内核2.2.0开始,不再可以为整个子网设置ARP条目。相反,当路由存在且正在转发时,Linux会执行自动代理arp。

-f file name, --file file name

-s选项类似,仅这次是从设置的文件名中获取地址信息。数据文件的名称通常是/ etc / ethers,但这不是官方的。如果未指定文件名,则默认使用/ etc / ethers。

该文件的格式很简单;它仅包含带有主机名的ASCII文本行,以及由空格分隔的硬件地址。此外,可以使用pub,tempnetmask标志。

笔记

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

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

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

arp [-vn] [-H type] [-i if] -a [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 ifa [netmask nm] pub
arp [-vnD] [-H type] [-i if] -f [filename]

Modes

arp with no mode specifier will print the current content of the table. It is possible to limit the number of entries printed, by specifying a hardware address type, interface name or host address.

arp -d address deletes an ARP table entry. Root privilege is required to do this. The entry is found by IP address. If a hostname is given, it will be resolved before looking up the entry in the ARP table.

The command:

arp -s address hw_addr 

is used to set up a new table entry. The format of the hw_addr parameter is dependent on the hardware class, but for most classes one can assume that the usual presentation can be used. For the Ethernet class, this is 6 bytes in hexadecimal, separated by colons. When adding proxy arp entries (that is those with the publish ("pub") flag set a netmask may be specified to proxy arp for entire subnets. This is not good practice, but is supported by older kernels because it can be useful. If the temp flag is not supplied entries will be permanent stored into the ARP cache. To simplify setting up entries for one of your network interfaces, you can use the "arp -Ds address ifname" form. In that case the hardware address is taken from the interface with the specified name.

Options

-v--verbose

Display information verbosely.

-n--numeric

shows numerical addresses instead of trying to determine symbolic host, port or user names.

-H type, --hw-Type type

When setting or reading the ARP cache, this optional parameter tells arp which class of entries it should check. The default value of this parameter is ether (i.e. hardware code 0x01 for IEEE 802.3 10Mbps Ethernet). Other values might include network technologies such as ARCnet (arcnet) , PROnet (pronet), AX.25 (ax25) and NET/ROM (netrom).

-a [hostname], --all [hostname]

Displays the entries of the specified hosts. If the hostname parameter is not used, all entries will be displayed. Hostnames will be displayed using alternate BSD-style output format (with no fixed columns).

-d hostname, --delete hostname

Remove any entry for the specified host. This can be used if the indicated host is brought down, for example.

-D--use-device

Instead of a hw_addr, the given argument is the name of an interface. arp will use the MAC address of that interface for the table entry. This is usually the best option to set up a proxy ARP entry to yourself.

-e

Shows entries in default (Linux) style.

-i If, --device If

Select an interface. When dumping the ARP cache, only entries matching the specified interface will be printed. When setting a permanent or temp ARP entry this interface will be associated with the entry; if this option is not used, the kernel will guess based on the routing table. For pub entries, the specified interface is the interface on which ARP requests will be answered.

NOTE: This has to be different from the interface to which the IP datagrams will be routed.

NOTE: As of kernel 2.2.0 it is no longer possible to set an ARP entry for an entire subnet. Linux instead does automagic proxy arp when a route exists and it is forwarding. Also, the dontpub option that is available for delete and set operations cannot be used with 2.4 and newer kernels.

-s hostname hw_addr, --set hostname

Manually create an ARP address mapping entry for host hostname with hardware address set to hw_addr class, but for most classes one can assume that the usual presentation can be used. For the Ethernet class, this is 6 bytes in hexadecimal, separated by colons. When adding proxy arp entries (that is those with the publish flag set) a netmask may be specified to proxy arp for entire subnets. This is not good practice, but is supported by older kernels because it can be useful. If the temp flag is not supplied entries will be permanent stored into the ARP cache.

NOTE: As of kernel 2.2.0 it is no longer possible to set an ARP entry for an entire subnet. Linux instead does automagic proxy arp when a route exists and it is forwarding.

-f file name, --file file name

Similar to the -s option, only this time the address info is taken from file file name set up. The name of the data file is very often /etc/ethers, but this is not official. If no file name is specified /etc/ethers is used as default.

The format of the file is simple; it only contains ASCII text lines with a hostname, and a hardware address separated by whitespace. Additionally, the pubtemp and netmask flags can be used.

Notes

In all places where a hostname is expected, one can also enter an IP address in dotted-decimal notation.

As a special case for compatibility, the order of the hostname and the hardware address can be exchanged.

Each complete entry in the ARP cache will be marked with the C flag. Permanent entries are marked with M and published entries have the P flag.

查看英文版

查看中文版

arp 例子

arp

显示网卡和以太网连接。

arp

Display network card and Ethernet connectivity.

查看英文版

查看中文版

其他命令行

apt-cache | apt-get | ar | arch | as | a2p | aspell | ac | at | awk | a2p | apropos | alias | agrep | addgroup |

如此好文,分享给朋友