• openwrt开发使用-arping


    前言

    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】设计模式之简单工厂模式、工厂模式、抽象工厂模式的对比

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

  • 相关阅读:
    【idea插件开发】从0入门idea插件开发,idea插件开发教程,如何开发idea插件
    Aspectj与SpringAOP比较记录
    C++ day2
    leetcode 51. N皇后 回溯法求解(c++版本)
    三防加固平板在房地产行业的应用|亿道三防onerugged
    测试工程师转开发希望大吗?
    用户代理字符串检测技术【1】
    find_element_by_id()方法的使用上。这个方法已经被弃用,建议使用find_element()方法替代。
    delaunay和voronoi图 人脸三角剖分
    vue3使用v-model控制子组件进行双向数据绑定
  • 原文地址:https://www.cnblogs.com/conscience-remain/p/17323836.html