Linux arp命令介绍
arp命令是Address Resolution Protocol(地址解析协议)的缩写,它是一种用来将网络层的IP地址转换为链路层的MAC地址的协议。arp命令可以用来显示和修改本地主机的ARP缓存,也就是存储了IP地址和MAC地址之间的映射关系的表。arp命令可以帮助我们查看和管理本地网络中的设备,以及检测网络中是否存在IP地址冲突或者ARP欺骗等安全问题。
Linux arp命令适用的Linux版本
arp命令是一个标准的Linux命令,它适用于大多数的Linux发行版,如Ubuntu、Debian、CentOS、Fedora等。不过,一些较新的Linux发行版,如CentOS 8,已经不再使用arp命令,而是使用ip neigh命令来代替。ip neigh命令是iproute2套件的一部分,它提供了更多的功能和选项,可以用来显示和修改邻居缓存,也就是存储了IP地址和MAC地址之间的映射关系的表。如果你使用的是CentOS 8或者其他不支持arp命令的Linux发行版,你可以使用以下命令来安装iproute2套件:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install iproute2
如果你使用的是CentOS 7或者其他支持arp命令的Linux发行版,你可以使用以下命令来安装arp命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum install net-tools
Linux arp命令的基本语法
arp命令的基本语法格式如下:
arp [选项] [参数]
Linux arp命令的常用选项或参数说明
arp命令的常用选项或参数如下表所示:
选项或参数 | 说明 |
---|---|
-a | 显示所有的ARP缓存 |
-d | 删除指定的ARP缓存 |
-s | 添加一个静态的ARP缓存 |
-n | 不显示主机名,只显示IP地址 |
-v | 显示详细的信息 |
-i | 指定使用的网络接口 |
-D | 使用硬件地址作为主机名 |
-f | 从指定的文件中读取ARP缓存 |
Linux arp命令的实例
下面是一些使用arp命令的实例:
实例1:显示所有的ARP缓存
命令:
[linux@bashcommandnotfound.cn ~]$ arp -a
输出:
? (192.168.1.1) at 00:11:22:33:44:55 [ether] on eth0
? (192.168.1.2) at 00:11:22:33:44:56 [ether] on eth0
? (192.168.1.3) at 00:11:22:33:44:57 [ether] on eth0
注释:这个命令会显示本地主机的ARP缓存,也就是本地主机已经知道的IP地址和MAC地址之间的映射关系。每一行表示一个ARP缓存条目,包括以下信息:
- ? 表示主机名,如果没有解析出主机名,就用?代替
- (192.168.1.1) 表示IP地址
- at 00:11:22:33:44:55 表示MAC地址
- [ether] 表示链路层的类型,通常是以太网
- on eth0 表示网络接口的名称
实例2:显示指定的ARP缓存
命令:
[linux@bashcommandnotfound.cn ~]$ arp 192.168.1.2
输出:
Address HWtype HWaddress Flags Mask Iface
192.168.1.2 ether 00:11:22:33:44:56 C eth0
注释:这个命令会显示指定的IP地址的ARP缓存,也就是本地主机已经知道的该IP地址和MAC地址之间的映射关系。每一列表示一个ARP缓存条目的信息,包括以下信息:
- Address 表示IP地址
- HWtype 表示链路层的类型,通常是以太网
- HWaddress 表示MAC地址
- Flags 表示ARP缓存的状态,C表示完全的,M表示永久的,P表示发布的
- Mask 表示子网掩码
- Iface 表示网络接口的名称
实例3:删除指定的ARP缓存
命令:
[linux@bashcommandnotfound.cn ~]$ sudo arp -d 192.168.1.2
输出:
arp: 192.168.1.2 deleted.
注释:这个命令会删除指定的IP地址的ARP缓存,也就是清除本地主机已经知道的该IP地址和MAC地址之间的映射关系。这个命令需要root权限,否则会提示Permission denied。
实例4:添加一个静态的ARP缓存
命令:
[linux@bashcommandnotfound.cn ~]$ sudo arp -s 192.168.1.4 00:11:22:33:44:58
输出:
无
注释:这个命令会添加一个静态的ARP缓存,也就是手动指定一个IP地址和MAC地址之间的映射关系,并且不会被自动更新或删除。这个命令需要root权限,否则会提示Permission denied。这个命令可以用来解决一些网络中的IP地址冲突或者ARP欺骗等安全问题。
实例5:从指定的文件中读取ARP缓存
命令:
[linux@bashcommandnotfound.cn ~]$ sudo arp -f arp.txt
输出:
无
注释:这个命令会从指定的文件中读取ARP缓存,也就是批量添加或修改本地主机的ARP缓存。这个命令需要root权限,否则会提示Permission denied。指定的文件的格式应该是每一行一个ARP缓存条目,如下所示:
192.168.1.5 ether 00:11:22:33:44:59
192.168.1.6 ether 00:11:22:33:44:60
192.168.1.7 ether 00:11:22:33:44:61
Linux arp命令的注意事项
使用arp命令时,需要注意以下几点:
- arp命令只能显示和修改本地主机的ARP缓存,不能显示和修改远程主机的ARP缓存。如果想要查看或修改远程主机的ARP缓存,需要使用其他的工具,如arping、arpspoof等。
- arp命令只能显示和修改IPv4地址的ARP缓存,不能显示和修改IPv6地址的ARP缓存。如果想要查看或修改IPv6地址的ARP缓存,需要使用其他的命令,如ip neigh、ndisc6等。
- arp命令只能显示和修改以太网类型的ARP缓存,不能显示和修改其他类型的ARP缓存,如无线网、PPP等。如果想要查看或修改其他类型的ARP缓存,需要使用其他的命令,如iw、pppoe等。
- arp命令可能会被一些防火墙或者安全软件拦截,导致无法正常显示或修改ARP缓存。如果遇到这种情况,需要检查和调整防火墙或者安全软件的设置,或者暂时关闭它们。
- 如果在使用arp命令时,出现了bash: arp: command not found的错误提示,说明你的系统没有安装arp命令,或者arp命令的路径没有添加到环境变量中。你可以使用命令来安装arp命令,或者使用绝对路径来执行arp命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum install net-tools # 安装arp命令
[linux@bashcommandnotfound.cn ~]$ /usr/sbin/arp -a # 使用绝对路径执行arp命令
评论区