一、ARP介绍
ARP(Address Resolution Protocol,地址解析协议)是一个在网络设备之间转换IP地址和MAC地址的网络层协议。在Linux系统中,
arp
命令主要用于查看和修改本地系统上的ARP缓存。ARP缓存存储了最近获取的IP地址到MAC地址的映射关系,有助于加快数据包的传输速度,因为它减少了需要进行ARP请求的次数。
二、ARP命令帮助
2.1 ARP的help帮助信息
使用
--help
选项,可以查看到arp命令的帮助信息。
[root@jeven ~]# arp --help
Usage:
arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] <-Display ARP cache
arp [-v] [-i <if>] -d <host> [pub] <-Delete ARP entry
arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from file
arp [-v] [<HW>] [-i <if>] -s <host> <hwaddr> [temp] <-Add entry
arp [-v] [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub <-''-
-a display (all) hosts in alternative (BSD) style
-e display (all) hosts in default (Linux) style
-s, --set set a new ARP entry
-d, --delete delete a specified entry
-v, --verbose be verbose
-n, --numeric don't resolve names
-i, --device specify network interface (e.g. eth0)
-D, --use-device read <hwaddr> from given device
-A, -p, --protocol specify protocol family
-f, --file read new entries from file or from /etc/ethers
<HW>=Use '-H <hw>' to specify hardware address type. Default: ether
List of possible hardware types (which support ARP):
ash (Ash) ether (Ethernet) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) rose (AMPR ROSE) arcnet (ARCnet)
dlci (Frame Relay DLCI) fddi (Fiber Distributed Data Interface) hippi (HIPPI)
irda (IrLAP) x25 (generic X.25) infiniband (InfiniBand)
eui64 (Generic EUI-64)
2.2 ARP命令的帮助解释
命令选项 | 描述 |
---|---|
arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] |
显示ARP缓存 - -a : 显示所有主机(BSD风格)- -e : 显示所有主机(Linux默认风格)- -v : 详细模式- -n : 不解析名称- <HW> : 指定硬件地址类型,默认为ether- -i <if> : 指定网络接口 |
arp [-v] [-i <if>] -d <host> [pub] |
删除ARP条目 - -d : 删除指定条目- pub : 公有条目- -v : 详细模式- -i <if> : 指定网络接口 |
arp [-vnD] [<HW>] [-i <if>] -f [<filename>] |
从文件添加条目 - -f : 从文件读取新条目,或从/etc/ethers |
arp [-v] [<HW>] [-i <if>] -s <host> <hwaddr> [temp] |
添加条目 - -s : 设置新ARP条目- temp : 临时条目- <hwaddr> : 硬件地址- -v : 详细模式- -i <if> : 指定网络接口 |
arp [-v] [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub |
特殊设置条目 - -Ds : 特定操作- pub : 公有条目- netmask <nm> : 子网掩码- -v : 详细模式- <if> : 指定接口 |
其他选项 | |
-A, -p, --protocol |
指定协议家族 |
-D, --use-device |
从给定设备读取<hwaddr> |
硬件类型支持ARP列表:
- ash (Ash)
- ether (Ethernet)
- ax25 (AMPR AX.25)
- netrom (AMPR NET/ROM)
- rose (AMPR ROSE)
- arcnet (ARCnet)
- dlci (Frame Relay DLCI)
- fddi (Fiber Distributed Data Interface)
- hippi (HIPPI)
- irda (IrLAP)
- x25 (generic X.25)
- infiniband (InfiniBand)
- eui64 (Generic EUI-64)
三、ARP命令的基本使用
3.1 查看ARP缓存
使用以下命令,显示所有ARP缓存条目。
arp -a
3.2 显示详细信息
显示ARP缓存中的所有条目,包括IP地址、MAC地址以及对应的接口名称等信息。
arp -v
3.3 添加静态arp映射
使用
arp -s IP_ADDRESS MAC_ADDRESS
命令。添加静态ARP映射。有时候为了网络管理的需要,你可能想手动添加一个静态的ARP条目,这样系统就不会尝试去动态解析这个IP地址对应的MAC地址了。
arp -s 192.168.3.251 00:0c:29:54:85:18
3.4 删除指定主机的ARP条目
删除指定主机的ARP条目
arp -d <hostname>
arp -d 192.168.3.166
3.5 从文件读取并添加条目
arp -f filename
是一个命令行指令,用于从一个文件中读取并加载ARP(Address Resolution Protocol)表项。ARP表项是一个用于将IP地址映射到物理硬件地址(MAC地址)的网络协议。在执行这个命令时,filename参数是包含了ARP表项的文件的路径。
`arp -f filename`
- filename示例文件
```bash
192.168.1.1 00:11:22:33:44:55
192.168.1.2 66:77:88:99:AA:BB
## 3.6 清除ARP缓存
>使用`sudo arp -d <IP地址>`命令,清除某条APR缓存信息。
```bash
arp -a -d 172.17.0.3
四、注意事项
- 在执行上述命令时,特别是添加或删除ARP条目时,通常需要管理员权限(即使用
sudo
)。 - 手动添加静态ARP条目应谨慎操作,错误的配置可能会导致网络连接问题。
- 不同的Linux发行版可能有细微的命令差异,但基本用法大体相同。
五、总结
使用arp命令可以快速查看本地系统上的ARP缓存,以便了解IP地址和MAC地址之间的映射关系,从而方便网络故障排除和优化网络连接。通过修改arp缓存,可以手动添加、删除或修改IP地址和MAC地址的映射关系,从而实现对本地网络设备的管理和控制。