前言

IP冲突引起的网络异常,可以通过检查IP是否冲突,排除故障。我们可以用一些工具进行检查,例如arp-scan、arping软件进行查看。

这里使用arping进行检查设备的MAC地址,通过查查看MAC地址是否唯一,从而判断IP是否冲突,

原理:每台设备的MAC地址是唯一的,若arping返回的MAC出现2个甚至多个,说明这个IP对应于多台设备,则存在IP地址冲突的情况。

作者:良知犹存

转载授权以及围观:欢迎关注微信公众号:羽林君

或者添加作者个人微信:become_me


arping介绍:

arping命令来自于英文词组”ARP ping“的缩写,其功能是用于发送ARP请求报文,ARP全称为”Address Resolution Protocol“,中文译为地址解析协议。arping命令是以广播地址发送arp packets,以太网内所有的主机都会收到这个arp packets,但是本机收到之后不会Reply任何信息,来测试网络状态,能够判断某个指定IP地址是否在网络上已被使用,并能够获取更多设备信息,像是加强版的ping命令。

openwrt编译:

make menuconfig进入,“ \ ” 进行搜索arping,查看编译具体的配置 搜索情况如下:

Symbol: BUSYBOX_CONFIG_ARPING [=n]                                                                                                    
Type  : bool                                                                                                                      
Defined at package/utils/busybox/config/networking/Config.in:92                                                                   
  Prompt: arping (9 kb)                                                                                                           
  Depends on: (PACKAGE_busybox [=y] || PACKAGE_busybox-selinux [=n]) && BUSYBOX_CUSTOM [=n]                                       
  Location:                                                                                                                       
 (1) -> Base system                                                                                                                
       -> Networking Utilities                                                                                                     
                                                                                                                                   
                                                                                                                                   
Symbol: BUSYBOX_CONFIG_FEATURE_UDHCPC_ARPING [=n]                                                                                 
Type  : bool                                                                                                                      
Defined at package/utils/busybox/config/networking/udhcp/Config.in:72                                                             
  Prompt: Verify that the offered address is free, using ARP ping                                                                 
  Depends on: (PACKAGE_busybox [=y] || PACKAGE_busybox-selinux [=n]) && BUSYBOX_CUSTOM [=n] && BUSYBOX_CONFIG_UDHCPC [=n]         
  Location:                                                                                                                       
 (2) -> Base system                                                                                                                
       -> Networking Utilities                                                                                        
         -> udhcpc (24 kb) (BUSYBOX_CONFIG_UDHCPC [=n])

Symbol: BUSYBOX_DEFAULT_ARPING [=n]                                                                                
Type  : bool                                                                                                         
Defined at package/utils/busybox/Config-defaults.in:2241                                                             
  Depends on: PACKAGE_busybox [=y] || PACKAGE_busybox-selinux [=n]                                                   
                                                                                                                      
                                                                                                                      
Symbol: BUSYBOX_DEFAULT_FEATURE_UDHCPC_ARPING [=n]                                                                   
Type  : bool                                                                                                         
Defined at package/utils/busybox/Config-defaults.in:2676                                                             
  Depends on: PACKAGE_busybox [=y] || PACKAGE_busybox-selinux [=n]

第一个就是Prompt: arping (9 kb) ,直接开始设置,进入 Base system

设置Customize busybox options为y打开,这个时候就可以后续的Networking Utilities配置

找到Networking Utilities 里面找一下arping 设置y make编译

编译固件进行替换升级 sysupgrade -n op openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-sysupgrade.bin

重启后就可以看到arping这个软件

arping使用:

选项

-f:表示在收到第一个响应报文后就退出;
-q:quiet output不显示任何信息;
-b:用于发送以太网广播帧(FFFFFFFFFFFF)。arping一开始使用广播地址,在收到响应后就使用unicast地址。
-D:检测某个IP是否被使用,后边跟上一个IP地址
-U:主动的ARP模式,更新邻居的arp表
-A:ARP回复模式,更新邻居arp
-c N:发送数据包的数目
-w timeout:设定一个超时时间,单位是秒。如果到了指定时间,arping还没到完全收到响应则退出;
-I IFACE:指定使用的以太网设备,默认使用eth0
-s SRC_IP:指定源IP地址
DST_IP:指定目标IP地址

arping -I br-lan -c 3 192.168.1.151 我们可以查看mac地址看是否有重复ip的设备

同样类似使用wireshark捕获数据也可以看到 执行如下命令:ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa root@192.168.1.1 'tcpdump -s 0 -U -n -w - -i br-lan not port 22' | ./wireshark.exe -k -i - 这个时候也可以看到arping三次的过程 附录: 一个打印MAC地址的脚本:arping -I br-lan -c 3 192.168.1.151 | awk '/reply/ {macaddr_str=$5; mac=substr(macaddr_str,2,length(macaddr_str) - 2);print mac}'

结语

这就是我自己在openwrt使用arping操作的分享。如果大家有更好的想法,也欢迎大家加我好友交流分享哈。


作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。

                              ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

推荐阅读

【1】jetson nano开发使用的基础详细分享

【2】Linux开发coredump文件分析实战分享

【3】CPU中的程序是怎么运行起来的 必读

【4】cartographer环境建立以及建图测试

【5】设计模式之简单工厂模式、工厂模式、抽象工厂模式的对比

本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。

openwrt开发使用-arping的更多相关文章

  1. openwrt开发

    之前写过一篇日志,是关于如何搭建自己的OpenWRT开发环境.经过最近一段时间的开发学习和实践,对OpenWRT环境的开发有了一定的了解.在这里将我的开发心得做个整理. 1.搭建开发环境 首先,我们需 ...

  2. 我的openwrt开发相关文章

    openwrt学习笔记: 在openwrt的学习过程中,走了非常多的弯路.一直以来有个期盼.希望能够出个简易教程,希望openwrt的同仁们能够更加高速的入手. . openwrt学习笔记(三十二): ...

  3. 【转】OpenWRT开发自定义应用方法

    [转]OpenWRT开发自定义应用方法 转自:http://blog.csdn.net/rudyn/article/details/38616783 OpenWRT编译成功完成后,所有的产品都会放在编 ...

  4. 搭建自己的OpenWrt开发环境

    1.  安装环境Linux系统,如果在CentOS上操作,需安装如下依赖包:yum install binutils bzip2 gawk gcc gcc-c++ gettext makencurse ...

  5. 搭建OpenWrt开发环境(包括编译过程)

    OpenWrt是一个高度模块化.高度自动化的嵌入式linux发行版,其编译和安装过程比普通的linux发行版而言,要简单太多了.如果您是新手,您那恐惧的心大可放到肚子里,呵呵.对于新手来说最麻烦的恐怕 ...

  6. openwrt教程 第一章 物联网&openwrt开发概述

    1.1 我们的宗旨 互联网.移动互联网的时代已经过去,物联网的时代已经来临!2014年,是物联网元年,2016年,物联网将达到高潮!为了迎接该潮流,我们工作室(F403科技创意室:http://f40 ...

  7. OpenWRT开发之——对C++的支持(解决库依赖问题)【转】

    转自:https://my.oschina.net/hevakelcj/blog/411944 摘要: 本文尝试用C++来开发一个cpp-demo包 遇到打包库依赖的问题,分析打包过程并解决了这个问题 ...

  8. openwrt开发笔记一:源码下载与编译

    1.1 环境要求 编译系统:Linux发行版(本文使用Ubuntu) 编译一个可以安装的OpenWrt固件镜像文件(大约8MB大小的),你需要: 一个纯净的OpenWrt编译系统大约需要200MB的空 ...

  9. 【OpenWRT】【RT5350】【一】OpenWrt开发环境搭建

    [宿主机构建] 本人电脑配置如下: CPU: intel 酷睿 i3 3.3G 双核 内存: 金士顿 8G 硬盘:希捷 1TB 7200rpm 操作系统:win7  旗舰版 64位 OpenWrt是在 ...

  10. 【玩转开源】BananaPi R2 —— 第三篇 基于Openwrt开发一个简单的路由器

    上一篇讲解了R2的网口配置,这一篇我们以BananaPi R2为例子来实现一个简单的路由器:那么一个简单的路由器应该具备什么样的功能呢?最简单的说就是wan+lan+ap这三个功能. 首先wan+la ...

随机推荐

  1. 第五天 pycharms 安装使用

    python全栈开发笔记第5天笔记pycharms使用 集成开发环境(IDE,Integratde Development Encironment ) VIM #linux下经典的文本编辑器 Emac ...

  2. java map重写 转大写、转驼峰

    /** * @author admin * @Description * 转大写 */ public class HashMapUpper<V> extends HashMap<St ...

  3. Think Python 学习笔记

    #!/usr/bin/env python# coding: utf-8# # Think Python 学习笔记# 1.关于异或计算符# In[2]:6^2# 2.关于函数# 注意:变量名称不能用数 ...

  4. redhat安装mysql8.0

    redhat 安装mysql 8.0 * 看mysql官方文档 * 安装epel源 * 安装mysql源 参考文章 redhat7通过yum安装mysql5.7.17教程:https://www.jb ...

  5. openssl 全面支持国密SM2/SM3/SM4加密算法

    sm4展示 代码 /** 文件名: https://github.com/liuqun/openssl-sm4-demo/blob/cmake/src/main.c */ #include <s ...

  6. Identityserver4 ClientCredentials授权

    转自:https://www.cnblogs.com/hyqq/p/14138024.html:侵删. Client Credentials 客户端应用不代表用户,客户端应用本身就相当于资源所有者 通 ...

  7. Android笔记--监听短信内容

    监听短信内容 就比如说是在我们用一个软件需要使用"获取验证码"的功能时,能够跟短信的验证码互通,实现较为完整的登录功能: 监听短信内容主要是利用了contentObserver实现 ...

  8. 非侵入式入侵 —— Web缓存污染与请求走私

    作者:vivo 互联网安全团队- Gui Mingcheng 本文介绍了两种攻击者无需直接接触服务端即可攻击和影响用户行为的安全漏洞 -- Web缓存污染与请求走私.Web缓存污染旨在通过攻击者向缓存 ...

  9. Nacos的微服务与本地测试的问题

    前提条件: 这里是微服务上的yml的配置: uri: base-svc-authcenter: 192.168.1.121:28002 base-svc-file: 192.168.1.121:280 ...

  10. 如何基于Security框架兼容多套用户密码加密方式

    一.说明 当已上线的系统存在使用其他的加密方式加密的密码数据,并且密码 不可逆 时,而新的数据采用了其他的加密方式,则需要同时兼容多种加密方式的密码校验. 例如下列几种情况: 旧系统用户的密码采用了 ...