背景
IPV4场景
1)系统自己是不会自动检测是否外面有IP地址与自己冲突了;
2) 通过ifcfg-ethX配置文件对网卡IP进行静态配置时,重启network服务会去检测所配置的IP是否有冲突,但这种检测只是在启动network服务时才进行;
3)ifconfig命令配置IP是不会检测IP是否有冲突的,所以这种方法存在冲突的风险。
IPV6场景
ipv6使用dad来检测ip冲突,在使用ip命令配置地址时,系统会自动检测
如下进行设置ipv6:
# /sbin/ip -6 addr add <ipv6address>/<prefixlength> dev <interface>
查看网卡信息
# /sbin/ip -6 addr show dev <interface>
可以看到dad的状态,会经历下面三个阶段:
1 tentative 正在检测中
2 tentative dadfailed 检测完成,ip冲突
3 <空> 检测完成,ip不冲突
因此,对于Ipv4,那么我们就需有办法识别出来:
- 某个地址是否被占用,如果被占用,我就不能用了
- 某个地址是否被多个网卡在占用了,导致网络处问题,收发异常
/sbin/ip -6 addr add / dev
1. arping命令介绍
arping 命令主要用来获取ip对应的mac地址,更新本地arp缓存表。平时主要用来探测ip地址是否冲突即同一个网络里,同一个ip不同mac地址的情况。ip地址冲突将导致网络故障。
2. arping常用命令参数
arping [参数] ip
-U 强制更新邻近主机的arp缓存表
-A 更新邻近主机的arp缓存表
-c 发送几个arp包后停止发送
-w 指定超时时间,单位秒
-f 收到第一个回包后退出
-s 设置发送数据包的源地址
-i 指定从那块网卡发包 如果当前主机有多个地址(多网卡),则指定一块网卡
-q:安静模式。不显示任何过程信息
-d: 检测冲突模式。用来检测有没有IP地址冲突,如果没有IP冲突则返回0。
注意:这个冲突一般是你准备给A网卡设置某个地址a,提前预判一下a是否被占用了,如果占用了就用新的或报错。而不是判断某个地址a 被2个网卡同时占用了,自动识别出来
2.1 arping 主机地址
arping 192.168.31.1
如果有打印,说明 是可以ping通的,如果有不同的mac地址,说明同一个地址被多个网卡占用了
。参见2.4章节
如果想通过shell来判断某个地址是否已存在,怎么实现?使用 -D参数
$ arping -c 2 -w 3 -I eth5 -D 194.20.20.30 //假设194.20.20.30 不存在
ARPING 194.20.20.30 from 0.0.0.0 eth5
Sent 4 probes (4 broadcast(s))
Received 0 response(s)
$ echo $?
0 //0表示不存在
$ arping -c 2 -w 3 -I eth5 -D 194.20.20.4 //假设194.20.20.4 存在
ARPING 194.20.20.4 from 0.0.0.0 eth5
Unicast reply from 194.20.20.4 [FA:16:3E:56:xxx] 4.561ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)
$ echo $?
1 //1表示存在
2.2 arping 设置超时时间
arping -w 1 192.168.31.1
2.3 arping发送指定次数的数据包
arping -c 3 192.168.31.1
2.4 arping冲突地址检测
arping 192.168.31.1
当同一个ip返回是同一个mac地址时,没有冲突;如果同时返回多个mac地址时,表示地址冲突。
如下图所示,有俩个mac地址,说明是冲突的
2.5 arp查看本地mac缓存表
文章来源:https://www.toymoban.com/news/detail-691920.html
参考
arping命令 ip地址冲突检测 mac地址检测缓存文章来源地址https://www.toymoban.com/news/detail-691920.html
到了这里,关于arping命令 ip地址冲突检测 根据ip查mac地址的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!